Страница 1 из 1
Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 13:12
file
Добрый день.
Возникла необходимость прочитать значения текстовых блоков callout'а на чертеже. Требуется "вытянуть" именно из текстового блока содержимое (например, для Detail view - "DETAIL A"; для Section view (видимо будет два блока с одинаковым содержанием) - "B").
Подскажите возможное решение, пожалуйста.
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 14:05
bit
С++ или automation (VB)?
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 15:37
file
Automation
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 16:07
file
Нашел "ручное" решение:
1. Определить все callout'ы
2. Поочередно выделять каждый callout и среди него искать текстовые блоки.
Но автоматизировать почему-то не получается.
Пример кода (C#):
- Код: Выделить всё
string _filter = "Drafting.Callout;scr";
_drawing_document.Selection.Clear();
_drawing_document.Selection.Search(ref _filter);
if (_drawing_document.Selection.Count > 0)
{
List<INFITF.AnyObject> _lst_callouts = new List<INFITF.AnyObject>();
for (int i = 1; i <= _drawing_document.Selection.Count; i++)
{
INFITF.AnyObject _ao =
(INFITF.AnyObject)_drawing_document.Selection.Item(i).Value;
_lst_callouts.Add(_ao);
var v = _ao.get_Name(); // Вот здесь выясняется, что в _ao не callout, а DrawingView, которому принадлежит callout
}
...

Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 17:14
Artem
в случае чего вспоминаем про альтернативу -
viewtopic.php?f=140&t=3723
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 17:15
file
Про альтернативу я помню, но перебирать все текстовые блоки - долгий вариант..
Я не понимаю, почему не получается автоматизировать "ручной" вариант...
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 17:26
Artem
callout походу от одного предка с GeneratedItem( или вообще от него унаследован )- та же ситуация, так что наверное придется через текст.
дополнительные свойства анализируй - шрифт наличие одной стрелки, оконцовку стрелки + текст(он же наверное из 1 буквы будет?)...а уже потом чекаем то или не то через селекшн+статусбар - отсеешь мне кажется большинство левого текста (если считаем проход по текстам и их свойствам "легкой" операцией а выделение и статус - тяжелой по времени)
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 17:37
file
К сожалению, никаких специфических атрибутов нет.. Но мне нужна гарантия, что текст принадлежит callout'у. Придется прибегать к альтернативе..
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 18:01
Artem
еще одна альтернатива
- Код: Выделить всё
Sub CATMain()
Dim drawingDocument1 As DrawingDocument
Set drawingDocument1 = CATIA.ActiveDocument
Dim selection1 As Selection
Set selection1 = drawingDocument1.Selection
'получаем список видимой текстовки через selection1.Search "CATDrwSearch.DrwText.Visibility=Visible,all"
selection1.Search "CATDrwSearch.DrwCallout,all"
Call selection1.VisProperties.SetShow(catVisPropertyNoShowAttr)
'а тут анализ текста который стал скрытым
Call selection1.VisProperties.SetShow(catVisPropertyShowAttr)
End Sub
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 19:00
Artem
я ступил - наверное это старость....или пора прекращать пить (((
selection1.Search "CATDrwSearch.DrwCallout,all"
selection1.Search "CATDrwSearch.DrwText,sel"
Re: Как получить значение текстовых блоков объекта Callout?

Добавлено:
17 дек 2012 20:19
file
Странно, с текстовыми блоками такое проходит... То же самое пытался реализовать на callout'ах (
http://www.plm-forum.ru/forum/viewtopic.php?f=140&t=3824&p=23138#p23127) чтобы потом для каждого callout'а получить тексты. Ладно.. По крайней мере текст. блоки определены. Осталось их приписать к соответствующим callout'ам
