Страница 1 из 1
Ballon

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

Re: Ballon

Добавлено:
31 май 2012 14:20
Wireless_Fidelity
Здравствуйте.
Такие вещи обычно настраиваются в стандартах (Tools-Standards). Посмотрите их исходные xml файлы, вдруг там что-то есть.
Также возможно написать скрипт, который бы передвигал конечную точку стрелочки чуть дальше по вектору её направления, тем самым удлинняя стрелочку и заставляя её указывать "внутрь" детали.
Re: Ballon

Добавлено:
31 май 2012 16:35
Artem
viewtopic.php?f=140&t=3304 воот тут тема обсуждалась
основная проблема - определение куда двигать точку - где внутри, а где снаружи - где мы скажем попадем в воздух или заедем на другую деталь, а где точка будет принадлежать нашей детали
вижу два способа без рейда -
1)Уже описанный способ (см. ссылка) подкраски контура с копированием/изоляцией вида и последующем его(контура) анализе (погуглите метод жука...)
2)"Массажная расческа/ежик" из перпендикуляров к плоскости вида в сборке с последующим анализом на clash (GetProjectionPlane и GetProjectionPlaneNormal у view вам в помощь). Если взять за центр данной конструкции точку стрелочки на контуре и шаг побольше - ее("расческу") можно сделать достаточно небольшой и скорость будет более менее приемлемой -можно уложиться в <10 перпендикуляров....
Re: Ballon

Добавлено:
31 май 2012 17:39
bsfrc
Спасибо за ответ, оставлю я эти глупые мысли)
Re: Ballon

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

Добавлено:
01 июн 2012 10:44
bit
Artem писал(а):Оберну и бантиком перевяжу - можно взять одну точку в 3D - центр тяжести детали.Ее координаты в 2D получаем через GetProjectionPlane и проекции(если все плохо с вышкой, то можно и первым способом,через подкраску). В результате имеем отрезок (точка стрелочки баллона на грани - центр тяжести) -вот по этому отрезку и смещаем. Есть конечно шанс попасть в отверстие или там на детальку, которая на данном виде перекрывает исследуемую - но это уже не пальцем в небо и достаточно дешево по скорости...
Тогда уже проще взять касательную к кривой в точке, построить перпендикуляр и смещать вдоль перпендикуляра. Направлени перпендикуляра +/- выбирать исходя из угла между выноской и касательной к кривой (считаем, линия выноски не перекрывает деталь)
В отличие от предыдущего случая, математика намного проще:
- Углы считаются API
- Перпендикуляр к вектору (X;Y) будет либо (Y;-X) либо (-Y;X)
Re: Ballon

Добавлено:
01 июн 2012 12:23
Artem
Не всем и не всегда использование 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 - просто и без заморочек
Re: Ballon

Добавлено:
01 июн 2012 14:53
bit
Artem писал(а):1)каким образом строить/получить касательную в точке?
Curve2D.GetTangent
Re: Ballon

Добавлено:
01 июн 2012 15:10
Wireless_Fidelity
Как правильно заметил Артём, GeneratedItem невозможно автоматизировать. Никакая Curve2D не получается. И даже автоматизировать GI через WinAPI нельзя: единственный способ выделить сгенерированную геометрию это использовать Selection.Search, а поскольку отдельные элементы не имеют уникального имени, то выбираются сразу все. Selection.Item.Value, как было сказано выше, возвращает DrawingView.
Хочу также отметить важный момент, про который часто забывают при обсуждении скриптов для Drafting'а. В случае, если модель содержит сложные/крупные детали, генерация вида занимает несколько минут. В этом случае решения, базирующиеся на его пересоздании (раскраска, изоляция и пр.) оказываются попросту говоря нежизнеспособны по причине удручающе медленной скорости работы.
Re: Ballon

Добавлено:
01 июн 2012 15:21
Artem
ок - тогда алгоритм упрощается - основной задачей становится сопоставление кривой и баллона...
Ps. вместо копии вида/его изоляции можно сделать поиск всех gi + dublicate geometry.....ну и первоначально, если есть 2D построения пройти по ним селектом и в массив - тогда не запутаешься кто новенький, кто старенький
Pps.500-1000 деталей не мгновенно конечно, но жить можно