Cвойства DrawingDimension

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

Cвойства DrawingDimension

Сообщение MisterX » 14 апр 2009 14:46

Всем доброго времени суток,

поискал по форуму, вроде бы не нашел следующей информации...

Очень хотелось бы автоматически заменять размер шрифта всех проставленных в чертеже размеров, однако такого свойства SetFontSize как например у объекта DrawingText, у объекта DrawingВшьутышщт нет, через Selection к шрифту размера добраться тоже не удалось...
Может кто-нибудь подскажет как к нему добраться другой дорогой?
Учи матчасть.
Аватара пользователя
MisterX
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 02 окт 2007 23:56

Re: Cвойства DrawingDimension

Сообщение Artem » 17 апр 2009 15:42

Однако если заграница поможет завести этот код проставляемся напополам:
Код: Выделить всё
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Declare Function SFS Lib "CATAnnotationModeler" Alias "?SetFontSize@CATDrwAnnCompTextProperties@@UAEJABN@Z" (ByVal adress As Long, ByVal data As Double) As Long

Sub CATMain()
Dim drawingDocument1 As DrawingDocument
    Set drawingDocument1 = CATIA.ActiveDocument
    Dim selection1 As Selection
    Set selection1 = drawingDocument1.Selection
   
    Dim aa As SelectedElement
    Dim dd As DrawingDimension
    Dim ss As DrawingDimValue

    selection1.Search "CATDrwSearch.DrwDimension,all"
    Set aa = CATIA.ActiveDocument.Selection.Item(1)
    Set dd = aa.Value
    Dim lb As Long, pa As Long
lb = LoadLibrary("CATAnnotationModeler")
MsgBox pa
pa = GetProcAddress(lb, "?SetFontSize@CATDrwAnnCompTextProperties@@UAEJABN@Z")
MsgBox pa
Dim d1 As Long
Dim d2 As Long
d2 = ObjPtr(dd) 'VarPtr тож нифига не хочетт
Dim d3 As Double
d3 = 12.4
ssss = CallWindowProc(pa, 0, ByVal d2, ByVal VarPtr(d3), ByVal 0&)
FreeLibrary lb
End Sub

клик ок ту терминейт однако :dash1:
Последний раз редактировалось Artem 17 апр 2009 16:18, всего редактировалось 1 раз.
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Cвойства DrawingDimension

Сообщение booSter » 17 апр 2009 15:50

2-Artem
Поправь пост плз., а то он не совсем читабельный.
Спасибо :good:
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: Cвойства DrawingDimension

Сообщение Artem » 17 апр 2009 16:00

В примере (рейде) CATIDrwDimDimension для этого дела приводиться к CATIDrwTextProperties...Хмм может GetValue у DrawingDimension попробовать.....(кой возвращает тип DrawingDimValue - собственно урезанная по функционалу работа с текстом размера ведется через него)
В CATDraftingInterfaces.dll - где собственно обьявлены все обьекты драфтинга методов для их обработки не обнаружено. На CATAnnotationModeler -вышел через .dic файл....Есть подозрение зря....Может капнуть другую длл?
Последний раз редактировалось Artem 17 апр 2009 16:06, всего редактировалось 1 раз.
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Cвойства DrawingDimension

Сообщение booSter » 17 апр 2009 16:01

Для того чтобы дёрнуть за CATDrwAnnCompTextProperties::SetFontSize в памяти должен уже существовать правильно инициализированный экземпляр CATDrwAnnCompTextProperties. Собственно указатель на этот экземпляр нужно передавать первым параметром в SetFontSize
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: Cвойства DrawingDimension

Сообщение Artem » 17 апр 2009 16:15

Первым в функцию как раз передается указатель на обьект размера - в примере рейда у него(CATIDrwDimDimension) запрашивается интерфейс CATIDrwTextProperties......Я таки подозреваю что реализованы методы этого интерфейса в CATAnnotationModeler.dll (может кстати и неправильно подозреваю )......Ну а вообще чисто гипотетически -можно же дернуть метод интерфейса обьекта из длл напрямик в VB?....Если в курсе адреса обьекта?
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Cвойства DrawingDimension

Сообщение Artem » 17 апр 2009 16:20

Дико извиняюсь - код подправил(вместо самого обьекта на ссылку)....
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Cвойства DrawingDimension

Сообщение booSter » 17 апр 2009 16:26

Интерфейс - это абстракция... с которой должна быть связанна т.н. имплементация (или реализация). В терминах РЭЙДа она ещё называется компонент. Судя по названию CATDrwAnnCompTextProperties - это компонент реализующий САА-интерфейс CATIDrwTextProperties.
Так вот передавать нужно указатель на компонент, и если удастся обнаружить каким образом достать из указателя на интерфейс компонент, то есть надежда это всё оживить.
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: Cвойства DrawingDimension

Сообщение Artem » 17 апр 2009 16:32

Т.е. d2 = ObjPtr(dd) - не есть гуд? Ну ладно..так то можно сделать дллку прослойку на рейде и дергать уже из нее(только вот с совместимостью версий будут проблемы)
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Cвойства DrawingDimension

Сообщение booSter » 17 апр 2009 16:51

Именно.
Ибо dd - есть суть указатель на интерфейс (обёрнутый в структуру VARIANT), а нужен указатель на имплементацию.
Для некоторых реализаций COM, где класс имплементации напрямую наследуется от класса интерфейса этот номер бы возможно и проканал, но в САА, где большинство интерфейсов имплементируются через TIE-прослойку это не работает...
Нужно искать способ "проткнуть" этот самый TIE и таки достать указатель на вожделенный компонент-имплементацию.
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: Cвойства DrawingDimension

Сообщение Artem » 17 апр 2009 16:55

Спасибо за консультацию...посмотрю конечно, но сердцем чую, что не потяну........(А вот с дополнительной длл может что и получится...)
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Cвойства DrawingDimension

Сообщение MisterX » 22 апр 2009 12:39

В CAA это конечно круто все выглядит, но есть одна загвоздка - у меня используемый язык - VB и соответственно встроенный в КАТЮ редактор... :dash1:
Учи матчасть.
Аватара пользователя
MisterX
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 02 окт 2007 23:56


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

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

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