|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как выполнить Explode для 3DSolid?
Регистрация: 26.05.2009
Сообщений: 3
|
||
Просмотров: 5817
|
|
||||
Регистрация: 24.12.2008
Сообщений: 11
|
Добрый день, Сергей!
Метод explode() определен для всех потомков AcDbEntity, т.е. и для AcDb3dSolid тоже. Я попробовал в AutoCAD 2009 и ObjectARX 2009, у меня из цилиндра получилось 3 entities.
__________________
Успехов! Марат Миргалеев, Технический консультант Autodesk Developer Network (ADN) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Sergey Pavlenko, надо было с самого начала сказать, в какой среде выполняется программирование. Если работать с примитивами через VBA или lisp, то метода Explode для 3-мерных твердых тел действительно нет. Но Марат Миргалеев, похоже, работает в ARX - а там возможности на несколько порядков шире.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Автокад покзывает не все методы и свойства. Надо пробывать метод, даже если Думп его не показывает.
Меня интересует, а как создать набор из элементов, которые получились в результате расчлененки? Мне на ум приходит только один способ - собрать все элементы нужного типа в набор. Расчленить 3Dсолид и те элементы, которые в наборе отсутствуют и есть кусочки 3Dсолида. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Supermax, 2008 и 2010-й AutoCAD'ы через vlax-dump-Object могут показать заявленные, но не работающие свойства и методы (ну, например, попробуй получить DataLink для таблицы...)
И насчет Explode вне средств .NET / arx : Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Кулик Алексей aka kpblc,
Цитата:
Помнишь как я бился с WScript.Shell? http://forum.dwg.ru/showpost.php?p=200211&postcount=1 И такое не только там есть. Вот ты проверил и правильно сделал. Всегда надо проверять, а то Автокад ведь живые люди писали. |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Вот было бы здорово, если бы кто-нибудь бы написал бы на ObjectARX ... БЫ.
![]() Такую штуку, которая принимает в качестве аргумента функции указатель на расчленяемый объект, а возвращает список с указателями на объекты распада. Да что-то не верится в человеческие возможности. |
||||
![]() |
|
||||
Цитата:
|
||||
![]() |
|
||||
Да ... гм. Жаль. Но функцию для автолиспа точно нужно сделать. Чтобы ты ей указатель на расчленяемый объект, а она тебе указатели на элементы распада.
Чтобы наверняка, можно слой временный создавать и туда переносить расчленяемый объект, а потом все от туда обратно в слой, от куда был приговоренный. Если объектов много и они в разных слоях, то список списков нужен. Ценнейшая весч для библиотеки функций была-б. Забыл. Так можно расчленять без удаления оригинала! |
||||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Ну раз всем лень писать такую функцию, то вот нашёл свою старенькую (уже выкладывал как-то). На входе даёшь vla-object, он может быть как в модели, так и вложенный в блок, а на выходе имеем список vla-object -ов, полученных через стандартный "_.explode", входящий объект удаляется.
Код:
|
|||
![]() |
|
||||
Функция Евгений А. расчленяет ве подряд, но не имеет признака сохранения оригинала.
Функция Дима_ расчленяет только 3Dсолиды, но имеет признак сохранения. Я только сейчас узнал, что если расчленить 3D солид и сохранить его оригинал, то наложение регионов на солид высвечивает ручки с крестиками над ними. Очень полезная инфа, однако. Всегда знаешь один там элемент или несколько. Никогда такое не видел, хоть в Автокаде не первый год. Расчленять надо все и с наличием возможности сохранения оригинала. И надо множественный выбор сделать, чтобы не по одному объекту, а к набору эту функцию применять. Результат должен быть список списков. |
||||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Supermax, зачем плодить простые вещи.
Хочешь список списков - делай так: Код:
Код:
Дима_, - не люблю писать ограниченные функции... :-) , кстати тот функционал что у тебя - у меня вроде даже короче и проще, остальное для вложенных в блоки объектов. |
|||
![]() |
|
||||
О! Теперь зер гуд. Только надо оформить и в библиотеку функций положить.
Одно из применений этой функции - подсчет площади поверхностей 3D солидов. Расчленяем с сохранением, собираем площадь регионов и удаляем их. |
||||
![]() |
|
||||
Зачем так сложно? К тому же AutoCAD очень не любит массового создания/удаления примитивов - это приводит к утечкам памяти. Рекомендую пользоваться теми инструментами, которые это могут сделать с минимальными потерями и максимальной скоростью (arx, .net)
|
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Не получится - там еще и surface могут быть - а они без площади (по крайней ни vla свойства, ни даже коммандыми методами ее не получить) - поробуй с шариком.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рифмоплетство. | Kryaker | Разное | 554 | 14.11.2023 11:59 |
Бетоны для гидротехнических сооружений | Egor_II | Железобетонные конструкции | 9 | 03.02.2016 11:06 |
бетонирование в зимних условиях | тен | Технология и организация строительства | 107 | 21.12.2013 13:59 |
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов | Red Nova | Программирование | 177 | 08.12.2008 11:35 |
Альтернативная служба в армии | Vova | Разное | 117 | 12.06.2007 00:30 |