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

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

Работа с примитивами внутри блока.

Ответ
Поиск в этой теме
Непрочитано 07.06.2006, 09:02
Работа с примитивами внутри блока.
Toy
 
студент
 
Регистрация: 07.06.2006
Сообщений: 3

Задача: написать на автолиспе программу, которая бы изменяла цвет всех полилиний нулевой толщины внутри блока.
блок создаю Draw->Block->Make, т е сам блок программно создавать не надо. для начала решено было написать программу, которая бы меняла цвет всех полилиний в блоке.
ниже мой неработающий код() - не хочет перерисовываться блок, хотя если посмотреть списки данных примитивов , то автокад показывает , что все норм , изменения внесены.
(defun C:change_blok ()
(setq blok (tblnext "block" T))
(setq blok_name (tblobjname "block" (cdr (assoc 2 blok))))
(setq blok_data (entget blok_name))
(setq primitive_name (cdr(assoc -2 blok_data)))
(while (/= primitive_name nil)
(setq spisok (entget primitive_name))
(if (= (cdr (assoc 0 spisok)) "LWPOLYLINE")
(progn
(setq new_e (cons 62 67))
(setq old_e (assoc 62 spisok) )
(setq spisok (subst new_e old_e spisok) )
(setq spisok (append spisok (list(cons 62 67))))
(entmod spisok)
(entupd primitive_name)
)
)
(setq primitive_name (entnext primitive_name))
)
)
что здесь не так?
p.s. причем если сделаю на блоке Edit block in-place то все внесенные мной изменения применяются.
Просмотров: 8265
 
Непрочитано 13.04.2007, 10:29
#21
Кулик Алексей aka kpblc
Moderator

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


Я знаю, что я сволочь, но все равно - пришли мне образец "проблемного" куска. Попробую победить.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.04.2007, 02:27
#22
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Цитата:
Сообщение от G.A.W.
Чото я помойму не то сделал, Да? :?
ты все сделал то. Это kpblc чой-то обгурИлся и забыл постваить С: перед text'ом. Исправь строку
Код:
[Выделить все]
(defun C:test ()
и будет тебе щастя .
Лентяй вне форума  
 
Непрочитано 16.04.2007, 21:22
#23
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Цитата:
_attsync либ _battman - по вкусу.
Не согласен battman - позволяет переназначить значение атрибута по умолчанию, а attsync - регенит блок для доступа к вновь появившимся атрибутам.
Sleekka вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Работа с примитивами внутри блока.