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

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

Вставить блок и выполнить с ним процедуру

Ответ
Поиск в этой теме
Непрочитано 23.07.2024, 14:23 #1
Вставить блок и выполнить с ним процедуру
olga87
 
Регистрация: 28.05.2007
Сообщений: 229

Здравствуйте Уважаемые специалисты AutoCAD!

Есть код (ниже), который выполняет вставку блока из файла dwg. Но мне необходимо сразу после его вставки (как только пользователь указал точку вставки блока) выполнить определенную процедуру - изменить цвет элементов внутри вставленного блока.

Проблема в том, что эта процедура замены цвета ((vlax-for blk (vla-get-activeselectionset c_doc)) работает, если выбрать блок.
Подскажите пожалуйста, как изменить код, чтобы после вставки блока он сразу обрабатывался процедурой замены цвета?


Код:
[Выделить все]
(setq bname ....".dwg"))


(if (findfile bname)
  (progn

(command "ВСТАВБЛОК" bname "_r" 0 "_s" 1 pause)

(setq c_doc (vla-get-activedocument (vlax-get-acad-object))
			 c_blks (vla-get-blocks c_doc)
)

(cond ( (/= (getvar 'cmdecho) 0) (setq cme (getvar 'cmdecho)) (setvar 'cmdecho 0)))

(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(vla-startundomark c_doc)

; (setq ss (ssget ":L" '((0 . "INSERT"))))

(setq b_name (entlast))
???



(vlax-for blk (vla-get-activeselectionset c_doc)
  (setq b_name (vlax-get-property blk (if (vlax-property-available-p blk 'effectivename) 'effectivename 'name)))

  (cond ( (not (vl-position b_name b_lst))
            (vlax-for obj (vla-item c_blks b_name)

  (cond
    (
    (and (/= (vlax-get-property obj 'color) 1) (/= (vlax-get-property obj 'color) 5))
	    (vlax-put-property obj 'color acbyblock)
    )
  )
            )
            (setq b_lst (cons b_name b_lst))
        )
  )
  (vla-update blk)
)

(vla-regen c_doc acAllViewports)
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(if cme (setvar 'cmdecho cme))
(princ)

  ) ;progn

  (princ "\n ошибка "))

(princ)
Заранее спасибо!
Просмотров: 872
 
Непрочитано 23.07.2024, 14:36
#2
Кулик Алексей aka kpblc
Moderator

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


olga87, ты упорно путаешь вхождение блока и его описание. И не менее упорно отказываешься посмотреть чужие коды
https://forum.dwg.ru/showthread.php?t=21492 , вся тема.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.07.2024, 14:40
#3
olga87


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


Дело в том, что у меня общий код - вставить блок и сразу изменить его.

Если отдельно выбрать блок - то можно изменить, но мне нужна последовательность: вставить, изменить. Как это сделать? (без запроса - выберите блок)
*пользователь нажимает кнопку - вставка блока - после вставки без запросов к пользователю элементы вставленного блока меняются.

Последний раз редактировалось olga87, 23.07.2024 в 14:50.
olga87 вне форума  
 
Непрочитано 23.07.2024, 16:44
#4
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


А (entlast) чем не устраивает-то?

Принимать по одной таблетке
сразу же после вставки блока.

Это и будет
Цитата:
(без запроса - выберите блок)
__________________
Счастливо, Алексей!
===AAA=== вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Вставить блок и выполнить с ним процедуру



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить атрибут в динамический блок alexmntmnk Динамические блоки 1 04.07.2023 09:54
Вставить блок взяв имя блока из списка olga87 LISP 2 25.04.2023 08:23
AutoCAD 2021, Как вставить блок пакетом команд ^C^C_-insert ? Tyhig AutoCAD 10 10.03.2023 16:25
Как вставить в таблицу динамический блок с параметром видимости и с атрибутами? Profan Программирование 18 06.07.2016 16:41
Как программно вставить блок с атрибутами. Kirill_Ja Программирование 6 12.05.2012 00:53