|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Регистрация: 05.09.2011
Сообщений: 38
|
Всем привет! Появилась необходимость реализовать такой сетап. В чертеже есть несколько лэйаутов, в каждом лэйауте есть два блока, один обычный и динамический. Нужно процедурно в каждом листе изменить динамический параметр блока в зависимости от размеров блока или имени. Не знаю как даже лучше будет, обращаться либо к имени блока или вычислять его размеры? Подскажите пожалуйста как подступиться к этому вопросу.
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 05.09.2011
Сообщений: 38
|
Ребят, подскажите пожалуйста! Сделал вставку во все листы динамического блока поверх старых блоков и нужно теперь изменить динамическое свойство блока в зависимости от имени старого блока.
(setq ss1 (ssget "_x" '((0 . "INSERT") (100 . "AcDbBlockReference")))) (setq i 0) (while (< i (SSLENGTH ss1)) (setq name (ssname ss1 i)) (setq conv (vlax-ename->vla-object name)) (if (= (vla-get-name conv) "Mp.Stamp") (vla-put-value (car (vlax-safearray->list (vlax-variant-value (vla-getdynamicblockproperties conv) ) ) ) "Mp.StampSmall" ) ) (setq i (1+ i)) ) Никак не могу додуматься как сделать так чтобы штамп менялся не во всех листах, а только в тех где есть нужный элемент. Дико, буду признателен. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Так у тебя и так проверяется имя блока. Правда, куда выполняется вставка, не очень понятно...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 05.09.2011
Сообщений: 38
|
Во всех листах вставлены два вида блоков динамический и обычный, нужно как то процедурно изменить динамическое свойство блока по имени старого блока. У меня только срабатывает на всех листах, я не пойму как написать условие сравнения имени двух блоков для какого-то листа и если имена имена в списке совпадают и совпадают листы, то выполнить выражение. Может путанно достаточно, но как-то так.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Как один из вариантов (сейчас лично мне приходится много работать с неактивными документами, так что от ssget я пока отказываюсь. Что не может не отражаться на кодах
![]() Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
На самом деле логика элементарна
![]() Не самое лучшее решение, если честно. Времени нормально посидеть не было, выдал только то, что в голову пришло. Если подключится VVA, код наверняка получится более компактным и быстрым.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 05.09.2011
Сообщений: 38
|
Цитата:
![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Ох, как не хочется разбирать изначально порочный код... Ну да ладно, корифеи (надеюсь!) простят...
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Да, совсем забыл написать... Конструкцию cond я использовал, чтобы код можно было масштабировать - например, для другого имени дин.блока надо менять другой параметр. А связь все равно со старым блоком. Если этого не надо, то cond безболезненно можно заменить на if. Или (что лучше) - объединить с предыдущим if.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
проектирование железных дорог Регистрация: 12.04.2010
Самара
Сообщений: 60
![]() |
Цитата:
Код:
Код:
Последний раз редактировалось Ubivec81, 14.09.2011 в 11:47. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
и правильно выдается... фашисты вообще за побег расстреливали... Ескейп - кнопка выхода, а не прекращения... просто программа не может понять чего вам надо и считает такое нажатие ошибкой пользователя... о чем ему и сообщает
![]() Здесь крыс уже настолько пропиарил свой сайт, что не наткнуться на него уже проблематично, а там все хорошенько разжевано. за что ему и реверанс |
|||
![]() |
|
||||
проектирование железных дорог Регистрация: 12.04.2010
Самара
Сообщений: 60
![]() |
Подскажите пожалуйста!
На чертеже созданы 2 таблицы и надо значение одной ячейки (F2) первой таблицы перенести в ячейку второй таблицы (tabl 5 4). Делаю это через Код:
Далее в первой таблице меняю какие то цифры и согласно формуле в первой таблице значение F2 меняется а вот значение (tabl 5 4) почему то остается таким же как и было. В EXCEL это все вроде работает,а в АКАДЕ? Или нет вариантов это победить? |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Ubivec81, _regen или _updatefield
__________________
cadtools |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |