|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
19.03.2009, 09:14 | #1 | |
Требуется помощь с циклом в лиспе
Отопление и вентиляция
Москва
Регистрация: 31.10.2008
Сообщений: 445
|
||
Просмотров: 7376
|
|
||||
Регистрация: 24.04.2008
Сообщений: 1,131
|
например так
(defun c:Zod3 () (setq z "" zn "" x nil y 1) (setq x (car(entsel))) (setq zn (cdr(assoc 1 (entget x)))) (setq z zn) (while (/= y nil) (setq y (car(entsel))) (if (/= y nil)(setq zn (cdr(assoc 1 (entget y))))) (if (/= y nil)(setq z (strcat z " " zn))) );end while (entmod (subst (cons 1 z) (assoc 1 (entget x)) (entget x))) );end defun |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Цитата:
Код:
|
|||
|
||||
Цитата:
*** Добавлено Проверка типа Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 19.03.2009 в 13:20. Причина: Добавил проверку типа |
||||
|
||||
Отопление и вентиляция Регистрация: 31.10.2008
Москва
Сообщений: 445
|
учел все ошибки и сделал новый вариант.работает с любым видом текста,даже с текстом в блоке и атрибутами,и мультилидером.не вылетает при промахе или указания неправильного примитива.и если текст находится в блоке или в размерах,то он обновляется без регенерации чертежа.единственный недостаток ,если текст берется из многострочного теста ,то сохраняются символы форматирования.
Код:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
1. Забыл про возможность блокирования слоя примитива-получателя.
2. Не отслеживается возможность указания текстового примитива внешней ссылки. 3. Не отслеживается вариант указания не текста. 4. Для снятия форматирования многострочного текста см. http://forum.dwg.ru/showthread.php?t=24790
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Отопление и вентиляция Регистрация: 31.10.2008
Москва
Сообщений: 445
|
прошу объяснить пункты моих недоработок.
1.доработаю. 2.текст из внешних ссылок вроде тягает. 3.на счет не текста вроде проверка есть в строке (vlax-property-available-p (vlax-ename->vla-object y) 'textstring) за 4 пункт спасибо. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
2. Я говорил не про то, чтобы "тягать" - тут-то как раз все нормально. Но я в качестве объекта слияния (то есть получателя) могу указать текст, лежащий внутри внешней ссылки - мне такое не запрещено
3. А про проверку объекта x1 (и следом про получение из него строки) забыл
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Отопление и вентиляция Регистрация: 31.10.2008
Москва
Сообщений: 445
|
на счет объектов внешних ссылок все нормально получается.по крайней мере у меня ,я использовал в качестве внешней ссылки dwg файл.
3 пункт доработал.а вот с 1 неполучается до конца.подскажи. я вначале узнаю является ли слой объекта заблокированым,если да то разблокирую и запоминаю значение до разблокирования.а в конце лиспа хочу обратно слой объекта заблокировать.но я так понимаю что после окончания while он работать не хочет,как ето осуществить?и еще вопрос если примитив можно обновить через entupd, то со слоем это не прокатывает,можно ли так сделать что когда отключается блокирование слоя это было видно визуально? Код:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
В качестве объекта у укажи текст, который лежит внутри внешней ссылки. Сохрани файл. Выйди из него. Снова открой. Проверь - внеслись ли изменения. У меня в версиях от 2005 до 2008 включительно изменения не сохранялись (что более чем ожидаемо).
Насчет блокирования слоя... Запомни состояние слоя объекта-получателя, сними блокировку; меняешь как сделано; восстанавливаешь состояние слоя. Достаточно просто.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
По п.3 имеется ввиду
Код:
По поводу проверки блокирови слоя можно анализировать, доступен ли объект по записи, т.е Код:
Цитата:
*** Добавлено2 1. Можно анализировать имя блока-родителя, если в имени есть символ "|" - значит это XREF, 2. Можно отсекать XREF snvalid'ом (имя стиля будет тоже с "|") Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 06.05.2009 в 16:56. |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Требуется помощь, дабы написать на лиспе программу проверяющую топологию | WeMaN | LISP | 23 | 26.01.2011 01:26 |
требуется помощь | kristi | Программирование | 1 | 03.03.2005 05:55 |
Требуется помощь!!! | ElenaU | Прочее. Архитектура и строительство | 5 | 02.03.2005 15:09 |