|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Пока копаю вглубь. Ниточку уже схватил, распутываю.
Нарушение идет только в конкретном вхождении блока, реактор на вхождение вешается, а на остальные вхождения не распостраняется баг. Только при изменении динамических свойств из панели пропертиес, другие свойства блока (не динамические) типа поворот, слой и пр. к багу не приводят. Баг возникает, даже если другие динамические свойства пошевелить. Заметил, что изменение динамических свойств с панели не реагирует реактор. Если из ком. строки запускать Код:
Копаю, короче, ждите. |
||||
![]() |
|
||||
Очень, скажу странно не удаляются. В списке владельцев реактора объект исчезает, а реактор по прежнему продолжает реагировать на этот объект. И вот что еще интересно. Если добавлять в процессе выполнения функции modline объект, то реактор реагировать начинает и на него, а вот если его тоже в процессе удалять, то и реагировать на него перестает. Правда это точка, а не динамический блок. У меня сейчас нонсенс на экране. Реактор, у которого списов владельцев - nil показывает, а все равно продолжает реагировать на изменения свойств динамического блока.
|
||||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
По поводу изменения объекта объектным реактором (пусть даже после завершения) я бы побоялся использовать.
А вот сама методика реактор + Vlasendcommand - это плюсадин, у меня так dblclk реактор работеат. Такчто ИМХО любые реакторы кроме объектных - вроде безопасно. По поводу программирования в вертикальных решениях и уж тем более c СПДС ![]() |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
И еще Supermax у меня задача с динблоками похожая счас стоит только я ее запихал в долгий ящик, а по ночам думаеца ее решать не через объектный реактор а через sysvar реактор, потипу как сделано в макросах типа как на кнопке copy:
Код:
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Supermax, Реактор в функции modline можно временно деактивировать, а потом активировать снова.
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Что такое панель Properties? Правильно - это немодальное окно ActiveХ элемента. Я давно заметил, что когда оно открыто, то очень трудно вращать сложные объекты, а когда закрыто - легко. Понятное дело, туда идет постоянная подгрузка текущих значений выделенных элементов и если их много и они стремительно меняют свои значения,скажем при перемещении, то процесс заметно тормозится.
Где-то в глубине автокада есть словари с реакторами. Я встречал как-то, но где - не помню. Скорее всего, этот ActiveX элемент не все словари регенерирует. Глюк именно на динамических свойствах. Я другой пример сделал. Полилинию в координаты 0,0,0 перемещаю насильно, если ее от туда сдвинули - все как часы, в том числе и при изменении координаты из меню пропертиес. Только динамические свойства глючат. Либо надо найти механизм их коррекции, либо отказаться от услуг этой панели. Реакторы тут не причем! Все корректно работает, это только динамизм мешает удалять из реактора указатель на объект. О! Еще один опыт в голову пришел. |
||||
![]() |
|
||||
VVA, если у меня только линия не становится на место, а ручка становится, то у тебя уже и ручка не становится. Это я имею в виду глюк с изменением длинны через меню пропертиес. А так -
![]() Ща мужики, мы эту заразу выловим! |
||||
![]() |
|
||||
VVA, у тебя ситуация такая - ты деактивируешь, он при проверке функцией vlr-added-p пишет, что отключен, а реактор все равно продолжает реагировать на изменение объекта (по всем параметрам, даже по изменению угла поворота блока).
Последний раз редактировалось Supermax, 29.11.2008 в 23:12. |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Один из вариантов: командой _propertiesclose
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
ВСЕ!
Проблема решена! Код:
На Сером форуме подсказали про другой процесс. Отредактировал, как VVA подсказал - тоже работает!!! Последний раз редактировалось Supermax, 30.11.2008 в 14:49. |
||||
![]() |
|
||||
Опишу механизм нарушения работы реактора.
ActiveX элемент "Свойства" (не знаю как он реально называется) предназначен для а) - демонстрации свойств объектов и б) - для изменения этих свойств, если они то позволяют. Цепочка действий идет такая - Собираются данные об объекте (или группе объектов); - Передаются в окно ActiveX компонента - Если пользователь изменил значение в окне - это значение анализируется на предмет совместимости и если да - передается в объект - Опять собираются данные с объекта (или группы объектов) Где-то в этой цепочке ActiveX компоненту нужна командная строка и что получается: - Передаются в окно ActiveX компонента - Если пользователь изменил значение в окне - это значение анализируется на предмет совместимости и если да - передается в объект - срабатывает реактор и посылает в командную строку (в очередь) данные - Начинается работа по изменению свойства блока - А работа ActiveX компонент "Свойства" пытается в это время получить данные с объекта. Где-то в общих чертах так. Ну, так нам спешить некуда, подождем и после отправим нашу функцию в командную строку. |
||||
![]() |
|
||||
Programming, automation, CADs, GISs. "Теплоком" Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306
|
Спасибо, Supermax, тебе за эту тему. Очень помог мне решить вот эту проблему: http://forum.dwg.ru/showthread.php?p=604338#post604338
__________________
На LISPе можно мыслить! Последний раз редактировалось Ax3, 03.08.2010 в 09:30. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
передача данных из AutoLisp в Excel | Victorovich | LISP | 2 | 03.12.2011 22:28 |
Параметрическая библиотека в autoLISP | joisegatoi | LISP | 8 | 18.06.2007 18:39 |
Autolisp и Visual Basic Книга | Piton | LISP | 6 | 27.02.2006 09:54 |