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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Как динамически связать объекты (блоки) в чертеже?

Как динамически связать объекты (блоки) в чертеже?

Ответ
Поиск в этой теме
Непрочитано 15.12.2017, 21:33 #1
Как динамически связать объекты (блоки) в чертеже?
Arhi78
 
Регистрация: 05.12.2009
Сообщений: 72

Есть ли возможность синхронизировать два блока между собой? Или другие объекты?
То есть, есть два вхождения одного и того же блока в чертеж. Как сделать чтобы при изменении свойств (желательно не всех, а только определенных) одного блока они автоматически передавались другому или группе других, каким-то (неизвестным мне) способом связанных?

Простая подстановка формулы в свойства другого блока не проходит
%<\AcObjProp Object(%<\_ObjId 2129639800>%).Parameter(44).UpdatedAngle \f "%au5">%
и не жаль, потому что свойств много, а это очень скрупулезная операция.

Последний раз редактировалось Arhi78, 15.12.2017 в 21:46.
Просмотров: 5389
 
Непрочитано 15.12.2017, 22:28
| 1 #2
Кулик Алексей aka kpblc
Moderator

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


Выделить блоки, вызвать палитру свойств и устанавливать то, что надо.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.12.2017, 22:31
#3
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


Согласен - Тогда следующий вопрос - как при выборе объекта задать маску выделения? (Чтобы нужные объекты выделялись одновременно?) Select Similar по всему чертежу работает или по области - а если нужные объекты через один расположены?
====
Нашел. Команда _GROUP. Деревянненькая... Разумеется стрелочки от блоков скрываются... это ж автокад =)
Я вообще не нашел чем эта команда лучше чем сделать блок с кучей блоков внутри и править его refedit'ом Неудивительно что я за свои 13ть лет использования даже не слышал о ней.

И что делать если свойства объекта задаются ручками с чертежа? Копировать значения из одного в свойства группы? А точность при копировании? Выставить в опциях максимальную и везде созерцать 13ть знаков после точки? Жесть... я начинаю злиться.
Конечно я не буду ставить 13ю точность... придется задавать эти значения с помощью встроенного калькулятора. Неудобно?! - это уже не то слово...

ПС Если не затруднит, подскажите пожалуйста, как объединить на одну кнопку команду Explode и Ungroup... То есть: IF выбрана (group) то _ungroup ELSE _explode
...не понимаю автодесковцев, которые решили разделить эти команды. Свои выводы на этот счет постараюсь не озвучивать.

Последний раз редактировалось Arhi78, 16.12.2017 в 02:45.
Arhi78 вне форума  
 
Непрочитано 16.12.2017, 14:08
#4
VVA

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


Цитата:
Сообщение от Arhi78 Посмотреть сообщение
Если не затруднит, подскажите пожалуйста, как объединить на одну кнопку команду Explode и Ungroup
Разгруппировать объекты
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 16.12.2017, 14:21
#5
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


Цитата:
Сообщение от VVA Посмотреть сообщение
Это к чему ответ? У меня нет проблем с разгруппировкой. Есть проблема что _ungroup и _explode команды разные физически. Хотя по смыслу... да что там по смыслу - при выполнении она пишет "group exploded" и в описании первое слово "Explode"
Но команды разные, спасибо автодеск - очень удобно работать с группами, они просто как единое целое с остальным.

Мне надо DIESEL выражение для этой комбинации, если не сложно. Спасибо.
Ладно, я как понял команда _ungroup очень капризная, да и выражение не представляется коротеньким. А доп лисп ради стремных групп грузить не хочется... Видно не судьба...

====
Подскажите можно ли как-нить выпендриться и сделать так чтобы при выборе определенных объектов в составе группы - выделялась вся группа, иначе отдельный элемент? Тыкать pickstyle поднадоело...
Посмотрел обучение - у кого-то Ctrl+клик или двойной клик игнорирует PICKSTYLE - у меня это сломано - как починить?

Последний раз редактировалось Arhi78, 17.12.2017 в 10:04.
Arhi78 вне форума  
 
Автор темы   Непрочитано 24.12.2017, 18:57
#6
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


А не знает ли кто-нибудь как расширить возможности команды _matchprop = КОПИРОВАТЬСВ = копирование свойств.
Стандартно она использует только небольшой набор = "К свойствам, которые можно скопировать, относятся цвет, слой, тип линии, масштаб типа линии, вес линии, стиль печати, прозрачность и другие заданные свойства."

Как попросить эту команду копировать еще и пользовательские свойства - как то atributes, custom и прочее?
Может есть надстройки?
Можно ли создать лисп для этих целей?
Arhi78 вне форума  
 
Непрочитано 24.12.2017, 21:37
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,040


вэлком в программирование)
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.12.2017, 22:11
#8
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
вэлком в программирование)
Спасибо за приглашение, но я и уже. Вы уточните на чем?
Не знаю можно ли тут ссылками делится: нашел код .net который описывает подобный случай для db объектов.
Но дотнет меня не сильно прельщает, мне бы знать возможности перед тем как порог переступать, а то еще дверью ошибиться могу.

Из шокирующего: узнал что _matchprop полноценно работает с объектами СПДС без бубна.
Arhi78 вне форума  
 
Непрочитано 24.12.2017, 22:21
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,040


Смотря что хотите автоматизировать, есть ли какие-нибудь базовые навыки в программировании (на первых курсах многих технических вузов дают азы программирования). Кто питон рекомендует, кто C# (и на нем большинство примеров) и т.д. А может захотите исправить несовершенство акада, окунувшись в С++ и ObjectARX)

----- добавлено через ~7 мин. -----
и это будет уже другая ветка форума - здесь про сам акад)
Сергей812 вне форума  
 
Автор темы   Непрочитано 24.12.2017, 22:58
#10
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


С лиспом, значит, говорите не связываться =)))
Соглашусь с Вами, ветку форума пора менять. Тут даже костылей не предлагают... на своих приходишь и со своими же гулять идешь - еще и синяков добавят.

Спасибо за приглашение, но, наверно, в свете последних событий, схожу сначала к СПДСовцам и посмотрю на их параметрические объекты хотя бы одним глазком. До конца года определюсь +)

Последний раз редактировалось Arhi78, 24.12.2017 в 23:05.
Arhi78 вне форума  
 
Непрочитано 25.12.2017, 00:16
#11
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,040


Цитата:
Сообщение от Arhi78 Посмотреть сообщение
С лиспом, значит, говорите не связываться =)))
например, на лиспе трудно делать диалоги с развитым функционалом. Можно делать диалоги на других языках программирования и вызывать из лиспа, но это надо знать уже два языка, да и опять - костыли получаются. А почему ничего не советовали - вы каким то своим путем идете, создаете какие то навороченные блоки, потом пытаетесь приставлять к ним костыли - а совершенство в простоте, как говорят мудрые люди) А, например, решить задачу
Цитата:
Сообщение от Arhi78 Посмотреть сообщение
Как попросить эту команду копировать еще и пользовательские свойства - как то atributes, custom и прочее?
можно фактически на любом языке программирования.
Сергей812 вне форума  
 
Автор темы   Непрочитано 25.12.2017, 14:31
#12
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


Смотрите, я сейчас стою перед выбором - от приемлимого для меня способа работы с блоками, которые клепал в течении последних двух недель отделяет один штрих - _matchprop надблоков с блоками на блоки внутри надблоков. Простым решением для меня было бы, я думаю, лисп приложение. Беда в том что лисп мне давался тяжко, после pascal'я и asm'ы под DOS'ом, атомы я никак не мог воспринять еще во времена 2000го акада... ObjArx ближе для меня, но он сложнее и тяжелее в работе чем autolisp.

Создать их все было не сложно - методом проб и ошибок ушло где-то дня 4 - целых вечеров если быть точнее.
...А вот, дней 10 я потратил на проекции, никак по началу не удавались замены оператора IF набором предложенных autodeck'ом - я победил...
И, как оказалось, сейчас я не могу использовать эти проекции из-за их непродуманного пересчета их автокадом при любых действиях - от выделения до наведения =) ... динамическая связь их с друг-другом отсутствует, ну и обычный _matchprop на динамические блоки = полный провал.
Поставить костыль могу, но этот костыль уберет удобный способ редактирования и превратит один блок в 10 - то есть деградирует. Но работоспособным останется... на 2 балла из 5ти... Еще проблемы с вытаскиванием атрибутов... но костыль уже вроде есть на это.

http://forum.dwg.ru/attachment.php?a...1&d=1514201118

Так вот, пара блоков - есть еще куча - с разным количеством углов, разными направлениями и прочим.
Поиграйтесь с ними по отдельность - они нормальные даже на моих 4.9 индексе по процессору и памяти ... но, как говорил Задорнов, пока вместе не соберутся.
Очень хотелось бы узнать Ваше мнение по блокам.
(У меня бывает иногда лаг при старте автокада - чтобы не фризило надо зайти в bedit после открытия файла и выйти из него без изменений - поможет)
...Я бы не меньше вечеров потратил на задание геометрии таких блоков, используя программирование, а разбирательство с этим программированием по времени, съело бы еще раза в 4 больше времени.


PS Да, о чем я - способов два - это программа для _matchprop, о чем я уже сказал - а второй это всю геометрию нарисованную мной в автокаде перенести в СПДС параметрические объекты, но с ними еще надо подразобраться... От первого меня ломает что лиспа я не знаю, а C# у меня на компе никогда не было. А от второго ломка ввиду полного отсутствия работы со слоями. Если закрыть глаза на ломку, то второй вариант я сделаю быстрее и проще... Чем собственно и занимаюсь сейчас.
А совершенство, да, в простоте
Вложения
Тип файла: dwg
DWG 2013
SC-00+20.dwg (210.7 Кб, 77 просмотров)
Arhi78 вне форума  
 
Непрочитано 25.12.2017, 15:06
1 | #13
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Цитата:
Сообщение от Arhi78 Посмотреть сообщение
Как сделать чтобы при изменении свойств (желательно не всех, а только определенных) одного блока они автоматически передавались другому или группе других, каким-то (неизвестным мне) способом связанных?
Я лисп для этого находил и синхронизировал все нужные данные у выбранных блоков, щас освобожусь поищу...
Количество дин. блоков приличное, но бук core i5 спокойно обрабатывал...
Offtop: Короче для проектирования КМ создавал прокат, заполнял таблицы блока данными из ГОСТ, сохранял на палитре...
Для редактирования выбирал нужный прокат лиспом (см. выше) менял данные, обновлял таблицы...

PS
При увольнении раскрыл блоки, для ста-а-а-рого железа и софта, не жаловались...
PS
Какой-те _matchprop!, тебе по параметрам дин. блоки надо выбирать и синхронизировать

Последний раз редактировалось VitalyAF, 25.12.2017 в 15:40.
VitalyAF вне форума  
 
Непрочитано 25.12.2017, 15:10
#14
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Нда... посмотрел блоки. Если я правильно понял, то Вы хотите получить объект, в которым можно было бы нарисовать трубу/арматурину в двух проекциях сразу.
ИМХО, использование дин блоков для этой затеи не самое лучшее решение, но возможны варианты:

1. Своя команда или хук на команду _matchprop и меняйте свойства выделенных блоков как хотите.
2. Переопределение внешнего вида объектов автокада, проблема в том, что без программы переопределения не будет и заказчик, получивший Ваш чертеж, увидит только базовый объект, но можно закостылить - взрывая объекты перед отправкой.
3. Собственные объекты. Тут возможны варианты: анонимные блоки, MultiCAD API или C++ и ObjectARX.

В любом случае писать код придется.

ЗЫ.
Если Вы используете Автокад под Windows, то компилятор C# у Вас на компе есть с годика 2005, а то и раньше.
Boxa вне форума  
 
Автор темы   Непрочитано 25.12.2017, 15:37
#15
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


VitalyAF
Cупер! Вещь! Несите! Спасибо, то что нужно! Подредактировать, я думаю смогу! Спасибище! Палитра вообще огонь.

Boxa, да и арматура тоже. Моя задача с объектов параметрически получать точные проекции на нужное сечение разреза (оно не всегда по нормали). До параметрических объектов в автокаде я не мог работать с дугами (признаться я и сейчас не могу их в 0 превратить или сделать линией). Теперь дуги нормально трансформируются и проецируются, всего за два вечера =)
Очень много времени по работе уходит ручками построить по правилам начертательной геометрии точное сечение в нужном месте, ну и спецификации на это дело... С квадратными объектами бывает тоже не просто.
Да, я уже с неделю как понял что не самое лучшее решение, однако удачно и относительно быстро и легко получилось это сделать. Все работает, через граничные условия перескакивает без ошибок. Один раз можно даже в прямую выпрямить, но ругаться будет и придется резет блок делать после этого.

Вот видите насколько я далек от реального программирования +) Все что вы перечислили это конечно хорошо, на я как хобби программирование давно забросил - я металлорежущие станки по вечерам ремонтирую. А тут по работе просто писец как надоело делать одно и тоже - изменения очень и очень трудозатратны.

Почему-то все молчат про СПДС объекты...

Цитата:
Сообщение от VitalyAF Посмотреть сообщение
PS
Какой-те _matchprop!, тебе по параметрам дин. блоки надо выбирать и синхронизировать
Да, так и надо. Я такой вариант не описывал, потому что не догнал. Я последовательный - так как геометрия задается ручками: надо сначала изменить блок, а потом к группе блоков применить установки. Вот такая исковерканная динамическая связь...

Последний раз редактировалось Arhi78, 25.12.2017 в 15:53.
Arhi78 вне форума  
 
Непрочитано 25.12.2017, 16:13
1 | #16
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Цитата:
Сообщение от Arhi78 Посмотреть сообщение
Почему-то все молчат про СПДС объекты...
А что про них говорить... всем хороши, но не у всех заказчиков есть СПДС, как передавать,
вот в чём промблема...
PS
Offtop: Хотя в свете последних полит. событий - частный, дозированный трафик интернет...
со всеми вытекающими... бежать надо к отечественному софту пока не поздно,
и вообще данные свои убрать с облаков, по крайней мере зарезервировать...Китайцы в этом плане молодцы, всё своё давно!!!

PS
Обещанные лиспы, ssd.lsp использовал как основной...
Если есть вопросы, пишите. Но подробно могу позднее, в праздники рассказать, запарка на работе...
Вложения
Тип файла: lsp ssd.lsp (5.6 Кб, 42 просмотров)
Тип файла: lsp dynmatch.lsp (2.7 Кб, 47 просмотров)
Тип файла: lsp fdp.lsp (3.1 Кб, 38 просмотров)

Последний раз редактировалось VitalyAF, 26.12.2017 в 10:14.
VitalyAF вне форума  
 
Автор темы   Непрочитано 26.12.2017, 12:50
#17
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


Спасибо. Как сможете так ответите.

dynmatch = шикарно работает
fdp - как я понял определяет блоки с одинаковым свойством. Работает настолько точно и хорошо, что не работает =) Проблема в том что динамические параметры блоков могут отличатся на 0.1*10^13 - особенности автокада похоже... Но введя дополнительные статичные переменные в блоки fdp становится хорошим помошником.
ssd - в свою очередь ищет блоки со свойствами - куча моих user parameters в блоках мешает использовать этот лисп.
Arhi78 вне форума  
 
Непрочитано 26.12.2017, 13:34
#18
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Цитата:
Сообщение от Arhi78 Посмотреть сообщение
ssd - в свою очередь ищет блоки со свойствами - куча моих user parameters в блоках мешает использовать этот лисп.
... у меня на 2-3 параметра больше, чем у вас + несколько таблиц в каждом блоке...
Цитата:
dynmatch = шикарно работает
да, но по одному, взять несколько блоков невозможно.
А вот ssd.lsp начинаешь ценить со временем, когда одного блока в чертеже становится до фига, но с разными параметрами
типичная ситуация в КМ, и тут поступает команда поменять толщину или марку стали или ещё какую-нить фиговину у некоторых поз. с целью уменьшить общий вес конструкции,
а модель уже собрана в 3-4-х проекциях + несколько разрезов, фасадов и видов (не 3d! ), ... т.е. всё заново начинать!
С пом. ssd за несколько взмахов можно всё это поменять + обновить автоматом маркировку и таблицы +
получить удовольствие от проделанной работы, что немаловажно!!!
PS
Проекты пока не могу найти, если не удалил, палитры есть с универсальными дин. блоками, марками и прочим добром, собранным на этом форуме и заточенным для проектирования чертежей марок КМ, кому нать, обращайтесь...
fdp.lsp если это она, помню, что было три основных,
она не всегда срабатывает, т.к. бета, но выручает, когда первые две не могут! Надо глянуть, нет ли обнов...

Последний раз редактировалось VitalyAF, 26.12.2017 в 13:41.
VitalyAF вне форума  
 
Автор темы   Непрочитано 26.12.2017, 14:03
#19
Arhi78


 
Регистрация: 05.12.2009
Сообщений: 72


Так я же свои блоки использую в составе надблоков и изменяю его через refedit, поэтому dynmatch идеальный костыль для меня. Теперь все летает в чертеже. Да, в идеале можно еще уменьшить количество операций при внесении изменений еще в 3...5 раз. Но я уже добился того чего хотел - теперь чертежи у меня будут полу-параметрические и внесение изменений это не пол дня, а пол часа от силы. Ну и самое главное - я теперь четком могу по времени предугадать сколько у меня отнимет то или иное изменение.

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

PS Жаль я не умею буржуйским поиском пользоваться, чтобы находить вот такие вот лиспы... Теперь по названию смогу обновления поискать.
PSS С ssd буду разбираться. Еще впереди. Спасибо!

Последний раз редактировалось Arhi78, 26.12.2017 в 14:15.
Arhi78 вне форума  
 
Непрочитано 27.12.2017, 15:20
#20
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,225


Цитата:
Сообщение от Arhi78 Посмотреть сообщение
Жаль я не умею буржуйским поиском пользоваться
...сначала надо прочитать о чём речь идёт, потом уже искать...
Offtop: авторы обычно подписывают свои lsp, открой ssd.lsp, dynmatch и многое другое на www.lee-mac.com
VitalyAF вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Как динамически связать объекты (блоки) в чертеже?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD 2013: Как выделить и удалить объект в различных блоках, без "входа" в блоки? DIN536 AutoCAD 9 09.03.2015 15:09
Как взорвать абсолютно все на чертеже (размеры, блоки (вложенные блоки))? dahan AutoCAD 2 18.02.2015 16:08
пользовательские объекты, Custom Objets, параметрические блоки АлексЮстасу AutoCAD 32 21.09.2011 23:32
Некоторые объекты на чертеже нельзя перенести Wind AutoCAD 7 08.04.2011 18:44
Объекты и блоки с помощью команды fields Strannyk AutoCAD 2 17.05.2010 11:24