Ballon

Программирование для CATIA.

Ballon

Сообщение bsfrc » 31 май 2012 10:51

Доброго всем дня! Скажите, кому-нибудь удавалось "русифицировать" balloon таким образом, чтобы стрелочка(Leader) рисовать бы не на границе детали, а не ней самой? При использовании кнопки Generate Balloons.
То есть как на рисунке:

Изображение
bsfrc
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 27 май 2011 09:36

Re: Ballon

Сообщение Wireless_Fidelity » 31 май 2012 14:20

Здравствуйте.

Такие вещи обычно настраиваются в стандартах (Tools-Standards). Посмотрите их исходные xml файлы, вдруг там что-то есть.
Также возможно написать скрипт, который бы передвигал конечную точку стрелочки чуть дальше по вектору её направления, тем самым удлинняя стрелочку и заставляя её указывать "внутрь" детали.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Ballon

Сообщение Artem » 31 май 2012 16:35

viewtopic.php?f=140&t=3304 воот тут тема обсуждалась
основная проблема - определение куда двигать точку - где внутри, а где снаружи - где мы скажем попадем в воздух или заедем на другую деталь, а где точка будет принадлежать нашей детали
вижу два способа без рейда -
1)Уже описанный способ (см. ссылка) подкраски контура с копированием/изоляцией вида и последующем его(контура) анализе (погуглите метод жука...)
2)"Массажная расческа/ежик" из перпендикуляров к плоскости вида в сборке с последующим анализом на clash (GetProjectionPlane и GetProjectionPlaneNormal у view вам в помощь). Если взять за центр данной конструкции точку стрелочки на контуре и шаг побольше - ее("расческу") можно сделать достаточно небольшой и скорость будет более менее приемлемой -можно уложиться в <10 перпендикуляров....
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Ballon

Сообщение bsfrc » 31 май 2012 17:39

Спасибо за ответ, оставлю я эти глупые мысли)
bsfrc
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 27 май 2011 09:36

Re: Ballon

Сообщение Artem » 01 июн 2012 08:16

Оберну и бантиком перевяжу - можно взять одну точку в 3D - центр тяжести детали.Ее координаты в 2D получаем через GetProjectionPlane и проекции(если все плохо с вышкой, то можно и первым способом,через подкраску). В результате имеем отрезок (точка стрелочки баллона на грани - центр тяжести) -вот по этому отрезку и смещаем. Есть конечно шанс попасть в отверстие или там на детальку, которая на данном виде перекрывает исследуемую - но это уже не пальцем в небо и достаточно дешево по скорости...
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Ballon

Сообщение bit » 01 июн 2012 10:44

Artem писал(а):Оберну и бантиком перевяжу - можно взять одну точку в 3D - центр тяжести детали.Ее координаты в 2D получаем через GetProjectionPlane и проекции(если все плохо с вышкой, то можно и первым способом,через подкраску). В результате имеем отрезок (точка стрелочки баллона на грани - центр тяжести) -вот по этому отрезку и смещаем. Есть конечно шанс попасть в отверстие или там на детальку, которая на данном виде перекрывает исследуемую - но это уже не пальцем в небо и достаточно дешево по скорости...

Тогда уже проще взять касательную к кривой в точке, построить перпендикуляр и смещать вдоль перпендикуляра. Направлени перпендикуляра +/- выбирать исходя из угла между выноской и касательной к кривой (считаем, линия выноски не перекрывает деталь)
В отличие от предыдущего случая, математика намного проще:
- Углы считаются API
- Перпендикуляр к вектору (X;Y) будет либо (Y;-X) либо (-Y;X)
bit
Участник
Участник
 
Сообщения: 166
Images: 3
Зарегистрирован: 24 июл 2008 11:45
Откуда: Минск

Re: Ballon

Сообщение Artem » 01 июн 2012 12:23

Не всем и не всегда использование api упрощает задачу, тем более можно обойтись без него(я не про углы - X/Y баллона и X/Y стрелки баллона вполне хватит для их определения - я про написанное ниже)....а вот отсутствие обращений к сборке это да, пожалуй, плюс....
Мне кажется телодвижений предстоит предстоит гораздо больше, чем в случае центра тяжести
1)каким образом строить/получить касательную в точке?
Итак ручными построениями: строим простую прямую и потом констрейнами делаем ее касательной к прямой в точке (если есть другой способ, то с удовольствием его выслушаю)
Предположим пойдем по этому пути -
2)Не уверен по поводу доступности на comе драфтинговых констрейнов, ну да ладно всегда есть api и/или catia.startcommand...
3) Каким образом получить для констрейна (или любой другой команды для построения касательной) в качестве входного параметра кривую на которой стоит наша стрелочка. Релятионсов же никаких...Замечу еще и что функционал для работы с generateditem отсутствует(если не рассматривать CAA\RADE) - даже selection.item(№).value возвратит view, а не кривую
в принципе решение есть - копия + изоляция вида + перебор кривых(теперь gi превратились в линии и доступны для com замеров -хотя опять же не уверен что в драфтинге они сработают, но если что можно воспользоваться api) и ТСБ (точки стрелочек баллонов) и анализ расстояния между ними...думаю сработает, но вот по поводу проще поспорю....
Ну и напоследок - расстояние на которое сдвигать задается вручную? А если промахнулись и сдвинули точку скажем на 20 мм при величинах детальки порядка скажем 5мм...в случае с Ц.Т. на это дело можно всегда поставить ограничения и предупредить человека о такой ситуации и/или автоматом смещать на дозволенное расстояние....
В таком уж случае можно воспользоваться первым способом предложенным Wireless_Fidelity - просто и без заморочек
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Ballon

Сообщение bit » 01 июн 2012 14:53

Artem писал(а):1)каким образом строить/получить касательную в точке?

Curve2D.GetTangent
bit
Участник
Участник
 
Сообщения: 166
Images: 3
Зарегистрирован: 24 июл 2008 11:45
Откуда: Минск

Re: Ballon

Сообщение Wireless_Fidelity » 01 июн 2012 15:10

Как правильно заметил Артём, GeneratedItem невозможно автоматизировать. Никакая Curve2D не получается. И даже автоматизировать GI через WinAPI нельзя: единственный способ выделить сгенерированную геометрию это использовать Selection.Search, а поскольку отдельные элементы не имеют уникального имени, то выбираются сразу все. Selection.Item.Value, как было сказано выше, возвращает DrawingView.

Хочу также отметить важный момент, про который часто забывают при обсуждении скриптов для Drafting'а. В случае, если модель содержит сложные/крупные детали, генерация вида занимает несколько минут. В этом случае решения, базирующиеся на его пересоздании (раскраска, изоляция и пр.) оказываются попросту говоря нежизнеспособны по причине удручающе медленной скорости работы.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Ballon

Сообщение Artem » 01 июн 2012 15:21

ок - тогда алгоритм упрощается - основной задачей становится сопоставление кривой и баллона...
Ps. вместо копии вида/его изоляции можно сделать поиск всех gi + dublicate geometry.....ну и первоначально, если есть 2D построения пройти по ним селектом и в массив - тогда не запутаешься кто новенький, кто старенький
Pps.500-1000 деталей не мгновенно конечно, но жить можно
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron