Координаты точки

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

Координаты точки

Сообщение ANovikov » 03 дек 2009 11:57

Уважаемые знатоки,

столкнулся вот с какой проблемой. Есть сборка. Надо получить координаты точки, которая сидит в одном парте, относительно точки, которая сидит в другом парте.

Есть конечно Measure, но почему-то в VB я ее не нашел и макрос с ней не записывается.
Я пробовал покопаться в V5automation, но ничего путного не поймал.

Возникла мысль считывать позиции партов в сборке и координаты точек в самих партах и потом делать арифметику, но это как чесать ухо ногой. Хотелось бы что-нибудь попроще.
ANovikov
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 18 ноя 2009 14:11

Re: Координаты точки

Сообщение Artem » 03 дек 2009 13:11

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

Re: Координаты точки

Сообщение ANovikov » 03 дек 2009 15:08

Этим способом можно получить кординаты точки в самом парте, но не координаты точки относительно сборки.

Я собственно и хотел считывать координаты точки также, а потом к ним добавлять кординаты парта через Position. Но это по-моему сложновато и мудрено.
ANovikov
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 18 ноя 2009 14:11

Re: Координаты точки

Сообщение Artem » 03 дек 2009 16:39

viewtopic.php?f=140&t=563 - может вот это поможет

Set TheSPAworkbench = CATIA.ActiveDocument.GetWorkbench - ActiveDocument не обязательно быть "родным" для точки партом - это может быть и главная сборка(вроде от этого зависит, хотя может и ошибаюсь).
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Координаты точки

Сообщение ANovikov » 03 дек 2009 17:44

Да. Спасибо. Собственно так и хотел. Но теперь сэкономлю время.
ANovikov
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 18 ноя 2009 14:11

Re: Координаты точки

Сообщение ANovikov » 03 дек 2009 17:47

по поводу ActiveDocument - это фишка не работает. Все равно дает координаты в родном парте
ANovikov
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 18 ноя 2009 14:11

Re: Координаты точки

Сообщение Artem » 04 дек 2009 10:00

жизнь не мед это факт, как то так:
Код: Выделить всё
Public Spabench As Workbench
Public MyMeas 'As Measurable
Public Coords(2)
Sub CATMain()
Dim partDocument1 As ProductDocument
Set partDocument1 = CATIA.ActiveDocument
Dim ff As String
ff = FP()
MsgBox ff
Dim reference21 As Reference
Set reference21 = partDocument1.Product.CreateReferenceFromName(ff)
Set Spabench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set MyMeas = Spabench.GetMeasurable(reference21)
MyMeas.GetPoint Coords
MsgBox CStr(Coords(0)) + "   " + CStr(Coords(1)) + "   " + CStr(Coords(2))
End Sub

Public Function FP() As String
Dim Document1 As ProductDocument
Set Document1 = CATIA.ActiveDocument
Dim selection1 'As Selection
Set selection1 = Document1.Selection
FP = "/!" + selection1.Item(1).Value.Name
Set Myobj = selection1.Item(1).Value
Set opart_product = selection1.FindObject("CATIAProduct")
FP = "/" + opart_product.Name + FP
Set ss = opart_product.Parent.Parent
While ss.Name <> "CNEXT"
FP = "/" + ss.Name + FP
Set ss = ss.Parent.Parent
Wend
FP = Right(FP, Len(FP) - 1)
selection1.Clear
selection1.Add Myobj
'MsgBox FP
End Function
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Координаты точки

Сообщение ANovikov » 04 дек 2009 13:13

Спасибо, Артем.

Этот код посимпатичнее. Плюс работает побыстрее. Единственное небольшая ремарка. Так как я пишу в чистом VB, а не в VBA, то Паблики нужно перенести в тело процедуры. Потому что GetPoint не фурычит, если Coords(2) объявлены без типа и не в теле. Видимо компилятор по дефолту массиву тип присваивает, а он не совпадает с типом, который берет GetPoint.

А в целом зачет. Огромное спасибо и реверансы.
ANovikov
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 18 ноя 2009 14:11


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

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

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