Как добавить атрибуты в динамический блок?
Доброго времени суток! Подскажите, пожалуйста, как решить такую задачку. Имеется динамический блок с основной надписью, в котором сидит куча форматов (см. приложенный файл). Как такое делается, я пока так и не понял, только переделал его для себя. А вопрос такой: как добавить в эту основную надпись свои, новые атрибуты (по порядку: номер объекта, заказчик, наименование объекта, содержание листа, наименование организации, дата)? В редакторе блоков у меня вообще ничего не получилось. Потом попробовал открыть этот блок просто как чертёж, добавил атрибуты, сохранил. В новом чертеже делаю insert, всё вставляется как надо быть — и старые атрибуты, и новые. Любые значения можно поменять. НО! Когда я меняю формат этого вставленного блока (A2->A3, A2->A4 и т. п.), новые атрибуты остаются на одном и том же месте! То есть они не участвуют в динамике блока, хотя и остаются его частью (выделяются вместе с ним). Как это победить? И можно ли сделать новые атрибуты полями, или хотя бы просто мультитекстом? В общем, пожелания такие: новые атрибуты должны следовать в нужном порядке (при вставке); желательно, чтобы они были мультитекстом или полями; новые атрибуты должны быть полноценной частью полноценного динамического блока.
Надеюсь на вашу помощь. Заранее благодарен.
PS. Всё оформление (штамп, тексты, размеры) у меня идёт в лэйаутах.
[ATTACH]1159629776.dwg[/ATTACH]
Просмотров: 25426
Создание Динамического блока с атрибутами методами Lisp.
Добрый день может кто подскажет способ создания динамического блока с атрибутами.
Через фунцию vla-addAttribute получается добавить атрибут но не получается сделать фиксированное положение, а как параметр растяжения добавить вообще непонятно.
Последний раз редактировалось jackUAROBEY, 18.08.2016 в 14:50 .
Просмотров: 4120
jackUAROBEY |
Посмотреть профиль |
Найти ещё сообщения от jackUAROBEY |
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588
нсли мне не изменяет мой склероз, то ответ — создать дин блок программно нельзя. только скопировать имеющийся.
LISP, C# (ACAD 200[9,12,13,14])
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,810
На theswamp.org, кажется, пробовали создать. Чем закончилось — увы, не помню.
__________________
Моя библиотека lisp-функций
—
Обращение ко мне — на «ты».
Все, что сказано — личное мнение.
Кулик Алексей aka kpblc |
Посмотреть профиль |
Посетить домашнюю страницу Кулик Алексей aka kpblc |
Найти ещё сообщения от Кулик Алексей aka kpblc |
Регистрация: 18.09.2014
Сообщений: 55
Блин плохо.
jackUAROBEY |
Посмотреть профиль |
Найти ещё сообщения от jackUAROBEY |
Регистрация: 18.09.2014
Сообщений: 55
Получилось динамический блок создать правда коммандными методами. Методом ActivX не получилось
(defun block ( / bsnn bsnn_ bsnn_n bsnn_n_ p1 p2 p3 p4 p5 p6 p7 p8 p9 );создание блока отметки ОТГП (setq bsnn (getvar "CELWEIGHT") bsnn_ (getvar "CELTYPE") bsnn_n (getvar "CECOLOR") bsnn_n_ (getvar "CELTSCALE")) (setvar "CELWEIGHT" 70) (setvar "CELTYPE" "continuous") (setvar "CECOLOR" "bylayer") (setvar "CELTSCALE" 1.0) (setq bl_name "ОТГП") (setq m_koef 1) (setq p1 (list 0.0 0.0 0.0)) (setq p2 (list (* 4.95 m_koef) (* 4.95 m_koef) 0.0)) (setq p3 (list (* 16.40 m_koef) (* 4.95 m_koef) 0.0)) (setq p4 (list (* 10.675 m_koef) (* 6.45 m_koef) 0.0));атрибут красные отметки (setq p5 (list (* 10.675 m_koef) (* 3.45 m_koef) 0.0));атрибут черные отметки (setq p6 (list (* 4.0 m_koef) (* 8.5 m_koef) 0.0)) (setq p7 (list (* 17.0 m_koef) (* 1.5 m_koef) 0.0)) (setq p8 (list (* -1.0 m_koef) (* 9.5 m_koef) 0.0)) (setq p9 (list (* 17.0 m_koef) (* -1.0 m_koef) 0.0)) (command "_bedit" bl_name "") (command "_Line" p1 p2 p3 "") (Command "_ATTDEF" "" "krasn" "красные отметки земли" "0,000" "_j" "_mc" P4 "0") (Command "_ATTDEF" "" "chern" "Черные отметки земли" "0,000" "_j" "_mc" P5 "0") (Command "_Bparameter" "_P" P1 P2 p6 "1") (command "_bactiontool" "_stretch" P1 P2 P6 P7 "_window" P8 P9 "") (command "_BCLOSE" "") (setvar "CELWEIGHT" bsnn) (setvar "CELTYPE" bsnn_) (setvar "CECOLOR" bsnn_n) (setvar "CELTSCALE" bsnn_n_) (princ) )Последний раз редактировалось jackUAROBEY, 09.09.2016 в 13:55 .
jackUAROBEY |
Посмотреть профиль |
Найти ещё сообщения от jackUAROBEY |
Регистрация: 20.03.2008
Сообщений: 2,653
Сообщение от jackUAROBEY
правда коммандными методами
Лучше бы попробовать заменить "command" на "vl-cmdf", если не перестанет работать (такое может быть). Потому как данный код точно не пойдет на последних версиях Автокада, где вместо "command" появилась "command-s", которая не принимает несколько команд подряд в одних скобках.
Регистрация: 18.09.2014
Сообщений: 55
Да наверно так лучше будет
(defun block ( / bsnn bsnn_ bsnn_n bsnn_n_ p1 p2 p3 p4 p5 p6 p7 p8 p9 );создание блока отметки ОТГП (setq bsnn (getvar "CELWEIGHT") bsnn_ (getvar "CELTYPE") bsnn_n (getvar "CECOLOR") bsnn_n_ (getvar "CELTSCALE")) (setvar "CELWEIGHT" 70) (setvar "CELTYPE" "continuous") (setvar "CECOLOR" "bylayer") (setvar "CELTSCALE" 1.0) (setq bl_name "ОТГП") (setq m_koef 1) (setq p1 (list 0.0 0.0 0.0)) (setq p2 (list (* 4.95 m_koef) (* 4.95 m_koef) 0.0)) (setq p3 (list (* 16.40 m_koef) (* 4.95 m_koef) 0.0)) (setq p4 (list (* 10.675 m_koef) (* 6.45 m_koef) 0.0));атрибут красные отметки (setq p5 (list (* 10.675 m_koef) (* 3.45 m_koef) 0.0));атрибут черные отметки (setq p6 (list (* 4.0 m_koef) (* 8.5 m_koef) 0.0)) (setq p7 (list (* 17.0 m_koef) (* 1.5 m_koef) 0.0)) (setq p8 (list (* -1.0 m_koef) (* 9.5 m_koef) 0.0)) (setq p9 (list (* 17.0 m_koef) (* -1.0 m_koef) 0.0)) (vl-cmdf "_bedit" bl_name "" "_Line" p1 p2 p3 "" "_ATTDEF" "" "krasn" "красные отметки земли" "0,000" "_j" "_mc" P4 "0") (setvar "CECOLOR" "7") (vl-cmdf "_ATTDEF" "" "chern" "Черные отметки земли" "0,000" "_j" "_mc" P5 "0" "_Bparameter" "_P" P1 P2 p6 "1" "_bactiontool" "_stretch" P1 P2 P6 P7 "_window" P8 P9 "" "_BCLOSE" "") (setvar "CELWEIGHT" bsnn) (setvar "CELTYPE" bsnn_) (setvar "CECOLOR" bsnn_n) (setvar "CELTSCALE" bsnn_n_) (princ) )
jackUAROBEY |
Посмотреть профиль |
Найти ещё сообщения от jackUAROBEY |
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Когда-то мне тоже понадобилось программно добавлять дин.блоки в чертеж. Реализовал такой способ: создавал блок вручную, помещал его в чертеж-библиотеку блоков и при необходимости использования загружал все описания блоков из библиотеки в чертеж. Потом вставлял блок, задавал значения дин.параметрам и атрибутам. Очень помогла мне в этом статья Алексея по работе с неактивным документом: http://autolisp.ru/2010/04/08/procee. tive-document/
Но у меня были такие непростые блоки, что устанешь командными методами их создавать
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Регистрация: 20.03.2008
Сообщений: 2,653
Do$, согласен, с библиотекой работать гораздо удобней, в том числе править блоки в редакторе блоков, а не в коде программы. Я организовал (по совету ShaggyDoc'a) программную вставку файла библиотеки блоков с немедленной отменой, то есть описания всех блоков в чертеже появляются, а физически он не вставляется. Только получалось так, что при очень большом весе файла библиотеки наблюдалось заметное подтормаживание работы кода. Поэтому пришлось делать несколько менее весомых файлов. И еще после выполнения кода в файле остаются описания всех блоков библиотеки, приходится чистить. При программной очистке после каждого запуска любой из функций также бывает заметно некоторое подвисание. Подумываю над тем, чтобы делать каждый блок отдельным файлом. и складывать их все в папку, прописанную в путях доступа.
LISP, C# (ACAD 200[9,12,13,14])
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,810
skkkk, будьте проще, сядьте на пол: используй ObjectDBX и через vla-copyobjects копируй описание блока. Достаточно элементарная задача. Другой вопрос, если тебе надо переопределять уже имеющийся блок - тогда да, тогда проще всего командные методы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc |
Посмотреть профиль |
Посетить домашнюю страницу Кулик Алексей aka kpblc |
Найти ещё сообщения от Кулик Алексей aka kpblc |
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Покопался в старых своих наработках, нарыл вот такую функцию:
(defun do$-block-from-library (file name / odbx block-filename) ;;(do$-block-from-library "blkLib.dwg" "ПРОФИЛЬ_Отметка") ;;Копирует ВСЕ описания блоков из указанного чертежа file в текущий, ;;и проверяет наличие указанного блока name в описаниях. (setq *do$-dir-path* (if *do$-dir-path* *do$-dir-path* "" ) ;_ end of if file (strcat *do$-dir-path* "\\" file) ) ;_ end of setq (or *do$-blocks* (setq *do$-blocks* (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)) ) ;_ конец vla-get-Blocks ) ;_ конец setq ;;(vlax-dump-Object *do$-blocks*) ) ;_ конец or (or (tblsearch "block" name) (and (setq block-filename (findfile file)) (setq odbx (_lispru-odbx)) (not (vl-catch-all-error-p (vl-catch-all-apply '(lambda () (vla-open odbx block-filename)) ) ;_ конец vl-catch-all-apply ) ;_ конец vl-catch-all-error-p ) ;_ конец not (progn (vl-catch-all-apply '(lambda () ;;Старая версия - копировала только указанное описание блока: ;| (vla-copyobjects odbx (vlax-safearray-fill (vlax-make-safearray vlax-vbobject '(0 . 0) ) ;_ end of vlax-make-safearray (list (vla-item (vla-get-blocks odbx) name ) ;_ конец vla-item ) ;_ end of list ) ;_ end of vlax-safearray-fill *do$-blocks* ) ;_ end of vla-CopyObjects (vlax-for item *do$-blocks* (setq lst (cons (vla-get-name item) lst))) |; (vlax-for blk (vla-get-blocks odbx) (if (not (wcmatch (vla-get-name blk) "`**")) (vla-copyobjects odbx (vlax-safearray-fill (vlax-make-safearray vlax-vbobject '(0 . 0) ) ;_ end of vlax-make-safearray (list blk) ) ;_ end of vlax-safearray-fill *do$-blocks* ) ;_ end of vla-CopyObjects ) ;_ end of if ) ;_ end of vlax-for ) ;_ конец lambda ) ;_ конец vl-catch-all-apply ) ;_ конец progn ) ;_ конец and ) ;_ конец or (if odbx (progn (vlax-release-object odbx) (setq odbx nil) ) ;_ конец progn ) ;_ конец if (tblsearch "block" name) ) ;_ конец defunЗдесь:
*do$-dir-path* - это путь от какой-либо папки поддержки автокада до папки с файлом DWG (библиотека блоков).
*do$-blocks* - это коллекция описаний блоков в текущем чертеже. Запоминал глобально для увеличения быстродействия, когда вставлял блоки по одному. В том виде, в котором функция сейчас, можно заменить на локальную переменную.
_lispru-odbx - функция из статьи Алексея.
Функция проверяет наличие блока в чертеже. Если блока нет - копирует блоки из библиотеки (все, кроме анонимных).
Работает и по сей день в каких-то моих старых программах__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)Создание атрибутов динамических блоков
Указание настраиваемых свойств для динамических блоков
Указание наборов значений для динамических блоков
Обзор настраиваемых свойств для динамических блоков
В редакторе блоков можно указать свойства для параметра в описании динамического блока. Некоторые из этих свойств можно отобразить как настраиваемые свойства для вхождения динамического блока, когда он находится на чертеже. Эти свойства отображаются в палитре "Свойства" в списке "Настройка". В редакторе блоков можно указать ярлыки параметров. При выборе на чертеже вхождения динамического блока эти свойства отображаются в списке "Настройка" в палитре "Свойства". Рекомендуется указать уникальные ярлыки параметров в блоке. В зависимости от параметров, используемых в описании динамического блока, другие свойства параметров могут быть перечислены в группе "Настройка" в палитре "Свойства" при выборе вхождения динамического блока на чертеже. Например, полярный параметр имеет свойство угла, которое отображается в палитре "Свойства". В зависимости от того, как динамический блок определен, эти свойства могут отображать такие значения, как размер, угол и положение для вхождения выбранного блока. Можно указать, должны ли эти настраиваемые свойства отображаться для вхождения блока при выборе его на чертеже. Эти свойства можно извлечь с помощью Мастера извлечения атрибутов. Можно также использовать палитру "Свойства" для указания свойств геометрии (таких, как цвет, тип линии и вес линии) параметра. Эти свойства перечисляются в палитре "Свойства" в списке "Геометрия" при выборе параметра в редакторе блоков. Другие свойства параметра, например, свойства "Набор значений" и "Цепочка операций", определяют, как вхождение блока будет работать на чертеже. В редакторе блоков также указывается, можно ли блок расчленить, и может ли он быть со сложным масштабом.
- Указание наборов значений для динамических блоков
- Разрешение цепочки операций для динамических блоков
- Указание ручек для динамических блоков
- Извлечение данных из атрибутов
Создание атрибутов динамических блоков
- Все форумы
- Технологический форум
- Машиностроение
- Металлургия
- Химия, нефтехимия и топливная промышленность
- Деревообработка
- Пищевая промышленность
- Животноводство, рыбоводство и растениеводство
- Другие темы
- Общие вопросы
- Промышленность стройматериалов
- Экология
- Охрана труда и техника безопасности
- Биржа труда
- Генеральные планы
- Сооружения транспорта
- Автомобильные дороги
- Железнодорожные пути
- Мостостроение
- Другие темы
- Общие вопросы
- Инженерные изыскания
- Биржа труда
- Архитектурные решения
- Дизайн интерьеров
- Ландшафтное проектирование
- Реконструкция и реставрация зданий
- Градостроительство
- Общие вопросы
- Другие темы
- Светотехника
- Биржа труда
- Основания и фундаменты, механика грунтов
- Конструкции железобетонные
- Конструкции деревянные
- Конструкции металлические
- Обследование и усиление строительных конструкций
- Ограждающие конструкции, кровли
- Общие вопросы
- Другие темы
- Строительная теплотехника
- Защита от шума и вибрации
- Программы ConstructorSoft
- Организация строительства и производства работ
- Биржа труда
- Классификация зданий, помещений и зон
- Пожарная сигнализация
- Общие вопросы
- Огнестойкость строительных конструкций
- Оповещение и эвакуация
- Водяное и пенное пожаротушение
- Газовое, порошковое и аэрозольное пожаротушение
- Дымоудаление
- Другие темы
- Огнеопасные свойства веществ и материалов
- Биржа труда
- Генерация электроэнергии
- Электрические подстанции
- Силовое электрооборудование
- Электроосвещение внутреннее
- Электроосвещение наружное
- Заземление и молниезащита
- Воздушные и кабельные ЛЭП
- Общие вопросы
- Другие темы
- Взрывозащищенное электрооборудование
- Электропривод и электрические машины
- Учёт электроэнергии
- Электропроводки и токопроводы
- Программы Beroes Group
- Релейная защита и автоматика
- Контактные сети
- Электроснабжение объектов
- Биржа труда
- Автоматика и телемеханика
- Локальные сети передачи данных
- Телевидение и радиовещание
- Общие вопросы
- Другие темы
- Телефония и другие системы связи
- Контроллеры и электроника
- Оптоволоконные сети передачи данных
- Видеонаблюдение и СКУД
- Охранная сигнализация
- Биржа труда
- Внутренние водопровод и канализация
- Наружные сети водоснабжения
- Наружные сети канализации
- Насосные станции
- Противопожарное водоснабжение
- Общие вопросы
- Другие темы
- Биржа труда
- Холодоснабжение
- Вентиляция
- Кондиционирование
- Воздухоснабжение
- Аспирация (пылеудаление)
- Общие вопросы
- Другие темы
- Биржа труда
- Тепловые станции
- Теплоснабжение
- Теплоизоляция оборудования и трубопроводов
- Тепломеханические решения котельных
- Отопление
- Устройства газоснабжения
- Общие вопросы
- Другие темы
- Биржа труда
- AutoCAD, AutoCAD LT и СПДС модуль Autodesk
- AutoCAD Civil 3D (Land Desktop), AutoCAD Map 3D и AutoCAD Raster Design
- Revit Architecture и AutoCAD Architecture
- Revit Structure, AutoCAD Structural Detailing и Autodesk Robot Structural
- Revit MEP и AutoCAD MEP
- Autodesk 3ds Max (Design), AutoCAD Freestyle и Autodesk Impression
- Autodesk Design Review, DWG TrueView, Autodesk DWF Writer, AutoCAD WS
- Autodesk Navisworks Products, Autodesk Vault Products
- AutoCAD Electrical
- AutoCAD Mechanical
- Autodesk Inventor
- AutoCAD P&ID, AutoCAD Plant 3D, Autodesk Intent
- Общие вопросы
- Другие программы Autodesk
- Общие вопросы
- Allplan
- GeoniCS
- CREDO
- Другие программы
- ArchiCAD
- DIALux
- MicroSoft Office
- nanoCAD и другое ПО от «Нанософт»
- T-Flex CAD и другое ПО от «Топ Системы»
- Компас и другое ПО от «Аскон»
- Программы Weisskrahe
- Стоимость строительно-монтажных работ
- Стоимость проектных работ
- Стоимость пусконаладочных работ
- Стоимость ремонтных работ
- Стоимость технического обслуживания
- Программное обеспечение для составления смет
- Другие темы
- Биржа труда
- Авторский надзор
- Архивы и делопроизводство
- Другие темы
- Общие вопросы
- Технический надзор
- Управление проектами
- Юридические вопросы
- Свободное общение, шутки, юмор
- Вопросы, замечания и предложения по сайтам
- Вопросы, замечания и предложения по форумам
- www.proektant.by
- Строительные калькуляторы и конструкторы
- Архив файлов
- Технологический
- Генплан и сооружения транспорта
- Архитектурный
- Строительный
- Пожарная безопасность
- Электротехнический
- Автоматизация, связь, сигнализация
- Водоснабжение и канализация
- Вентиляция, кондиционирование и холодоснабжение
- Теплоснабжение и газоснабжение
- Библиотека строительных норм и правил
- Библиотека строительства «Зодчий»
- Библиотека климатического оборудования
- Библиотека кафедры ТТГВ ТОГУ
- Все пользователи
- Кураторы подразделов
- Пользователи по регионам
- Посетившие форумы в течение суток
- Поиск пользователей
- Правила форумов
- Список всех подразделов
- Список всех тем
- Календарь
- Забыли пароль?
- Регистрация
- Помощь
ПОИСК ПО ФОРУМАМ
перед созданием новых тем используйте поиск,
возможно ответ на Ваш вопрос уже есть на форумах
- Технологический форум