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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Пакетное снятие запрета на расчленение блока

Пакетное снятие запрета на расчленение блока

Ответ
Поиск в этой теме
Непрочитано 18.11.2015, 12:12 #1
Пакетное снятие запрета на расчленение блока
rvv
 
Регистрация: 01.09.2011
Сообщений: 34

Может быть кому-то пригодится решение проблемы, возникшей у меня вчера.
В пришедших от заказчика чертежах все вхождения блоков имели выключённым аттрибут Allow Exploding, что по ряду причин нас не устраивало и проблема требовала решения. Сам я не программист, поэтому пришлось обратиться ко всемирному разуму.
На просторах сети было найдено обсуждение, которое решило мой вопрос наилучшим образом. Привожу код за авторством тамошнего юзера whdjr. Код опубликован открыто, посему не вижу препятствий к его дальнейшему распространению.

Установка Allow Exploding для всех блоков чертежа:
Код:
[Выделить все]
 (defun c:eb ()
  (vlax-map-collection
	(vla-get-blocks
	  (vla-get-activedocument (vlax-get-acad-object))
	)
	'(lambda (x)
	   (and
	 (vlax-property-available-p x 'explodable)
	 (eq (vlax-get-property x 'explodable) :vlax-false)
	 (not (vlax-put-property x 'explodable :vlax-true))
	   )
	 )
  )
)
То же только для выбранных объектов.
Код:
[Выделить все]
 (defun c:ebi (/ blk)
   ;;;---------------------------------------------------------------------;;;
   ;;;A rewrite of the entsel function.					  ;;;
   ;;;---------------------------------------------------------------------;;;
     (defun ent_sel (msg / ent)
   	(while (not ent)
   	  (cond ((setq ent (entsel msg)))
   		((= (getvar "ErrNo") 7)
   		 (princ "\nSelection missed.  Please try again.")
   		)
   		((= (getvar "ErrNo") 52) (exit))
   	  )
   	)
   	ent
     )
   ;;;
   ;;;
   ;;;
     (while (not blk)
   	(setq blk (car (ent_sel "\nSelect Block:  ")))
     )
     (mapcar '(lambda (x)
   		 (and
   		   (vlax-property-available-p x 'explodable)
   		   (eq (vlax-get-property x 'explodable) :vlax-false)
   		   (not (vlax-put-property x 'explodable :vlax-true))
   		   (princ "\nThe selected Block is now Explodable!  ")
   		 )
   	   )
   	  (list
   		(vla-item (vla-get-blocks
   			(vla-get-activedocument (vlax-get-acad-object))
   			  )
   			  (cdr (assoc 2 (entget blk)))
   		)
   	  )
     )
     (princ)
   )
Просмотров: 2803
 
Непрочитано 19.11.2015, 12:26
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Добавлю так же, что в теме LISP. Подготовка подосновы есть команда
Цитата:
BGBLFIX - Нормализация блоков (цвет, слой, взрываемость и т.п.)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 19.11.2015, 14:13
#3
rvv


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Добавлю так же, что в теме LISP. Подготовка подосновы есть команда


Я ни в коем случае не принижаю достоинств вашего замечательного пакета, пользуюсь им регулярно для лечения глупости и жадности отдельных смежников, но вот описанное мной решение мне в воскресенье в результате попалось первым... Тем более, что одной командой оно снимает невзрываемость со всего.
rvv вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Пакетное снятие запрета на расчленение блока

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический блок внутри другого блока Engineer_Sergii Динамические блоки 5 12.07.2018 09:42
Проблема с базовой точкой блока и вхождением блока в DXF nogaems Программирование 5 29.08.2013 15:46
Расчленение динамического блока и сохранение внешних свойств. asii Динамические блоки 7 23.01.2012 13:33
Странное поведение динамического блока высотной отметки hwd Динамические блоки 12 08.09.2011 11:15
Как перенести в чертеж блок из файла библиотеки блоков Main Urod Программирование 8 03.02.2010 14:15