Artem писал(а):Ps.ну самый примитивный и абсолютно не универсальный способ - чтобы аннотации расставляли твоим макросом/командой
- имелось ввиду что для НОВЫХ заводимых в пдм сработает, если бы получил обломм по двум указанным направлениям в предыдущих постах, как "куда деваться" вариант прокатил бы...абсолютно не универсальный способ
zerganalizer писал(а):Уверен - даже если вы прочтете номер фейса у одной модели, номер фейса на другой модели может быть совсем другим.
Brep-имя фейса выдает эта команда - annotation.GetSurfaces(enumValues) ?
Dim enumValues () as Variant
ReDim enumValues (SurfCount - 1)
annotation.GetSurfaces(enumValues)
Dim Name As String
For i = LBound(enumValues) to UBound(enumValues)
Name = enumValues(i)
msgBox Name
Next
Artem писал(а):как "куда деваться" вариант прокатил бы...
Wireless_Fidelity писал(а):Здравствуйте.
Получение аннотируемой геометрии и пляски с BREP-ом это, конечно, очень интересно, но я бы начал с ответа на второй принципиальный вопрос: а как создать аннотацию, привязанную к ребру? Насколько я помню, никак.
selection1.Add MySurface
CATIA.StartCommand ("Text with leader")
Dim r As Text
Set r = s.Item(1).Value
Dim ox As Double: Dim oy As Double
MsgBox r.Get2dAnnot.X
r.Get2dAnnot.Leaders.Item(1).GetPoint 1, ox, oy
MsgBox ox
Sub CATMain()
Set myDocument = CATIA.ActiveDocument
Set myPart = CATIA.ActiveDocument.Part
Set mySel = CATIA.ActiveDocument.Selection
'-----------------------------------
' LAUNCH INTERACTIVE POINT SELECTION
'-----------------------------------
' get ZY plane feature (where annotation will be located)
Dim refPlaneYZ As Reference
Set refPlaneYZ = myPart.OriginElements.PlaneYZ
Dim plnPlaneYZ As Plane
Set plnPlaneYZ = myPart.FindObjectByName(refPlaneYZ.DisplayName)
' start selection on a plane
Dim ArrSelFilter(0)
ArrSelFilter(0) = "ZeroDim"
Dim ArrLocation2D(1)
Dim ArrLocation3D(2)
Dim bObjectSelected As Boolean
Dim sResult ' As String
sResult = mySel.IndicateOrSelectElement3D(refPlaneYZ, _
"Click to select annotation position", _
ArrSelFilter, _
False, _
True, _
False, _
bObjectSelected, _
ArrLocation2D, _
ArrLocation3D)
If (sResult <> "Normal") Then
MsgBox "Annotation position has not been specified"
Exit Sub
End If
'--------------------
' ANNOTATION CREATION
'--------------------
Set UserSurfs = myPart.UserSurfaces
Set MyAnnotationSets = myPart.AnnotationSets
Set MyAnnotationSet = MyAnnotationSets.Add("ISO")
Set MyAnnotationFactory = MyAnnotationSet.AnnotationFactory
Set MyAnnotations = MyAnnotationSet.Annotations
Dim refPlaneZX As Reference
Set refPlaneZX = myPart.OriginElements.PlaneZX
' ask user to select an edge
Dim aSelFilter(0)
aSelFilter(0) = "Edge"
sResult = mySel.SelectElement2(aSelFilter, "Select edge", False)
If (sResult <> "Normal") Then
MsgBox "Edge has not been selected"
Exit Sub
End If
'Set SurfaceReference = myPart.CreateReferenceFromObject(refPlaneZX)
Set MyUserSurfaces = myPart.UserSurfaces
Set MyUserSurface = MyUserSurfaces.Generate(CATIA.ActiveDocument.Selection.Item(1).Value)
Dim anPartInfo As Annotation
Set anPartInfo = MyAnnotationFactory.CreateText(MyUserSurface)
Dim txtPartInfo As Text
Set txtPartInfo = anPartInfo.Text()
Dim drwtxtPartInfo As DrawingText
Set drwtxtPartInfo = txtPartInfo.Get2dAnnot()
'-------------------------------------
' SETTING ANNOTATION POSITION AND TEXT
'-------------------------------------
anPartInfo.SetXY ArrLocation2D(0), ArrLocation2D(1)
' add a leader
Call anPartInfo.AddLeader
' set new text
drwtxtPartInfo.Text = _
"MachineType" & _
Chr(10) & Chr(13) & _
"Envelope Size: " & "Stock Volume: " & _
Chr(10) & Chr(13) & _
"Part Volume: " & "Part Weight: " & _
Chr(10) & Chr(13) & _
"Material: " & _
Chr(10) & Chr(13) & _
"User" & "date" & _
Chr(10) & Chr(13) & _
"FileName"
' update annotation set
myPart.UpdateObject MyAnnotationSet
End Sub
Artem писал(а):2)чтение данных о поверхности : query link panel прям так и напрашивается чтоб окошко на winapi(sendmes./postmes.) прошли и параллельно данные о выделенном объекте читать из selection
-а какой принцип если не секрет? интересен прежде всего первый клик по дереву после чего заработают стрелки....С выделением объекта в дереве на WinAPI у меня есть решение на VBA
-неплохой, главное вполне выполнимый вариант, единственно что вроде аннотации в степе поддерживаются вроде бы с 21 версии только....ну и еще аннотацию же можно прицепить и к сурфейсу(можно проанализировать центр тяжести...ну и еще пару тройку точек на поверхности поставить) и даже телу вроде....Альтернативно получению информации об аннотациях через WinAPI можно предложить экспортировать документ в какой-нибудь формат, поддерживающий аннотации (step, должен подойти), затем пробежаться по получившемуся файлу и определить координаты выносок. После чего можно будет воспользоваться методом по поиску ближайших рёбер.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2