|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
И атрибуты тоже. Другое дело, что в строку нужно вставлять не ID блока, а ID самого атрибута, т.к. атрибут самостоятельный объект.
ЗЫ. И если не сложно, дополните пожалуйста код, до рабочего состояния, не у всех есть набор используемых Вами функций. Последний раз редактировалось Boxa, 18.04.2017 в 06:56. |
|||
|
||||
Цитата:
Но проблема с регенерацией у меня осталась...
__________________
Блог |
||||
|
||||
За ".updatefield" спасибо, не знал. Очень полезно. Искал как-то нечто подобное но не нашел...
Про мой блок - дальнейшие тесты показали, что если не редактировать атрибут существующего блока а вводить содержание его при вставке блока , то поле сразу отображается как нужно.
__________________
Блог |
||||
|
||||
Други, у меня баг при использовании vlr-object-reactor для атрибута дин. блока.
Дин. блок имеет линейный параметр ширины рамки, который по задумке реактора изменяется в зависимости от содержания атрибута. То есть каждый раз получаем ширину атрибута через vla-getBoundingBox и соответственно изменяем ширину рамки. Все работает пока не добавить в дин блок flip state. Без реактора флипает нормально, а с реактором атрибут, после флипа, получает при изменении текста непонятное смещение. Может кто с таким встречался? Вот код и файл примера. Код:
__________________
Блог Последний раз редактировалось Red Nova, 22.04.2017 в 20:28. |
||||
|
||||
По предыдущему посту - я просто не учел что флип не меняет направления текста. Убрал флип чтобы пока не мешал... Пошли дальше.
Первый вариант объектного реактора у меня работает. Но когда попытался усложнить код возникли проблемы. В реакторе многие команды не работают. По крайней мере у меня... Итак я имею блок маркера текст в котором может иметь разную ширину. Чтобы рамка блока маркера совпадала по ширине с текстом и пишется реактор. При вставке блока я получаю ширину текста при помощи vla-getBoundingBox, при этом если блок повернут то я перед применением vla-getBoundingBox поворачивал блок как нужно, получал ширину и возвращал прежний поворот. Такой трюк в реакторе не работает. Не знаю в чем дело. На строчке vlax-put код слетает. В прикрепленном коде закомментил следующие строки, которые должны производить трюк с поворотом блока при получении BoundingBox. На них происходит вылет. Вот они. ;(setq rot (vlax-get-property (nth 0 objlist) 'Rotation)) ;(vlax-put (nth 1 objlist) 'Rotation 0) (vla-getBoundingBox (nth 1 objlist) 'a 'b) ;(vlax-put (nth 1 objlist) 'Rotation rot) В теперешнем виде все работает, но для повернутых блоков vla-getBoundingBox получает не те координаты что нужно. Почему vlax-put не работает в реакторе?
__________________
Блог |
||||
|
||||
Решение нашлось благодоря замене vla-getBoundingBox на функзию от Lee Mac.
Код:
__________________
Блог Последний раз редактировалось Red Nova, 24.04.2017 в 22:18. |
||||
|
|||||
Никак не выходит отключить Object Reactor для определенных блоков.
Как правильно обозначить Object Reactor в рамках vlr-owner-remove? Вот так не работает: Цитата:
Цитата:
Если при создании реактора я именую его TagFieldReactor Цитата:
Цитата:
__________________
Блог |
|||||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Возможно ли как-то в лиспе добиться "псевдо-вложенности" меток отмены? Если схематично, то имею в виду нечто следующее:
Код:
Пример. Программа в цикле поочередно (с помощью nentsel) просит указать подобъекты блока. Указанный подобъект незамедлительно стирается. До момента завершения команды (прерывания цикла по Enter) я хочу отменять по Ctrl+Z удаление каждого подобъекта по одному, а после завершения - отменить удаление сразу всех подобъектов. Подобный принцип реализован в штатной _.PLINE: в процессе отрисовки можем убирать по одному сегменту, а по ее завершении - можно отменить сразу всю полилинию. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
|
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Сергей812, идея для данного примера здравая, спасибо - суть хитрости уловил. Не додумался даже до такой. Было у меня еще пару-тройку программ, где я хотел бы реализовать подобный механизм, но сейчас что-то не припомню, где именно.
Причем тут с перехватом нажатия Ctrl+Z проблем нет, даже без grread. Это сочетание просто передает в командную строку символы _U, которые можно назначить в качестве ключевого слова переменной на запрос nentsel (предварив initget'ом) - и далее обработать. Тут я столкнулся с другим: как скрыть объект внутри блока? С удалением проблем нет: применяем vla-Delete ко вложенному объекту, затем entupd ко всему блоку - даже не подвисает ни на секунду. А вот как скрыть, пока не пойму. Redraw с аргументом 2 (скрыть примитив, перерисовать цветом фона) работает только в активном пространстве. Метод HighLight может только подсветить примитив пунктиром. Пока писал, навела на мысль эта ремарка Полещука: "перерисовать цветом фона". Вроде, подходит. Ладно, свой цвет я знаю и не меняю его - стандартный черный (AC 2011) - 0, 0, 0. Назначаю его подпримитиву - и дело в шляпе, казалось бы... Но цвет не у всех такой. А выяснить программно на лиспе цвет фона нельзя (цитата из Полещука): Цитата:
Цитата:
Сергей812, еще раз большое спасибо за хорошую идею. И всех с праздником Великой Победы! |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,853
|
На форуме были коды получения цвета фона любого пространства.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Сергей812, и снова спасибо. С п.2 - в точку. Забыл я что-то про него. Не приходилось вроде, еще использовать, хватало до этого redraw.
Кулик Алексей aka kpblc, вроде как уже и не надо для этой задачи, но все равно стало любопытно, однако найти такой код так и не удалось. Только для изменения цвета нашел. |
|||
|
||||
Регистрация: 23.04.2015
Сообщений: 163
|
skkkk, вот, например: http://forum.dwg.ru/showthread.php?t=49422
|
|||
|
||||
Зависит от того что понимать под словом освоить. Толком я занялся лиспом только в этом году. Многое (не особо сложное) получается довольно неплохо. Для сельской местности хватает. Но осваивать там еще много чего. Хотя и цель познать все не стоит, только то что нужно для конкретных задач.
__________________
Блог Последний раз редактировалось Red Nova, 11.05.2017 в 06:46. |
||||
|
||||
Регистрация: 23.10.2013
Сообщений: 23
|
Здравствуйте! Извините, может вопрос уже был, найти не смог. В динамическом блоке есть параметр "отражение", соответственно возможны два варианта настройки: "Без отражения", "отраженное". В каком виде данных скармливать параметр функции vla-put-value для изменения этого динамического свойства?
|
|||
|
||||
Titli-pytli
Вот вариант от Lee Mac-а Код:
__________________
Блог |
||||
|
||||
автоматизация и организация черчения Регистрация: 17.11.2009
Sterlitamak
Сообщений: 135
|
Здравствуйте! Подскажите пожалуйста, как заставить подобную конструкцию работать
Код:
Т.е. чтобы при выборе точки всегда была возможность сделать еще что-либо в текущем режиме. Спасибо!
__________________
слесарь САПР |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |