как из процедуры реактора вызвать необходимый диалог? (ACAD 2009, ALISP)
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > как из процедуры реактора вызвать необходимый диалог? (ACAD 2009, ALISP)

как из процедуры реактора вызвать необходимый диалог? (ACAD 2009, ALISP)

Ответ
Поиск в этой теме
Непрочитано 12.10.2010, 09:38 #1
как из процедуры реактора вызвать необходимый диалог? (ACAD 2009, ALISP)
EfremenkoDO
 
Санкт-Петербург
Регистрация: 24.12.2009
Сообщений: 59

Есть такая проблема. Для редактирования определенного блока по двойному щелчку у меня есть реактор с функцией, которая выводит свой диалог по редактированию, но при этом я не могу отображать стандартные диалоги команд _eattedit и _bedit.

Как сделать так, чтоб я их мог вывести в теле реактора или мог использовать функцию реактора только для определенного блока, а для остальных ACAD выполнял стандартное действие на двойной щелчок?
Просмотров: 1903
 
Непрочитано 12.10.2010, 10:13
#2
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от EfremenkoDO Посмотреть сообщение
использовать функцию реактора только для определенного блока, а для остальных ACAD выполнял стандартное действие на двойной щелчок?
Если используется реактор типа vlr-mouse-reactor на событие :vlr-beginDoubleClick, то в функцию дейтсвия передается список с координатами точки. Тогда можно в функции действия через (ssget (точка)) получить объект или объекты по которым кликнули, ну и далее если это блок, если его EffictiveName совпадает с нужным, то такой диалог, если нет, то сякой диалог
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 12.10.2010, 10:15
#3
EfremenkoDO


 
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
<phrase 1=


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
то такой диалог, если нет, то сякой диалог
как вызвать этот сякой диалог? все остальное работает.

Я понимаю, что нельзя из реактора вызывать диалоговые окна, но мое то собственное вызывается, следовательно есть способ вызвать и стандартные. Не переписывать же мне все стандартные окна?

Последний раз редактировалось EfremenkoDO, 12.10.2010 в 10:50.
EfremenkoDO вне форума  
 
Непрочитано 12.10.2010, 11:22
#4
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


EfremenkoDO, может так
Код:
[Выделить все]
(defun MyFun_1(reac data / nbr)
  (vl-load-com)
  (if (setq nbr (ssget (car data)))
    (if (= (vla-get-EffectiveName (vlax-ename->vla-object (ssname nbr 0))) "<имя блока>")
      (vla-SendCommand
	(vla-get-ActiveDocument (vlax-get-acad-object))
	;(strcat "_-bedit " (vla-get-EffectiveName (vlax-ename->vla-object (ssname nbr 0))) "") ; - вот так не получилось
	(strcat "_bedit ") ; - а так окно "Редактирование описания блока" загрузилось, только вот блок нужно выбирать еще раз
	)
      )
    )
)

(setq dbr (vlr-mouse-reactor nil
	    (list '(:vlr-beginDoubleClick . MyFun_1)
		  )
	    )
      )
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 12.10.2010, 11:52
#5
EfremenkoDO


 
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
<phrase 1=


Спасибо! выручил. все заработало
EfremenkoDO вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > как из процедуры реактора вызвать необходимый диалог? (ACAD 2009, ALISP)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59
Проблема вставки диаграмм в ACAD 2009 из Excel 2007 ST2 AutoCAD 1 26.05.2009 01:30