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

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

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

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

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

Мне встречалось у программистов упоминание реакторов. Но очень редко. И на практике, среди множества программ, за все годы не попадалось. (Что настораживает ).
Можно ли в принципе сделать аналог параметризации через реакторы: сохранение параллельности или перпендикулярности, или примыкания и т.д., и пр.?
Или при их массовом применении реакторы так же будут тормозить AutoCAD, как параметризация? Создавать другие проблемы?
__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 3239
 
Непрочитано 17.12.2022, 21:45
#21
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Может быть стоило бы не на каждый примитив вешать реактор, а сделать "внешние" реакторы на каждый тип события? У объектов сохранять сведения о типах реакции, а при соответствующем событии обрабатывать сразу все [все указанные или один изменяемый] объекты с нужным типом реакции?
ну об этом примерно выше и написал. Собирается информация в очередь команд программной надстройки по событиям изменения БД чертежа, и затем "пакетно" модифицируются зависимые примитивы.
Сергей812 вне форума  
 
Автор темы   Непрочитано 17.12.2022, 21:50
#22
АлексЮстасу

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну об этом примерно выше и написал. Собирается информация в очередь команд программной надстройки по событиям изменения БД чертежа, и затем "пакетно" модифицируются зависимые примитивы.
Можно же не пакетно для всех, а для одних только что измененных объектов?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 17.12.2022, 21:55
#23
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Это всё решается штатными методами Map 3D
trir вне форума  
 
Непрочитано 17.12.2022, 21:58
#24
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Посмотрел результаты - к линиям он присоединяет XData с handle и пр.
... и при копировании объектов между чертежами ты (ориентируясь только на хэндлы) можешь получить очень неожиданные результаты
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.12.2022, 22:03
#25
Сергей812


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Можно же не пакетно для всех, а для одних только что измененных объектов?
так в очереди и будут только команды на объекты, зависимые от измененных примитивов. Так как информация заносится по событиям модификации БД чертежа. А еще пользователь может отмену изменений произвести - это тоже надо обрабатывать. И чтобы не организовалось взаимных зависимостей между примитивами - пользователь это явно не будет отслеживать. В общем, дофига)

----- добавлено через ~9 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
и при копировании объектов между чертежами ты (ориентируясь только на хэндлы) можешь получить очень неожиданные результаты
сохранить в XData хэндл самого примитива, и потом пересинхронизировать связи при необходимости.
Сергей812 вне форума  
 
Непрочитано 17.12.2022, 22:32
#26
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
сохранить в XData хэндл самого примитива, и потом пересинхронизировать связи при необходимости.
Если использовать только лисп, задача становится не сильно тривиальной ИМХО.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.12.2022, 22:46
#27
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
... и при копировании объектов между чертежами ты (ориентируясь только на хэндлы) можешь получить очень неожиданные результаты
Во-первых, не я - он.
Во-вторых, если в XData хендл записан в поле типа 1005, то он при копировании в др. чертеж поменяется на действительный.
Но сейчас речь не об XData - ты первый начал.

Да, кстати, что, кроме (или вместо) handle нужно сохранять? Что еще, надежнее-однозначнее-полнее, идентифицирует графэлемент?

Пока гипотеза:
1. сохранять для "базового" объекта сведения о типах реакций [и о связанных объектах: связь1 - список связанных, связь2 - список связанных и т.д.]
2. для связанных объектов сохранять сведения о деталях связи: "базовый" объект, нужное действие, координаты, углы, номера вершин и пр.
3. при событии модификации (любой) объекта производить со связанными объектами соответствующие действия из 2.

Т.о, реакторов AutoCAD может быть достаточно только одного - на модификацию объектов. Действия же можно реализовать доппрограммами. Наверное, это не даст таких тормозов, как при реакторах в объектах, и не создаст др. сложностей от их использования.

Если выбор по handle или т.п. требует перебора всего, то списки связанных не нужны. (Я не программист - не знаю, как технически выбираются объекты по handle или т.п.)

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
так в очереди и будут только команды на объекты, зависимые от измененных примитивов.
Да, все зависимые от только что измененных. Но не вообще для всех объектов со связями. Так явно упростится-ускорится процесс.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
А еще пользователь может отмену изменений произвести - это тоже надо обрабатывать.
Разве есть проблемы с отменой?
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
И чтобы не организовалось взаимных зависимостей между примитивами - пользователь это явно не будет отслеживать.
В смысле? Как они вдруг сами организуются?

----- добавлено через ~10 мин. -----
Цитата:
Сообщение от trir Посмотреть сообщение
Это всё решается штатными методами Map 3D
Во-первых, я не соображу, как обеспечить связь, допустим, масок с контурами или блоков с линиями средствами Map3D.
Допустим, "топологии" некоторые связи устанавливают, да только после модификаций графэлементов рушатся.

Но здесь-сейчас принципиально я хотел бы рассматривать только средства базового AutoCAD.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 17.12.2022 в 23:12.
АлексЮстасу на форуме  
 
Непрочитано 17.12.2022, 23:24
#28
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Если использовать только лисп, задача становится не сильно тривиальной ИМХО.
если использовать только лисп - вопрос в заторможенности интерфейса на реальных чертежах со всеми навесками обработчиков реакторов)

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Во-вторых, если в XData хендл записан в поле типа 1005, то он при копировании в др. чертеж поменяется на действительный.
Ну поменялся автоматически хэндл на другой - а как другой элемент узнает, на какой примитив у него теперь ссылка? А если сохранить хэндл примитива в виде строки/числа, и текущее значение хэндла примитива отличается от записанного - это признак необходимости вызова метода синхронизации ссылок.

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Разве есть проблемы с отменой?
просто тоже надо обрабатывать события)

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
В смысле? Как они вдруг сами организуются?
если не проверять при указании пользователем зависимостей наличие рекурсивных ссылок между примитивами - легко)
Сергей812 вне форума  
 
Автор темы   Непрочитано 18.12.2022, 00:06
#29
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
ориентируясь только на хэндлы
Как эту проблему копирования решить, что сохранять вместо/вместе с handle?
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
просто тоже надо обрабатывать события)
Событие отмены нельзя исключить? С другой стороны - ну, отработать, в чем проблема?
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если не проверять при указании пользователем зависимостей наличие рекурсивных ссылок между примитивами - легко)
Легко что? При обработке событий произвести их последовательно - на скорости не скажется, а результат на совести наворотившего ерунды пользователя.
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 18.12.2022 в 00:12.
АлексЮстасу на форуме  
 
Непрочитано 18.12.2022, 01:02
#30
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как эту проблему копирования решить, что сохранять вместо/вместе с handle?
Подозреваю, что надо указывать не хендлы, а указатели на связанные примитивы. Но что будет при копипасте что внутри чертежа, что между файлам - я хз,
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.12.2022, 01:56
#31
Сергей812


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


Связь между объектами чертежа
Сергей812 вне форума  
 
Автор темы   Непрочитано 18.12.2022, 16:40
#32
АлексЮстасу

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Подозреваю, что надо указывать не хендлы, а указатели на связанные примитивы. Но что будет при копипасте что внутри чертежа, что между файлам - я хз,
Т.е. с этими указателями при копипастах может быть то же, что с хендлами? Гм...
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу на форуме  
 
Непрочитано 18.12.2022, 17:17
#33
Сергей812


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


по последней ссылке верхушка айсберга того, куда хотите влезть.. Но, похоже, реакторы тоже будут рассматриваться "созерцательно", как XData в свое время)
Сергей812 вне форума  
 
Непрочитано 18.12.2022, 17:29
#34
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
или блоков с линиями средствами Map3D
аннотации
trir вне форума  
 
Непрочитано 19.12.2022, 01:20
#35
Сергей812


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


Так, для понимания масштабов задачи - одни только события:

Application Events

DocumentCollection Events

Document Events

Database Events

Editor Events

и сколько из них придется задействовать - покажет только прогон надстройки на реальных задачах и пользователях.
Сергей812 вне форума  
Ответ
Вернуться   Форум 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