Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Вопрос по макросам, привязка надписей (LeaderNote) к 2D проекциям
 
Пытаюсь сделать автоматическую привязку надписей к 2D проекциям, полученным по 3D модели. Надписи изначально привязаны в абсолютных координатах. Нужно привязать их к пересечению прямых, но так чтобы надписи остались на тех же местах. Соответственно, прямые нужно будет привязать к проекциям… В самом начале написания макроса столкнулся с проблемой: не могу определить абсолютные координаты стрелки и полки надписи. Мне даже кажется это невозможным, так как метод GetPointCount (Получение количества характерных точек объекта, в которых может быть построен узел) для надписей привязанных в абсолютных координатах возвращает 0. Пишу на C#.
Код:

foreach(LeaderNote lead in document.LeaderNotes)
{
if (lead.ArrowAttachmentType==LeaderNoteAttachmentType.Absolute)
{
count = lead.GetPointCount();
MessageBox.Show("" + Count);
}
}

Помогите плиз.
Кто ищет - тот всегда найдет!
 
Забыл пояснить для чего привел метод GetPointCount (Получение количества характерных точек объекта, в которых может быть построен узел). Просто напрямую получить координаты точек не получилось, вот и подумал, что если построить узелы привязав их к надписи, то можно будет получить координаты этих узлов, а значит и координаты точек надписи. Т.е. пытался подойти к проблеме с другого конца.
Кто ищет - тот всегда найдет!
 
а если привязывать проекцию к узлу на пересечении двух прямых? от этих прямых можно отложить еще две, к точке пересечения которых можно привязать надпись. относительно проекции надпись всегда будет на одном и том же месте
 
а вот как сразу получить координаты нужной точки (например, узла на пересечении двух прямых), мне и самому интересно...
 
Цитата
а если привязывать проекцию к узлу на пересечении двух прямых?...

Вобщем идея в этом и состоит :) . Только немного иначе: используя автоматически сгенерированную спецификацию проставляем позиции, надписи с позициями при этом проставляем в абсолютных координатах. Каждая проекция "обрамляется" прямоугольником, координаты (размеры) которого можно определить через API. Дальше по условию "если стрелка надписи лежит внутри прямоугольника и при этом проставлена в абсолютных координатах, то она привязывается к пересечению линий построения отложенных от базовых линий", базовые - те к пересечению которых привязана проекция. Но здесь кроме указанной выше проблемы у меня есть еще одна: как определить к чему привязана проекция, т.е. как я понимаю определить родительский объект проекции.
Я только 2 месяца назад начал изучать API и механизмом определения родительских объектов еще не научился пользоваться... Вообще было бы неплохо еслиб подобный макрос поставлялся вместе с T-Flex, идея то вроде толковая, да и востребованная... Но пока - прошу помощи. :)
Кто ищет - тот всегда найдет!
 
а зачем определять, к чему привязана проекция? если известно, что она привязана к конкретным линиям... и зачем задавать положение стрелок позиций в абсолютных координатах, их ведь можно привязывать к конкретным узлам? возможно, я чего-то недопонимаю...
p.s. а за макрос спасибо, буду разбираться :)
 
Цитата
а зачем определять, к чему привязана проекция? если известно, что она привязана к конкретным линиям...

Проекций может быть достаточно много и каждая привязана к разным пересечениям линий построения. Конструктор конечно знает к чему привязана каждая проекция, остается только "научить" это делать программу. Ведь нужно точно определить от каких линий построения откладывать параллельные линии, чтобы в последствии к пересечению этих параллельных привязывались надписи. Если линии привязки проекции будут определены неверно – то гарантии, что надписи вообще будут привязаны к проекции НЕТ!

Цитата
и зачем задавать положение стрелок позиций в абсолютных координатах, их ведь можно привязывать к конкретным узлам?

Конечно можно. Именно так сейчас конструктор и делает вручную. Вообще основная идея макроса – переложить эту работу на программу, чтобы программа сама привязывала (по определенному закону) надписи к проекциям. Что касается привязки надписей в абсолютных координатах, то тут 2 момента: 1. проставить в абсолютных координатах проще и быстрее, 2. если на чертеже уже есть надписи, «привязанные» к проекции, то они не будут перепривязываться, загромождая чертеж лишними линиями построения, т.е. при использовании надписей в абсолютных координатах легче задать критерий отделения надписей, нуждающихся в привязке от уже привязанных.
Кто ищет - тот всегда найдет!
 
а абсолютные координаты, к которым привязываются надписи, как вы их определяете?
 
В том то и дело, что никак пока не получается(см. 1-й пост). Общая идея и алгоритм есть, а вот в определении абсолютных координат загвоздка...
Кто ищет - тот всегда найдет!
 
я, кстати, думал, что если у меня в моем макросе не получится определять координаты узла напрямую, что придется делать так: ставить две перпендикулярные линии в координаты 0,0 и от них снимать размеры до нужного узла. тупо, конечно, но вроде реализуемо
Страницы: 1