|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Извлечение значений атрибутов блоков AutoCAD Electrical с помощью AutoLisp
Регистрация: 02.06.2010
Сообщений: 4
|
||
Просмотров: 20668
|
|
||||
Регистрация: 02.06.2010
Сообщений: 4
|
Это ведь команда автокада, и при ее запуске вылазит диалоговое окно автокад и каждый раз, когда изменится один атрибут хотя бы одного блока, придется выполнять 8 шагов для формирования таблицы (ну может меньше, если настроить файл шаблона). Если вы знаете способ как запрограмить все эти шаги в лиспе, поделитесь.
К тому же не устраивает графическое предстваление выводимой таблицы (толщины линий ячеек, размеры ячеек не соответсвуют форме перечня элементов (ПЭ) по ГОСТ 21.1101). Т.е. каждый раз придется опять настраивать вручную. К тому же предполагается (в дальнейшем) что прога на лиспе будет строить таблицу ПЭ в обределенной области чертежа и переносить эту таблицу автоматически (если не влезет на формат А3) на другой чертеж, создавая его в новом файле. (не знаю возможно это или нет вообще). Еще есть проблема: когда заполняю строку описание при вставке блока AutoCad Electrical в диалоговом окне Вставить/редактирвоать компонент , он (автокад) автоматически делает все буквы заглавными, и в таблицу через команду _.dataextraction тоже выводит заглавные буквы, опять же не по ГОСТу, хотелось бы исправить это с помощью лиспа (если опять же возможно), либо как то отключить это из автокада. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
zaraki_kenpachi,
Может это поможет: 1. Как сделать спецификацию с помощью _dataextraction? AutoCAD 2009-2010 2. Почему игнорируется _-ATTEXT и "Извлечение данных из атрибутов (метод низкого уровня)" - название из справки по Автокаду. Выдержку вложил ввиде pdf. Формируется по твоим кратериям текстовый (cdf, sdf) файл. Далее куда угодно - Access, Exel или читать файл лиспом 3. Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 02.06.2010
Сообщений: 4
|
E-degtyarev, задумка хорошая, мне очень понравилась, но вот трабл в следующем: когда пишу в коде вот так:
Код:
Код:
Пробовал вместо "ATTRIB" вставить "AcDbBlockReference" (думал, что это субсписок), но все равно не получилось ничего хорошего. Хех...не понимаю я еще многого в Лиспе. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
"ATTRIB" - это не поле, это тип объекта. В переменной block_i сохраняется ename блока, если этот блок содержит атрибут, то выражение: (entnext block_i) вернет как раз ename объекта типа "ATTRIB". Попробуй вместо этого (setq ew (entget block_i)) написать (setq ew (entget (entnext block_i)))
|
||||
![]() |
|
||||
Помогаю, кому делать нечего. Регистрация: 27.03.2009
Русская деревня
Сообщений: 394
|
zaraki_kenpachi, по всей видимости сейчас гуру форума порвут меня в лоскуты, но все же посмотри фрагмент кода программы, которая заменяет в штампах чертежа (блоки с именем "osn_nadp1n") значения атрибутов, имеющих имена "FIRMA" и "FIRMA2" с ОАО на ООО НТЦ и с РАССВЕТ на ЗАКАТ соответстввенно.
Работает реально, никаких нареканий не было. Тебе нужно просто извлечь значения атрибутов, т.е. функцию entmod использовать не нужно. А взамен этого значение атрибута присвоить переменной. (setq xxxxx (cdr (assoc 1 bbll))) или затолкать в список или еще куда... Код:
Последний раз редактировалось E-degtyarev, 03.06.2010 в 10:57. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
zaraki_kenpachi, Ты ссылки в постах читаешь? В частности #4 после цитаты и #8? Все уже давно написано. Зачем велосипед изобретать?
Из #4 Пример вынес сюда Код:
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 02.06.2010
Сообщений: 4
|
VVA, да читаю... я все перешарил, что мне предлагали.
Я изучаю Лисп одну неделю... вы даете мне коды, я их по пол дня расшифровываю, чтобы понять что за функции там написаны и что они делают. Спасибо всем большое, особенно VVA и E-degtyarev. Поставленную задачу решил ,как раз через функцию get-all-atts . Наконец то понял как ей пользоваться. только вызывал я ее просто как (get-all-atts block_i) Теперь буду двигаться дальше. ________________________ Ай да я мозК |
|||
![]() |
|
||||
Регистрация: 21.02.2009
Сообщений: 825
|
Если задача только в том чтобы сделать перечень элементов, то в Autocad Electrical есть отчёты (с настройкой нужной формы). Помимо перечня элементов там ещё куча различных отчётов на все(практически) случаи проектной жизни
__________________
Я-проектировщик бывший проектировщик! |
|||
![]() |
|
||||
Регистрация: 15.02.2011
Сообщений: 29
|
Но ведь отчет нельзя динамически изменять в ту или иную сторону. Тут как быть?
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Массовое редактирование свойств атрибутов блоков | kgb | Программирование | 11 | 13.06.2023 14:39 |
запуск программы из AutoCADа | kminas | Программирование | 19 | 15.06.2012 13:42 |
AutoCAD 2007. Вставка блоков О_о | vaca | AutoCAD | 3 | 25.12.2009 15:01 |
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk | KSI | AutoCAD | 1 | 14.09.2009 15:59 |
прошу помощи AUTOCAD Electrical | bag | AutoCAD | 13 | 24.05.2005 19:08 |