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

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

Вставка блока с атрибутами. Как сделать правильно?

Ответ
Поиск в этой теме
Непрочитано 13.03.2013, 20:25 #1
Вставка блока с атрибутами. Как сделать правильно?
Kirill_Ja
 
Мурманск
Регистрация: 28.07.2008
Сообщений: 208

Нужна утилитка, чтобы вставлять блоки с атрибутами. При этом она должна сама распознавать порядок их следования и названия.
Например:

Код:
[Выделить все]
 (adv_block_insert '("5_RL" ("Name" "Первая") ("Date" "130313") ("num" "121") (10 0 0 0)))
Создаст в точке (0 0 0) блок с именем "5_RL" и присвоит его атрибутам Name Date num соответствующие значения.
При этом не будет зависеть от порядка следования атрибутов в блоке (т.е. распознает имена и код 10).
Пропустит атрибут, если он отсутствует в описании блока, оставит пустыми атрибуты, если их значения не указаны при вызове.

Если это принципиально реализуемо, подскажите хотя бы подходы к решению.
Просмотров: 4942
 
Непрочитано 13.03.2013, 23:14
#2
Кулик Алексей aka kpblc
Moderator

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


http://forum.dwg.ru/showthread.php?p=144820
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.03.2013, 14:27
#3
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


Я тут немного паразбирался. Хочу немного переформулировать вопрос.

Где найти в чертеже список атрибутов описания! блока, дабы потом задавать их значения
команде в правильном порядке. Я так понимаю это должно быть где-то в таблицах, словарях или расширенных данных, но пока так ничего и не нашел.
Т.е.

Код:
[Выделить все]
 (get_discription_attr_names "5_RL")
Выдаст список атрибутов блока. А потом например так

Код:
[Выделить все]
 (command "_insert" .... угол поворота масштаб точка вставки и.т.п .... Date num Name)
Где Date num Name - переменные, которые содержат значения соотв атрибутов. В моем случае, прочитанные из файла.
Kirill_Ja вне форума  
 
Непрочитано 14.03.2013, 18:10
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Код:
[Выделить все]
(defun get_discription_attr_names (name / blocks block lst)
  (vl-load-com)
  (setq    blocks (vla-get-blocks
         (vla-get-ActiveDocument (vlax-get-acad-object))
           ) ;_ end of vla-get-blocks
  ) ;_ end of setq
  (if (tblobjname "block" name)
    (progn
      (setq block (vla-item blocks name))
      (vlax-for    item block
    (if (= (vla-get-ObjectName item) "AcDbAttributeDefinition")
      (setq lst (cons (vla-get-TagString item) lst))
    ) ;_ end of if
      ) ;_ end of vlax-for
      lst
    ) ;_ end of progn
  ) ;_ end of if
) ;_ end of defun
Do$ вне форума  
 
Непрочитано 15.03.2013, 16:45
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Kirill_Ja, Kirill_Ja, Не стоит завязываться на порядок следования атрибутов. Т.к. атрибуты еще бывают контролируемые, установленные и т.п. От этого так же может поменяться порядок запросов. Лучше сделать так:
1. ATTDIA=0 и ATTREQ=0
2. Вставить блок (при этом запроса значений атрибутов не будет. Они вставятся со значением по умолчанию)
3. Изменить значения атрибутов полученного вхождения блока. Пример такой функции
4. Восстановить прежние значения ATTDIA и ATTREQ
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.03.2013, 19:15
#6
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Тогда уж и блок вставлять "по-взрослому" через vla функцию (не помню точно: то ли vla-insert, то ли vla-insertblock).
Do$ вне форума  
 
Непрочитано 16.03.2013, 22:26
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


можно и через entmake
Код:
[Выделить все]
(defun Insert (pt Nme)
  (entmakex (list (cons 0 "INSERT")
                  (cons 2 Nme)
                  (cons 10 pt))))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 18.03.2013, 00:22
#8
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


А ведь это очень прекрасная идея. Как я раньше не подумал))))
Спасибо за подсказку.
Kirill_Ja вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вставка блока с атрибутами. Как сделать правильно?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как правильно сделать ситуационный план??? Аша Поиск литературы, чертежей, моделей и прочих материалов 0 08.10.2012 22:23
Подсчет кабеля при помощи дин. блока с атрибутами serg01 AutoCAD 41 07.05.2009 09:34
Проблема с многострочными атрибутами блока vasilyis AutoCAD 7 25.05.2008 08:38
Как правильно сделать сварную трубу из швеллеров? Chief Justice Прочее. Архитектура и строительство 36 01.04.2007 01:03
Вставка таблицы внутри анонимного блока Кулик Алексей aka kpblc Программирование 7 21.06.2006 15:05