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

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

Чем в реакторе заменить команды STYLE и PURGE ?

Ответ
Поиск в этой теме
Непрочитано 12.02.2024, 15:31
Чем в реакторе заменить команды STYLE и PURGE ?
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 616

Всем привет!

Сделал реактор, срабатывающий на открытие/создание файла.
Цель - автоматическая "подстройка" чертежа перед началом работы.
Всякие (getvar) => (setvar) работают без проблем, но в реакторе
не получается использовать командные методы.

А мне, как минимум, нужно создать предустановленные текстовые
стили и выборочно почистить чертёж от "лишних" элементов.
Потом - может быть - ещё чего-нибудь захочется...

Чем - для начала - можно заменить команды _style и _purge ?
__________________
Счастливо, Алексей!
Просмотров: 3890
 
Непрочитано 02.07.2024, 08:02
#21
Кулик Алексей aka kpblc
Moderator

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


Дык это из другой оперы вроде как. Это как сравнивать теплое и квадратное. Или я ошибаюсь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.07.2024, 13:50
#22
skkkk


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


Когда мне бывает надо запустить команду из-под реактора, я использую vla-SendCommand.
skkkk на форуме  
 
Непрочитано 07.07.2024, 17:18
#23
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Когда мне бывает надо запустить команду из-под реактора, я использую vla-SendCommand.
... что, скорее всего, означает, что ты делаешь что-то не то. Или не так. Или не там
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.07.2024, 05:24
#24
===AAA===


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


Да всё он правильно делает... Скорее всего. :-)

Я, например, (исходная-то тема ещё в феврале создана была)
только такой способ и нашёл, чтобы корректно сформировать
в NC отсутствующую в нём функцию S::STARTUP.

Может, быть, конечно, и более изящные решения есть, но у меня
пока всё работает, как задумано. Ну и славно.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 08.07.2024, 09:42
#25
Сергей812


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


странно, что нанокадовцы не стали реализовывать одну из часто употребляемых функций autolisp)
Сергей812 вне форума  
 
Непрочитано 08.07.2024, 10:34
#26
Кулик Алексей aka kpblc
Moderator

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


Там лисп принципиально по-другому реализован. Начиная с того, что грузится не в документ, а в приложение. Да и части ограничений вроде бы нет. Особо не влезал.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.07.2024, 10:50
#27
Сергей812


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


ну с лиспом в нано такой же маркетинговый ход, как в свое время к акаду VBA сбоку прикрутили) Но можно было бы допилить хотя бы базовый функционал для привлекательности продукта - люди до сих пор на лиспе пишут же...
Сергей812 вне форума  
 
Непрочитано 08.07.2024, 14:20
#28
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну с лиспом в нано такой же маркетинговый ход, как в свое время к акаду VBA сбоку прикрутили)
большинство востребованных лиспов сообществом адаптированы под нану.
просто здесь по другому работает, лиспы грузятся в приложение, поэтому выполнить лисп при открытии файла получится только через реакторы , ну или психанет кто и напишет на NET launchFromDoc)))
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 08.07.2024, 14:21
#29
Кулик Алексей aka kpblc
Moderator

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


Угу, который либо имитирует команды, либо под лиспом будет жить от 24 версии и дальше?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.07.2024, 14:44
#30
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Угу, который либо имитирует команды, либо под лиспом будет жить от 24 версии и дальше?
это ты про LispFunction)))
отчего жэж..

Загорулько норм идею подогнал

подписываемся на DocumentActivated
проверяем, что первый раз активирован док
читаем пользовательский файл типа такого (можно в инит прочитать и держать в памяти)
Код:
[Выделить все]
[\lspModules]
D:\setup\nCAD\lsp Nano\test.LSP
[\NrxModules]
d:\@Developers\В работе\!Текущее\Programmers\!NET\SmartLine_2.1.1_nanoCAD_23\SmartLine.package
[\NetModules]
 d:\@Developers\В работе\!Текущее\Programmers\!NET\SmartLine_2.1.1_nanoCAD_23\SmartLine.package
и загружаем модули
профит, модуль подгружается при открытии файла, че то там настраивает внутри, чистит создает
------------
тот жэж реактор, но более цивилизованный)
PS естественно без проверки, только концепт, мож у них DocumentActivated затычка стоит((
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 08.07.2024, 15:36
#31
Кулик Алексей aka kpblc
Moderator

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


Зачем DocumentActivated, когда достаточно DocumentCreated?
Вроде на убитом форуме было нетовское решение, но повторять как-то пока не тянет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.07.2024, 16:30
#32
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Зачем DocumentActivated, когда достаточно DocumentCreated?
Не проверял, но вроде писали, что по created ничо с документом сделать не даст, но это неточно

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вроде на убитом форуме было нетовское решение, но повторять как-то пока не тянет
Дык я от задачи пишу, у меня такой тоже нет.
Кому надо напишут
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 08.07.2024, 16:56
#33
skkkk


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
... что, скорее всего, означает, что ты делаешь что-то не то. Или не так. Или не там
Алексей, ты и прав и нет
Я определённо делаю что-то явно не то, и явно несуразное, но я утверждаю, что из реактора реально вызвать командные методы, по крайней мере, на автокад 2011 и 2022 к примеру, при построении отрезка (командный реактор) вызвать очистку чертежа. Командными методами.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Там лисп принципиально по-другому реализован. Начиная с того, что грузится не в документ, а в приложение. Да и части ограничений вроде бы нет. Особо не влезал.
Как там было? Я давно отключил подписи на форуме
"Майский жук летать не должен, но он об этом не знает, и летает" (пересказ цитаты).

----- добавлено через ~4 мин. -----
Offtop:
Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Да всё он правильно делает... Скорее всего. :-)
Похоже, кто-то ещё в теме?


----- добавлено через ~6 мин. -----
Предлагаю возродить старую добрую традицию Vov'ы - устроить конкурс?

----- добавлено через ~9 мин. -----
===AAA===, хотя, почитал, тему глубже, понял, что тебе для Нанокада надо. Тут не уверен.
skkkk на форуме  
 
Непрочитано 08.07.2024, 17:06
#34
Кулик Алексей aka kpblc
Moderator

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


Offtop:
Цитата:
Сообщение от skkkk Посмотреть сообщение
Командными методами.
ЕМНИП, команды в каде могут выполняться в синхронном и асинхронном режимах (не просто так в лиспе ввели command-s, КМК). И как работает vla-sendcommand, я не знаю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.07.2024, 06:45
#35
skkkk


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
И как работает vla-sendcommand, я не знаю.
Ну чтоб не быть голословным, приведу пример.
Код:
[Выделить все]
 (vl-load-com)
(setq Cmnd_Reac (vlr-command-reactor "Реактор команд: "	(list '(:VLR-commandEnded . commandEnded))))
(defun commandEnded (reac data / ) ; конец какой-то комады ACad
	(setq CMD (car data))
	(if 
		(member 
			CMD 
			(list ; если это была команда, ОТРЕЗОК или ПЛИНИЯ
				"_LINE" "LINE"
				"_PLINE" "PLINE" 
			)
		) 
		(progn
			(setq adoc (vla-get-ActiveDocument (vlax-get-acad-object)))
			(vla-SendCommand adoc "_-PURGE _A \n_N ")
		)
	)
)
Надо загрузить этот код в Кад и выполнить команду _LINE. По её завершении произойдёт очистка чертежа командой _-PURGE.
skkkk на форуме  
 
Непрочитано 09.07.2024, 07:55
#36
Кулик Алексей aka kpblc
Moderator

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


ЕМНИП, command выполняется в асинхронном режиме - т.е. код отправляет эту команду на выполнение и не сильно заморачивается с ожиданием ее выполнения. Аналогично сейчас ведет себя и vl-cmdf. command-s же блокирует код до завершения своего выполнения.
Как именно в этом разрезе будет вести себя vla-sendcommand, я не знаю. Вроде бы на adn-cis.org в какое-то время это обсуждалось
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.07.2024, 09:02
#37
skkkk


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
в асинхронном режиме
В своё время я не особо заморачивался с такими нюансами, но помню, что у Полещука было сказано, что из-под реакторов командные методы недоступны. "А что с vla-SendCommand?"- подумал я и решил попробовать. И получилось
skkkk на форуме  
 
Автор темы   Непрочитано 09.07.2024, 09:48
#38
===AAA===


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


Насчёт асинхронного режима.

Чтобы всё было ОК, (vla-SendCommand) просто
нужно давать в самом конце реактора.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 09.07.2024, 12:20
#39
Кулик Алексей aka kpblc
Moderator

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


... а еще лучше вообще без него попытаться обойтисб ИМХО
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.07.2024, 14:19
#40
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,297
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Зачем DocumentActivated, когда достаточно DocumentCreated?
как всегда ты прав)))

Код:
[Выделить все]
  public class MyCommands : IExtensionApplication
  {
      void IExtensionApplication.Initialize()
      {
          Application.DocumentManager.DocumentCreated
            += DocumentManager_DocumentCreated;
      }
        void DocumentManager_DocumentCreated(object sender, DocumentCollectionEventArgs e)
        {
            //Set flag and send PLINE 
            Document doc = App.Application.DocumentManager.MdiActiveDocument;
            string lispPath = "c:/SDK_NC/NC_SDK_RU_24.0.6388.4326.7145/samples/Lisp/DCL/helloworld.lsp";
            string lispCmd = "helloworld";
            string loadStr = string.Format("(progn(load \"{0}\") (command \"{1}\"))\n", lispPath, lispCmd);
            doc.SendStringToExecute(loadStr, false, false, false);
        }
}
при создании-открытии нового документа здоровается)))
--------------
upd положил сборку в автозагрузку...
единственное НО, так как автозагрузка грузится уже после создания/загрузки первого документа, естественно на первом док не срабатывает
c napp.ini аналогичная шляпа(
__________________
Мастерская СПДС

Последний раз редактировалось doctorraz, 09.07.2024 в 15:36.
doctorraz вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Чем в реакторе заменить команды STYLE и PURGE ?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести меню команды в командной строке? (пояснения внутри) Booka1a AutoCAD 16 02.02.2018 17:55
Как настроить команды "штриховка" и "массив"? Katerina_R AutoCAD 8 24.11.2017 08:29
Как в AutoCAD на Mac открыть диалоговое окно команды Purge? Geor9e AutoCAD 7 09.06.2017 07:08
Разная работа команды purge Genf AutoCAD 0 15.02.2017 21:42
Не получается задать команды в acad.pgp VamBEER AutoCAD 3 22.11.2016 14:56