Создание марок и что нужно помнить при создании семейства

Печать

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Стояла передо мной задача - проставить марки для 2D-семейств, представляющих собой арматурный каркас. Основная загвоздка при этом - нужно создать несколько марок, которые будут расположены в одной точке. По картинке, думаю, понятнее:

blog1 1

Изучив немного справку я сделал такой вот код:

using (var tr = new Transaction(_doc, "Create tags"))
{
    var pt = new XYZ((filteredCageList.Last().LongitudinalReinf.AllX.Max() + filteredCageList.Last().LongitudinalReinf.AllX.Min()) / 2, allY.Max() + offset, 0.0);
    tr.Start();
    IndependentTag tag = _doc.Create.NewTag(_doc.ActiveView, cage.FamilyInstance, true, TagMode.TM_ADDBY_CATEGORY, TagOrientation.Horizontal, pt);
    if (tag != null)
    {
        var bb = _doc.GetElement(tag.GetTypeId()).get_BoundingBox(_doc.ActiveView);
        tag.LeaderEndCondition = LeaderEndCondition.Free;
        tag.LeaderElbow = pt; var off = new XYZ(0.5 * _doc.ActiveView.Scale * (bb.Max.X - bb.Min.X), 0, 0);
        tag.TagHeadPosition = tag.LeaderElbow + off;
    }
    tr.Commit();
}

Не обращайте внимание на код получения точки pt - это не важно в данной теме.

Примечание: Для 2018 Ревита создание марки выполняется уже немного по-другому

Однако при запуске своего плагина я получал вот такой результат:

blog1 2

Сначала, что логично, я пытался найти ошибку в коде, но я не мог этого сделать, так как в коде нет ошибок!

Так в чём проблема? А проблема в неправильно созданном семействе!

Когда я открыл семейство этой марки, то увидел следующее:

blog1 3

А точнее - не увидел. Не увидел я стандартных опорных плоскостей, которые есть в стандартном шаблоне семейства и которые пересекаются в начале координат! А в данном семействе начало координат семейства не совпадает с условным началом координат, которое мы видим в точке пересечения вспомогательных линий.

В итоге - при работе с таким семейство пользователь никаких трудностей не испытает, так как работать марка будет нормально. А вот программист испытает трудности и при этом не сможет их решить!

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

Вывод: При создании семейств никогда не удаляйте опорные плоскости, которые изначально существуют в шаблоне семейства!

Tags: ,