Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Rasmussen от 29-09-2020, 13:46:13
-
Добрый день)
Есть dwg файл, в котором есть определение дин блока (defenition), но сам блок в чертеж не должен быть вставлен.
Есть задача: получить свойства из определения дин блока, а точнее по имени блока прочитать список его "представлений". Все примеры которые я находил позволяют получить данные из уже вставленного блока, а вот по получению свойств определения блока информации пока не нашлось. Будут благодарен за подсказку на тему какие структуры/таблицы БД чертежа смотреть)
-
Rasmussen,
В публичном API такой возможности нет. Так что или вставлять, анализировать и потом удалять (если не нужен) или заниматься исследовательской работой с недокументированными классами/свойствами/методами.
Если сможете четче сформулировать задачу и объясните зачем это нужно, то возможно решение найдётся.
-
Впрочем возможно тебе достаточно вот этого: https://adn-cis.org/poluchenie-spiska-vidimyix-primitivov-v-dinamicheskom-bloke.html
В статье используются недокументированные вещи, так что использовать можно на свой страх и риск. Плюс так как используется P/Invoke, то нужно будет еще и пересмотреть определение ряда используемых функций.
-
Большое спасибо, Александр! Ссылку изучу и по результатам отпишусь.
Данный чертеж используется для импорта блока в другой чертеж. Если исходный чертеж будет содержать вставленный блок, то при импорте будет получаться блок в блоке, что не очень удобно так как не будет возможности перемещать текст блока и нужно будет дополнительный _explode после вставки. Возможно последнее и стоит сделать:)
-
по имени блока прочитать список его "представлений"
Возможно ты имел ввиду не "представлений", а список "состояний видимости" или что-то подобное?
-
по имени блока прочитать список его "представлений"
Возможно ты имел ввиду не "представлений", а список "состояний видимости" или что-то подобное?
Я тоже думаю, что Rasmussen имел в виду именно это.
-
Верно, я имел ввиду состояния видимости.
-
Если исходный чертеж будет содержать вставленный блок, то при импорте будет получаться блок в блоке
Нет не будет. Если нормально скопировать BTR из одного dwg в другой (через WblockCloneObjects), то ничего, кроме этого BTR не появится. Если нужно не копирование, а вставка внешней ссылки, то нужен BlockReference. И взорвать ненужный блок тоже ничто не мешает. Так что проблема надуманная. нет никакого смысла лезть в недокументированные API.