| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как выполнить подсчет вложенных примитивов в динамический блок с учетом видимости

Как выполнить подсчет вложенных примитивов в динамический блок с учетом видимости

Ответ
Поиск в этой теме
Непрочитано 15.09.2019, 17:19 #1
Как выполнить подсчет вложенных примитивов в динамический блок с учетом видимости
BuldozerDjo
 
Регистрация: 15.09.2019
Сообщений: 2

Добрый день, решаю задачу подсчета блоков с атрибутами вложенных в динамический блок с параметром "Видимость", в частности есть блок "Светильник", изменяя параметр "Видимость" можно выбрать круглый или квадратный светильник, при этом от параметра "Видимость" зависит начинка светильника, условно для круглого берем зеленую распределительную коробку, для квадратного красную распределительную коробку.

фрагмент кода:
(vl-load-com)
(setq Block (car (entsel)))
(setq vla_Block (vlax-ename->vla-object Block))
(setq vla_Blocks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
(setq block_def (vla-item vla_Blocks (vla-get-effectivename vla_Block)))
(setq block_cont ((lambda (/ res) (vlax-for sub block_def (setq res (cons sub res))) (reverse res))))
(vl-remove-if-not (function (lambda (x)
(setq Vidimost (vla-get-visible x)); тут я получаю видимость примитива
))
block_cont)

Суть проблемы заключается в том, что в переменной Vidimost сохранено значение видимости приметива для вхождения блока если так можно сказать "по умолчанию", то есть то состояние видимости которое открывается в редакторе блока, изменение состояния видимости блока в модели, не влияет на значение переменной Vidimost. Таким образом я могу выполнить подсчет только для одного состояния видимости. Как получить доступ к значениям visible приметивов для состояния видимости выбранного в модели.
Просмотров: 1102
 
Непрочитано 15.09.2019, 18:47
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833


Указатель на описание получай не через vla-get-EffeciveName, а через vla-get-Name.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.09.2019, 19:15
#3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


так как нужное значение видимости в промежуточном анонимном определении блока "сидит", а не в базовом описании динблока
Сергей812 вне форума  
 
Автор темы   Непрочитано 15.09.2019, 19:18
#4
BuldozerDjo


 
Регистрация: 15.09.2019
Сообщений: 2


Огромное спасибо, действительно заработало ))

----- добавлено через ~3 мин. -----
Безуспешно потратил кучу времени, а решение было весьма простое )
BuldozerDjo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как выполнить подсчет вложенных примитивов в динамический блок с учетом видимости

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить в динамический блок уже нарисованные элементы чертежа (или аналог команды _refedit)? sasha_lif Динамические блоки 6 17.01.2019 13:38
Динамический блок внутри другого блока Engineer_Sergii Динамические блоки 5 12.07.2018 09:42
Как по примитиву получить указатель на динамический блок, в котором этот примитив находится? молодой человек Программирование 3 08.02.2011 21:47
Динамический блок становится неактивный после повторного открытия файла Shraybicus Динамические блоки 10 07.12.2010 23:05
Динамический блок и коммандная строка Сергей Дубина Динамические блоки 30 24.04.2009 09:16