hallo cad-gemeinschaft =)
ich (student) bin noch neuling auf dem gebiet catia-vbscripting,
jedoch hege ich großes interesse daran. bedauerlicherweise kann
ich mit den beiden büchern von Dieter R. Ziehten
"Makroprogrammierung mit Visual Basic Script" und
"Effiziente Konstruktion mit Makros" nur wenig anfangen
die beispiele dort sind zu dürftig, nur auf das wesentliche bezogen
und helfen daher auch in meinem aktuellen, vermutlich recht einfachen
problem, nicht weiter.
-Hauptkörper
->KörperXYZ
->Punkt1
->Punkt2
-KörperABC
nun sollen Punkt 1 und Punkt 2 selektiert werden und in einem neuen
körper soll eine Linie (hybridShapeLinePtPt) zwischen diesen beiden punkten
erstellt werden.
setze ich diese beiden punkte JEDOCH in den Hauptkörper funktioniert mein programm.
würde mich riesig freuen wenn mir jemand tips geben könnte oder mir für anfänger
gut verständliche literatur nennen kann, die mir weiterhilft
der snow
Quellcode:
================================================================================
'zweck: ich uebe noch
'autor: snow
'====================================
Language="VBSCRIPT"
Sub CATMain()
Dim Referenz1 As Reference
Dim Referenz2 As Reference
Dim Dateiname As Document
Set Dateiname = CATIA.ActiveDocument
Dim Bauteil As Part
Set Bauteil = Dateiname.Part
Dim alleKoerper As Bodies
Set alleKoerper = Bauteil.Bodies
Dim Koerper1 As Body
Set Koerper1 = alleKoerper.Add()
Dim neuerkoerpername
neuerkoerpername = "Unbekannt"
neuerkoerpername = inputbox ("Bitte geben Sie den Namen des neuen Koerpers ein!", "Eingabe Name Koerper", neuerkoerpername)
Koerper1.Name = neuerkoerpername
Bauteil.Update
Dim DrahtFlaechenWerkzeugkasten As HybridShapeFactory
Set DrahtFlaechenWerkzeugkasten = Bauteil.HybridShapeFactory
Dim VolumenWerkzeugkasten As ShapeFactory
Set VolumenWerkzeugkasten = Bauteil.ShapeFactory
'================DEKLARATIONEN + NEUER KÖRPER ENDE
'================PUNKT 1 SELEKTIEREN
Dim InputObjectType(0)
InputObjectType(0) = "Point"
Dim BenutzerSelektion
Set BenutzerSelektion = CATIA.ActiveDocument.Selection
BenutzerSelektion.Clear
Dim Selektion
Selektion = BenutzerSelektion.SelectElement2(InputObjectType, "Selektieren des Punktes", False)
If Selektion = "Normal" Then
SelektionPunkt=BenutzerSelektion.Item(1).Value.Name
msgbox(SelektionPunkt)
Set Koerpervonpunkt1 = BenutzerSelektion.FindObject("CATIABody")
msgbox (Koerpervonpunkt1.name)
BenutzerSelektion.Clear
Else
MsgBox("Abbruch")
BenutzerSelektion.Clear
Exit sub
End If
Dim uebergabekoerpervonpunkt1
uebergabekoerpervonpunkt1 = Koerpervonpunkt1.name
Dim Koerper2 As Body
Set Koerper2 = alleKoerper.Item(uebergabekoerpervonpunkt1)
Dim geometrischesSet1 As HybridShapes
Set geometrischesSet1 = Koerper2.HybridShapes
Dim hybridShapePointCoord1 As HybridShape
Set hybridShapePointCoord1 = geometrischesSet1.Item(SelektionPunkt)
Set Referenz1 = Bauteil.CreateReferenceFromObject(hybridShapePointCoord1)
Bauteil.Update
'===========PUNKT 1 SELEKTION ENDE
'================PUNKT 2 SELEKTIEREN
Dim InputObjectType2(0)
InputObjectType2(0) = "Point"
Dim BenutzerSelektion2
Set BenutzerSelektion2 = CATIA.ActiveDocument.Selection
BenutzerSelektion2.Clear
Dim Selektion2
Selektion = BenutzerSelektion2.SelectElement2(InputObjectType2, "Selektieren des Punktes", False)
If Selektion = "Normal" Then
SelektionPunkt2=BenutzerSelektion2.Item(1).Value.Name
msgbox(SelektionPunkt2)
Set Koerpervonpunkt2 = BenutzerSelektion2.FindObject("CATIABody")
msgbox (Koerpervonpunkt2.name)
BenutzerSelektion2.Clear
Else
MsgBox("Abbruch")
BenutzerSelektion2.Clear
Exit sub
End If
Dim uebergabekoerpervonpunkt2
uebergabekoerpervonpunkt2 = Koerpervonpunkt2.name
Dim Koerper3 As Body
Set Koerper3 = alleKoerper.Item(uebergabekoerpervonpunkt2)
Dim geometrischesSet2 As HybridShapes
Set geometrischesSet2 = Koerper3.HybridShapes
Dim hybridShapePointCoord2 As HybridShape
Set hybridShapePointCoord2 = geometrischesSet2.Item(SelektionPunkt2)
Set Referenz2 = Bauteil.CreateReferenceFromObject(hybridShapePointCoord2)
'============PUNKT 2 SELEKTION ENDE
'============LINIE SETZEN ZWISCHEN PUNKT 1 und 2
Dim hybridShapeLinePtPt1 As HybridShapeLinePtPt
Set hybridShapeLinePtPt1 = DrahtFlaechenWerkzeugkasten.AddNewLinePtPt(Referenz1, Referenz2)
Koerper1.InsertHybridShape hybridShapeLinePtPt1
Bauteil.InWorkObject = hybridShapeLinePtPt1
Bauteil.Update
'============LINIE ENDE
'=============Neuen Körper zu !!!zuerst ausgewählten!!!! Körper addieren
Bauteil.InWorkObject = Koerper2
Dim Hinzufuegen As Add
Set Hinzufuegen = VolumenWerkzeugkasten.AddNewAdd (Koerper1)
'=============Körper addieren ende
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP