|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Реакторы, связывание объектов
топограф, технолог
Москва
Регистрация: 24.05.2009
Сообщений: 3,072
|
||
Просмотров: 3606
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Можно. Могут. https://autolisp.ru/?s=%D1%80%D0%B5%...82%D0%BE%D1%80 - это если на лиспе пишешь.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
Цитата:
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Насколько я понимаю, они реализованы не на лиспе, но основываются примерно на тех же механизмах.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
имхо, как именно все это организовано внутри "ядра" акада - можно только догадываться. "Ядро" акада в какие то стабильные для состояния самого акада моменты времени вызывает очереди подключенных обработчиков событий (реакторов) для возможности реакций внешних надстроек.
|
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,915
![]() |
Цитата:
![]() PS пять раз прочел прежде чем понял о чем речь.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Цитата:
Хорошо бы понять степень этого "примерно" - критично или нет. Цитата:
Т.е. Вы считаете, что реакторами реально?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
на лиспе для тысяч объектов - ну если вы не Мак Ли, то лучше и не беритесь)
На .Net/ARX можно рискнуть, при этом: 1. Не полагайтесь на последовательность вызова обработчиков событий в строгой соответствии с проводимыми операциями. События обязательно будут, но не обязательно в то время и в том порядке - который ожидаете в результате выполнения своего кода. 2. Внутри событий не стоит использовать интерактивные функции и диалоговые окна. Рискуете в лучшем случае получить ошибку, в худшем - непредсказуемый результат. 3. Строго следить за обеспечением невозможности рекурсивного выполнения цепочки обработчиков событий. Т.е. если обработчик события А "дергает" через действия с тем же документом обработчик события Б, а обработчик события Б вызывает своими действиями обработчик события А - все, здравствуй рекурсия и краш. Т.е. код придется оптимизировать и тестировать очень тщательно. Что накладывает определенные требования к уровню самого разработчика надстройки) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Цитата:
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Ну это уже не в лиспе - там про такое лично я даже не слышал
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Я в своей практике ограничивался реакторами на команды и изменения системных переменных. Остальное прошло как-то мимо: наверное, просто было не надо.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
ну это специфические вещи - например
|
|||
![]() |
|
||||
Через 15 или сколько там лет все еще рискнуть...
Цитата:
Костыльный, но, возможно, технологически не худший.Другие - есть еще альтернативы динамике, параметризации, реакторам?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
если бы подобное реализовывалось без проблем - уже давно была бы информация об этом. Но попробовать можно)
чтобы с гарантированным результатом - никаких. А так можно еще свои примитивы на ObjectARX делать, например. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Ну да. Где и как хранить, откуда и как доставать нужные данные - вопрос уже к разработчику (спойлер: РД для этого вряд ли подойдут). Ну и что делать с полученными данными - тоже прерогатива разраба.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
2. Нужно как-то запомнить, к какой именно вершине и какой полилинии пристыкован данный блок. А так же запомнить координаты этой вершины. 3. В обработчике события модификации примитива проверять - не было ли изменения данной полилинии, и не было ли изменение координат опорной (для блока) вершины. Если были - занести в очередь команду перемещения блока вслед за "ушедшей" полилинией. 4. Например, в обработчике событии простоя перенести блок и очистить очередь команд. И это только на одну связь. А если связей много, и среди них есть зависимые - придется очередь команд еще анализировать на первоочередность выполнения. И что бы все это занимало менее 100-200мс, иначе будут слишком заметны тормоза интерфейса. Т.е. данные придется буферизировать, при этом следя за их актуализацией. И пойдет цепляться одно за другое... |
|||
![]() |
|
||||
Перед созданием темы смог вспомнить только одну известную лисп-программку, где, предполагал, что использовались реакторы для объектов - Align Text, MText or Attribute to Curve от помянутого выше Lee Mac. 2009-2010 гг. Посмотрел результаты - к линиям он присоединяет XData с handle и пр. Опять отсюда: Цитата:
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
|
|||
![]() |
|
||||
Можно же не пакетно для всех, а для одних только что измененных объектов?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
... и при копировании объектов между чертежами ты (ориентируясь только на хэндлы) можешь получить очень неожиданные результаты
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
----- добавлено через ~9 мин. ----- сохранить в XData хэндл самого примитива, и потом пересинхронизировать связи при необходимости. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Если использовать только лисп, задача становится не сильно тривиальной ИМХО.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
|||||
Цитата:
Во-первых, не я - он. ![]() Во-вторых, если в XData хендл записан в поле типа 1005, то он при копировании в др. чертеж поменяется на действительный. Но сейчас речь не об XData - ты первый начал. Да, кстати, что, кроме (или вместо) handle нужно сохранять? Что еще, надежнее-однозначнее-полнее, идентифицирует графэлемент? Пока гипотеза: 1. сохранять для "базового" объекта сведения о типах реакций [и о связанных объектах: связь1 - список связанных, связь2 - список связанных и т.д.] 2. для связанных объектов сохранять сведения о деталях связи: "базовый" объект, нужное действие, координаты, углы, номера вершин и пр. 3. при событии модификации (любой) объекта производить со связанными объектами соответствующие действия из 2. Т.о, реакторов AutoCAD может быть достаточно только одного - на модификацию объектов. Действия же можно реализовать доппрограммами. Наверное, это не даст таких тормозов, как при реакторах в объектах, и не создаст др. сложностей от их использования. Если выбор по handle или т.п. требует перебора всего, то списки связанных не нужны. (Я не программист - не знаю, как технически выбираются объекты по handle или т.п.) Цитата:
Цитата:
Цитата:
----- добавлено через ~10 мин. ----- Во-первых, я не соображу, как обеспечить связь, допустим, масок с контурами или блоков с линиями средствами Map3D. Допустим, "топологии" некоторые связи устанавливают, да только после модификаций графэлементов рушатся. Но здесь-сейчас принципиально я хотел бы рассматривать только средства базового AutoCAD.
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 17.12.2022 в 23:12. |
|||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Цитата:
просто тоже надо обрабатывать события) если не проверять при указании пользователем зависимостей наличие рекурсивных ссылок между примитивами - легко) |
|||
![]() |
|
||||
Как эту проблему копирования решить, что сохранять вместо/вместе с handle?
Событие отмены нельзя исключить? С другой стороны - ну, отработать, в чем проблема? Легко что? При обработке событий произвести их последовательно - на скорости не скажется, а результат на совести наворотившего ерунды пользователя.
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 18.12.2022 в 00:12. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378
|
Подозреваю, что надо указывать не хендлы, а указатели на связанные примитивы. Но что будет при копипасте что внутри чертежа, что между файлам - я хз,
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
Т.е. с этими указателями при копипастах может быть то же, что с хендлами? Гм...
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Так, для понимания масштабов задачи - одни только события:
Application Events DocumentCollection Events Document Events Database Events Editor Events и сколько из них придется задействовать - покажет только прогон надстройки на реальных задачах и пользователях. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменить порядок создания объектов в AutoCAD | hwarang | AutoCAD | 13 | 26.08.2021 22:12 |
Исключение объектов из набора | Violent MITCHELL | AutoCAD | 22 | 10.08.2016 12:09 |
Аттестация в Минрегионе по негосударственной экспертизе | Людмила Охр | Прочее. Архитектура и строительство | 350 | 14.02.2015 17:50 |
Autocad Architecture 2012(rus), выбор объектов с которых нужно снять изоляцию или частичное завершение изоляции | G-E-K | Вертикальные решения на базе AutoCAD | 8 | 23.05.2013 15:28 |
Нужен перечень объектов, утверждение проектов которых не требует заключения экспертизы | _andrey52 | Организация проектирования и оформление документации | 4 | 27.11.2008 12:06 |