пятница, 18 января 2013 г.

Мистический якорь в AutoCAD MEP

Autodesk AutoCAD MEP великолепный продукт, но иногда и он оказывается неподвластен пользователю или даже продвинутому пользователю.
Построение технологических трубопроводов связано с неотъемлемой необходимостью расстановки под ним опор. Опоры - это обычные детали из базы оборудования, но не обладающие точками врезки в трубу, а обладающие одной точкой вставки. Точка вставки расположена так, чтобы попадать на ось трубы соответствующего диаметра.
Выглядит в итоге это так:
По идеологии AutoCAD MEP, деталь оборудования, обладающая свойством Якорь элемента должна при вставке в чертеж обзаводиться соответствующим якорем. Свойство детали задается в окне настройки параметрического элемента:
Якорь - это невидимый объект, который хранит информацию о связи между двух объектов. В частности, информацию о способе привязки одного объекта к другому. Например, что опора привязана к определенной трубе с некоторым смещением от определенной точки трубы.
И вот тут начинается мистика. Сразу после вставки опоры в чертеж с привязкой к трубе, AutoCAD MEP создает якорь, информацию о котором можно увидеть в окне свойств:

Прекрасно. Опора вставлена. Якорь создан (назовем его якорем типа 1). Любые попытки перенести опору или трубу приведут к их совместному перемещению. Теперь два независимых элемента ведут себя как одно целое!
Но, иногда, по непонятным причинам, AutoCAD MEP теряет якорь или не устанавливает его при копировании опоры. И это не беда, ведь якорь можно создать с помощью команды Anchor, или AecAnchor, или, если быть еще более точным в нашем случае, AecCurveAnchor.


AECcurveanchor
Якорь к кривой [ВСтавить объект/Выбрать кривую/смещение по X/смещение по
Y/смещение по Z/Поворот/выбрать начало Кривой]: ВС
Выберите объект, к которому необходимо добавить якорь:
Выберите кривую:
Якорь к кривой [ВСтавить объект/Выбрать кривую/смещение по X/смещение по
Y/смещение по Z/Поворот/выбрать начало Кривой]:

Отлично. Создан новый якорь (назовем его якорем типа 2). Однако, открыв окно свойств мультивидового элемента станет понятно, что это какой-то другой якорь. По крайней мере, называется он иначе и описывается иными свойствами:
Хорошо еще, что поведение объектов остается таким же, т.е. с новым якорем они ведут себя так же, как влюбленная парочка. Но все равно, неизвестно, возможно, якорь типа 1 отличается от якоря типа 2.
Мне так и не удалось найти команду или подкоманду, которая бы создала якорь типа 1, поэтому, пришлось опять написать утилиту. В итоге, родилась даже не одна, а две команды в одном модуле MEPAnchorIt.

Команда MEPIsAnchored, позволяет отобразить в чертеже прикрепленные и открепленные детали.

_mepisanchored
Выберите объекты: найдено: 1
Выберите объекты: Противоположный угол: найдено: 1, всего: 3
Selected 3 objects.
Show [Anchored/Unanchored/eXit]: A
Anchored objects founded: 2
Show [Anchored/Unanchored/eXit]: U
Unanchored objects founded: 1
Show [Anchored/Unanchored/eXit]: X

Команда MEPAnchorIt, позволяет создать недостающий якорь между деталью и трубопроводом. Причем, программа не исправляет положение деталей, а только создает якорь.

Команда: _mepanchorit
Select pipe, flex pipe or part object:
Select anchorable part object:
Anchoring successed!
Если между деталями не может быть установлен якорь или детали уже обладают якорем, то в командной строке появится соответствующее сообщение.

Буду рад, если кому-то пригодится MEPAnchorIt!