Catia: 2D очки в 3D очки - PullRequest
       8

Catia: 2D очки в 3D очки

0 голосов
/ 10 января 2019

У меня есть часть Catia, где у меня есть несколько набросков на разных плоскостях. Мне нужно иметь возможность преобразовать эти эскизы в трехмерные точки, которые я копирую в новый документ детали. Я пытался использовать команды поиска и выбора в скрипте VB, чтобы использовать макрос, чтобы собрать все 2D точки в моем эскизе и преобразовать их в 3D точки, но безрезультатно.

Sub CATMain()

Set oSel = CATIA.ActiveDocument.Selection

strArray(0)=”Part”

Msgbox “Please select parts to join.”

sStatus = oSel.SelectElement3(strArray, “Select parts”, False, CATMultiSelTriggWhenUserValidatesSelection, false)

iCount = oSel.Count

For i= 1 to iCount

Set myObject2 = oSel.Item(i).value

oSel.Search “Name=Point,sel”

ReDim copies(iCount)

For k=1 to iCount
Set copies(k)=oSel.Item(k).Value
oSel.Add copies(k)
oSel.Copy


Next ‘k
Next ‘i


Set part2 = CATIA.Documents.Add(“CATPart”)

part2.Product.PartNumber = “My New Part”

Dim GSet1 As HybridBody
Set GSet1 = part2.Part.HybridBodies.Item(1)
GSet1.Name = “My Geometry”

Set partDocument2= CATIA.ActiveDocument
Dim ActSel As Selection
Set ActSel=partDocument2.Selection
ActSel.Add GSet1

ActSel.PasteSpecial(“CATPrtResultWithOutLink” )


ActSel.Clear

End Sub

1 Ответ

0 голосов
/ 10 января 2019

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

Команда дизассемблирования предоставляется в VB с помощью метода HybridShapeFactory.AddNewDatums.

Option Explicit


Sub CATMain()


Dim oPart As part
Set oPart = CATIA.ActiveDocument.part

Dim oHSF As HybridShapeFactory
Set oHSF = oPart.HybridShapeFactory

Dim sx As Sketch
Set sx = oPart.HybridBodies.item("Geometrical Set.1").HybridSketches.item("Sketch.1")


'make a temporary body
Dim targetGS As HybridBody
Set targetGS = oPart.HybridBodies.add
targetGS.name = "TMP_BODY___DELETE_ME"

'create a datum curve from the sketch
Dim sxRef As Reference
Set sxRef = oPart.CreateReferenceFromObject(sx)

'make a zero-translate from the sketch
'This is required because AddNewDatums functions needs a HybridShape feature
Dim oZero As HybridShapeTranslate
Set oZero = oHSF.AddNewTranslate(sxRef, oHSF.AddNewDirectionByCoord(0#, 0#, 1#), 0#)

Call targetGS.AppendHybridShape(oZero)
Call oPart.UpdateObject(oZero)

'now do the disassembly    
Dim oZeroRef As Reference
Set oZeroRef = oPart.CreateReferenceFromObject(oZero)

'un-datum the curve by making a zero translate

    Dim domains() As Variant
    domains = oHSF.AddNewDatums(oZeroRef)

    Dim i As Integer
    For i = 0 To UBound(domains)
        Call targetGS.AppendHybridShape(domains(i))
    Next

    Call oPart.Update


'now we can copy the resulting points...

    Dim oSel As Selection
    Set oSel = CATIA.ActiveDocument.Selection

    Call oSel.add(targetGS)
    Call oSel.Search("'Generative Shape Design'.Point,sel")


    'copy paste into the new part

  MsgBox ("There are " & oSel.count & " points ready to copy")
    < YOUR COPY PASTE CODE GOES HERE>
    'delete the temporary geo set

    Call oHSF.DeleteObjectForDatum(oPart.CreateReferenceFromObject(targetGS))

End Sub
...