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

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

Реакторы, связывание объектов

Ответ
Поиск в этой теме
Непрочитано 15.12.2022, 20:40 #1
Реакторы, связывание объектов
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,030

Постоянно, бесконечно вручную обеспечиваем логическую связь объектов - какие-то блоки должны быть на вершинах полилиний, какие-то отрезки перпендикулярны, надписи параллельны линиям и т.д., и т.п.
Редактирование одного может приводить к нарушениям во многом.
Динамическими блоками все не сделать, параметризация сильно тормозит, программок на каждый набор объектов не напасешься.

Мне встречалось у программистов упоминание реакторов. Но очень редко. И на практике, среди множества программ, за все годы не попадалось. (Что настораживает ).
Можно ли в принципе сделать аналог параметризации через реакторы: сохранение параллельности или перпендикулярности, или примыкания и т.д., и пр.?
Или при их массовом применении реакторы так же будут тормозить AutoCAD, как параметризация? Создавать другие проблемы?
__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 3223
 
Непрочитано 15.12.2022, 20:42
#2
Кулик Алексей aka kpblc
Moderator

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


Можно. Могут. https://autolisp.ru/?s=%D1%80%D0%B5%...82%D0%BE%D1%80 - это если на лиспе пишешь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 16.12.2022, 02:27
#3
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Можно. Могут. https://autolisp.ru/?s=%D1%80%D0%B5%...82%D0%BE%D1%80 - это если на лиспе пишешь.
Есть в тексте из ссылки:
Цитата:
Параметрические зависимости ... реализованы через объектные реакторы: т.е. на каждый "завязанный" в параметрические зависимости графический примитив дополнительно вешается отдельный объектный реактор.
В параметрических зависимостях именно те реакторы, что в лиспе? Или в них другие инструменты?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 16.12.2022, 07:48
#4
Кулик Алексей aka kpblc
Moderator

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


Насколько я понимаю, они реализованы не на лиспе, но основываются примерно на тех же механизмах.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.12.2022, 09:36
#5
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
но основываются примерно на тех же механизмах.
имхо, как именно все это организовано внутри "ядра" акада - можно только догадываться. "Ядро" акада в какие то стабильные для состояния самого акада моменты времени вызывает очереди подключенных обработчиков событий (реакторов) для возможности реакций внешних надстроек.
Сергей812 вне форума  
 
Непрочитано 16.12.2022, 09:46
#6
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,825
<phrase 1=


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
"Ядро" акада в какие то стабильные для состояния самого акада моменты времени вызывает очереди подключенных обработчиков событий (реакторов) для возможности реакций внешних надстроек.
Во загнул!
PS пять раз прочел прежде чем понял о чем речь.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.12.2022, 10:35
#7
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


ИМХО, то, что Вы не часто встречаете "реакторы" это нормально, однако это не означает, что их мало используют.
Будет ли тормозить и вызывать проблемы, зависит от реализации...
Boxa вне форума  
 
Автор темы   Непрочитано 17.12.2022, 17:14
#8
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Насколько я понимаю, они реализованы не на лиспе, но основываются примерно на тех же механизмах.
Если параметризация сделана принципиально теми же средствами, что и реакторы лисп, то, вероятно, с реакторами будет то же - сильное торможение AutoCAD.

Хорошо бы понять степень этого "примерно" - критично или нет.
Цитата:
Сообщение от Boxa Посмотреть сообщение
ИМХО, то, что Вы не часто встречаете "реакторы" это нормально, однако это не означает, что их мало используют.
В моделях тысячи, десятки тысяч объектов логически связаны. Т.е. нужно средство, которое можно применять массировано. Соответственно - не тормозящее и т.п.
Цитата:
Сообщение от Boxa Посмотреть сообщение
Будет ли тормозить и вызывать проблемы, зависит от реализации...
Т.е. Вы считаете, что реакторами реально?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 17.12.2022, 17:37
#9
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Т.е. Вы считаете, что реакторами реально?
на лиспе для тысяч объектов - ну если вы не Мак Ли, то лучше и не беритесь)

На .Net/ARX можно рискнуть, при этом:
1. Не полагайтесь на последовательность вызова обработчиков событий в строгой соответствии с проводимыми операциями. События обязательно будут, но не обязательно в то время и в том порядке - который ожидаете в результате выполнения своего кода.
2. Внутри событий не стоит использовать интерактивные функции и диалоговые окна. Рискуете в лучшем случае получить ошибку, в худшем - непредсказуемый результат.
3. Строго следить за обеспечением невозможности рекурсивного выполнения цепочки обработчиков событий. Т.е. если обработчик события А "дергает" через действия с тем же документом обработчик события Б, а обработчик события Б вызывает своими действиями обработчик события А - все, здравствуй рекурсия и краш.

Т.е. код придется оптимизировать и тестировать очень тщательно. Что накладывает определенные требования к уровню самого разработчика надстройки)
Сергей812 вне форума  
 
Непрочитано 17.12.2022, 17:56
#10
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
В моделях тысячи, десятки тысяч объектов логически связаны. Т.е. нужно средство, которое можно применять массировано. Соответственно - не тормозящее и т.п.
Тогда - ИМХО!- лучше делать отдельной командой / функцией, которая будет вызываться либо по требованию пользователя, либо (к примеру) по событию сохранения документа. Правда, там понадобятся другие знания и другие подходы
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.12.2022, 18:10
#11
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тогда - ИМХО!- лучше делать отдельной командой / функцией, которая будет вызываться либо по требованию пользователя, либо (к примеру) по событию сохранения документа.
либо в обработчике idle, либо changedstatelockdocument.
Сергей812 вне форума  
 
Непрочитано 17.12.2022, 18:13
#12
Кулик Алексей aka kpblc
Moderator

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


Ну это уже не в лиспе - там про такое лично я даже не слышал
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.12.2022, 18:28
#13
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ну это уже не в лиспе
idle вроде нет реактора, а изменение состояния блокировки документа - vlr-documentLockModeChanged.
Сергей812 вне форума  
 
Непрочитано 17.12.2022, 18:50
#14
Кулик Алексей aka kpblc
Moderator

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


Я в своей практике ограничивался реакторами на команды и изменения системных переменных. Остальное прошло как-то мимо: наверное, просто было не надо.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.12.2022, 18:59
#15
Сергей812


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


ну это специфические вещи - например
Сергей812 вне форума  
 
Автор темы   Непрочитано 17.12.2022, 19:54
#16
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
На .Net/ARX можно рискнуть...
Через 15 или сколько там лет все еще рискнуть...
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тогда - ИМХО!- лучше делать отдельной командой / функцией, которая будет вызываться либо по требованию пользователя, либо (к примеру) по событию сохранения документа.
Т.е. для самих объектов без реакторов? Примерно такой вариант представлял как обходной на случай безнадежности с реакторами или т.п.
Костыльный, но, возможно, технологически не худший.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Правда, там понадобятся другие знания и другие подходы
Другие - есть еще альтернативы динамике, параметризации, реакторам?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 17.12.2022, 20:10
#17
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Через 15 или сколько там лет все еще рискнуть
если бы подобное реализовывалось без проблем - уже давно была бы информация об этом. Но попробовать можно)

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Другие - есть еще альтернативы динамике, параметризации, реакторам?
чтобы с гарантированным результатом - никаких. А так можно еще свои примитивы на ObjectARX делать, например.
Сергей812 вне форума  
 
Непрочитано 17.12.2022, 21:01
#18
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Другие - есть еще альтернативы динамике, параметризации, реакторам?
Ну да. Где и как хранить, откуда и как доставать нужные данные - вопрос уже к разработчику (спойлер: РД для этого вряд ли подойдут). Ну и что делать с полученными данными - тоже прерогатива разраба.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.12.2022, 21:23
#19
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
логическую связь объектов - какие-то блоки должны быть на вершинах полилиний
1. У блока на вершине полилинии должна быть точка вставки, геометрический центр или что-то еще?
2. Нужно как-то запомнить, к какой именно вершине и какой полилинии пристыкован данный блок. А так же запомнить координаты этой вершины.
3. В обработчике события модификации примитива проверять - не было ли изменения данной полилинии, и не было ли изменение координат опорной (для блока) вершины. Если были - занести в очередь команду перемещения блока вслед за "ушедшей" полилинией.
4. Например, в обработчике событии простоя перенести блок и очистить очередь команд.
И это только на одну связь. А если связей много, и среди них есть зависимые - придется очередь команд еще анализировать на первоочередность выполнения. И что бы все это занимало менее 100-200мс, иначе будут слишком заметны тормоза интерфейса. Т.е. данные придется буферизировать, при этом следя за их актуализацией. И пойдет цепляться одно за другое...
Сергей812 вне форума  
 
Автор темы   Непрочитано 17.12.2022, 21:34
#20
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Перед созданием темы смог вспомнить только одну известную лисп-программку, где, предполагал, что использовались реакторы для объектов - Align Text, MText or Attribute to Curve от помянутого выше Lee Mac. 2009-2010 гг.
Посмотрел результаты - к линиям он присоединяет XData с handle и пр.

Опять отсюда:
Цитата:
Параметрические зависимости ... реализованы через объектные реакторы: т.е. на каждый "завязанный" в параметрические зависимости графический примитив дополнительно вешается отдельный объектный реактор.
Может быть стоило бы не на каждый примитив вешать реактор, а сделать "внешние" реакторы на каждый тип события? У объектов сохранять сведения о типах реакции, а при соответствующем событии обрабатывать сразу все [все указанные или вообще только один изменяемый] объекты с нужным типом реакции?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Реакторы, связывание объектов

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить порядок создания объектов в 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