Private Sub cbTachoElemente_Click() On Error GoTo Error_cbTachoElemente Dim id1, id2, id3, id4, id5, id6, id7, id8, id9 As Integer Set aktKombiPart = myCatia.CatiaObj.Documents.Item(partid).part Set aktKombi_HybridBodies = aktKombiPart.HybridBodies id1 = GetObjectID(0, aktKombi_HybridBodies.Item(komponentenId).HybridBodies, Nothing, Nothing, Nothing, komponentennameshort) id2 = GetObjectID(0, aktKombi_HybridBodies.Item(komponentenId).HybridBodies.Item(id1).HybridBodies, Nothing, Nothing, Nothing, cbReflektor.Caption) Set aktKombi_HybridBody = aktKombi_HybridBodies.Item(komponentenId).HybridBodies.Item(id1).HybridBodies.Item(id2) ' --- Translations setzen --------------------------------------------------------------------------------------------------------------------------- Set aktHybridShapeFactory = aktKombiPart.HybridShapeFactory Set aktHybridShapeTranslate = aktHybridShapeFactory.AddNewEmptyTranslate() Set aktHybridShapeTranslate_2 = aktHybridShapeFactory.AddNewEmptyTranslate() Set aktHybridShapeTranslate_3 = aktHybridShapeFactory.AddNewEmptyTranslate() id3 = GetObjectID(0, aktKombi_HybridBody.HybridBodies, Nothing, Nothing, Nothing, dummy) Set aktHybridBody = aktKombi_HybridBody.HybridBodies.Item(id3) id4 = GetObjectID(2, Nothing, Nothing, aktHybridBody.HybridShapes, Nothing, "Container") Set aktHybridShapeAssemble = aktHybridBody.HybridShapes.Item(id4) Set reference1 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeAssemble) aktHybridShapeTranslate.ElemToTranslate = reference1 aktHybridShapeTranslate.VectorType = 1 ' --- Rotations setzen ------------------------------------------------------------------------------------------------------------------------------ Set aktHybridShapeRotate = aktHybridShapeFactory.AddNewEmptyRotate() ' --- Startpunkt selektieren ------------------------------------------------------------------------------------------------------------------------ id5 = GetObjectID(2, Nothing, Nothing, aktKombi_HybridBody.HybridShapes, Nothing, startpunkt) Set aktHybridShapePointOnCurve = aktKombi_HybridBody.HybridShapes.Item(id5) Set reference2 = aktKombiPart.CreateReferenceFromObject(aktHybridShapePointOnCurve) aktHybridShapeTranslate.FirstPoint = reference2 ' --- Objekt von ACC_Kammer-1_Ausrichtung anlegen -------------------------------------------------------------------------------------------------- id6 = GetObjectID(2, Nothing, Nothing, aktHybridBody.HybridShapes, Nothing, "Ausrichtung") Set aktHybridShapeLinePtDir = aktHybridBody.HybridShapes.Item(id6) id7 = GetObjectID(2, Nothing, Nothing, aktHybridBody.HybridShapes, Nothing, "Rot-Achse") Set aktHybridShapeLinePtDir_2 = aktHybridBody.HybridShapes.Item(id7) ' --- CloseSurface auf das erste Element setzen ---------------------------------------------------------------------------------------------------- Set aktShapeFactory = aktKombiPart.ShapeFactory Set PartBodies = aktKombiPart.Bodies id8 = GetObjectID(3, Nothing, Nothing, Nothing, aktKombiPart.Bodies, cbReflektor.Caption) Set PartBody = PartBodies.Item(id8) aktKombiPart.InWorkObject = PartBody aktKombiPart.Update Set reference10 = aktKombiPart.CreateReferenceFromName("") Set aktCloseSurface_2 = aktShapeFactory.AddNewCloseSurface(reference10) Set reference11 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeAssemble) aktCloseSurface_2.surface = reference11 aktKombiPart.Update For z1 = 0 To 50 If pointnames(z1) <> "" And linenames(z1) <> "" Then ' --- Punktselektion ----------------------------------------------------------------------------------- id9 = GetObjectID(2, Nothing, Nothing, aktKombi_HybridBody.HybridShapes, Nothing, pointnames(z1)) Set aktHybridShapePointOnCurve_2 = aktKombi_HybridBody.HybridShapes.Item(id9) Set reference3 = aktKombiPart.CreateReferenceFromObject(aktHybridShapePointOnCurve_2) ' ------------------------------------------------------------------------------------------------------ ' --- Translationen des Elemnts setzen ----------------------------------------------------------------- aktHybridShapeTranslate.SecondPoint = reference3 aktHybridShapeTranslate.VolumeResult = False aktKombiPart.Update ' Translation zur ACC_KAMMER_Positioniert erstellen id9 = GetObjectID(0, aktKombi_HybridBody.HybridBodies, Nothing, Nothing, Nothing, positioniert) Set aktHybridBody3 = aktKombi_HybridBody.HybridBodies.Item(id9) aktHybridBody3.AppendHybridShape aktHybridShapeTranslate aktKombiPart.Update ' ------------------------------------------------------------------------------------------------------ ' --- Translationen der ersten Achsenlinie setzen ------------------------------------------------------ Set reference4 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeLinePtDir) aktHybridShapeTranslate_2.ElemToTranslate = reference4 aktHybridShapeTranslate_2.VectorType = 1 aktHybridShapeTranslate_2.FirstPoint = reference2 ' Referenz auf Startpunkt aktHybridShapeTranslate_2.SecondPoint = reference3 ' Referenz auf selektierten Punkte aktHybridShapeTranslate_2.VolumeResult = False aktHybridBody3.AppendHybridShape aktHybridShapeTranslate_2 aktKombiPart.Update ' ------------------------------------------------------------------------------------------------------ ' --- Translationen der zweiten Achsenlinie setzen ------------------------------------------------------ Set reference5 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeLinePtDir_2) aktHybridShapeTranslate_3.ElemToTranslate = reference5 aktHybridShapeTranslate_3.VectorType = 1 aktHybridShapeTranslate_3.FirstPoint = reference2 ' Referenz auf Startpunkt aktHybridShapeTranslate_3.SecondPoint = reference3 ' Referenz auf selektierten Punkte aktHybridShapeTranslate_3.VolumeResult = False aktHybridBody3.AppendHybridShape aktHybridShapeTranslate_3 aktKombiPart.Update ' ------------------------------------------------------------------------------------------------------ ' --- Rotation ----------------------------------------------------------------------------------------- ' - Selektion auf das Element translation_Element(z1) = aktHybridShapeTranslate.Name id9 = GetObjectID(2, Nothing, Nothing, aktHybridBody3.HybridShapes, Nothing, translation_Element(z1)) Set aktHybridShapeTranslate_4 = aktHybridBody3.HybridShapes.Item(id9) Set reference6 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeTranslate_4) aktHybridShapeRotate.ElemToRotate = reference6 aktHybridShapeRotate.VolumeResult = False aktHybridShapeRotate.RotationType = 1 ' - Selektion auf die zweite Achse translation_Achse_2(z1) = aktHybridShapeTranslate_3.Name id9 = GetObjectID(2, Nothing, Nothing, aktHybridBody3.HybridShapes, Nothing, translation_Achse_2(z1)) Set aktHybridShapeTranslate_5 = aktHybridBody3.HybridShapes.Item(id9) Set reference7 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeTranslate_5) aktHybridShapeRotate.Axis = reference7 ' - Selektion auf die erste Achse translation_Achse_1(z1) = aktHybridShapeTranslate_2.Name id9 = GetObjectID(2, Nothing, Nothing, aktHybridBody3.HybridShapes, Nothing, translation_Achse_1(z1)) Set aktHybridShapeTranslate_6 = aktHybridBody3.HybridShapes.Item(id9) Set reference8 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeTranslate_6) aktHybridShapeRotate.FirstElement = reference8 ' - Element rotieren id9 = GetObjectID(2, Nothing, Nothing, aktKombi_HybridBody.HybridShapes, Nothing, linenames(z1)) Set aktHybridShapeLineAngle = aktKombi_HybridBody.HybridShapes.Item(id9) Set reference9 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeLineAngle) aktHybridShapeRotate.SecondElement = reference9 aktHybridShapeRotate.OrientationOfFirstElement = False aktHybridShapeRotate.OrientationOfSecondElement = False aktHybridBody3.AppendHybridShape aktHybridShapeRotate aktKombiPart.Update ' ------------------------------------------------------------------------------------------------------ ' --- Translations ausblenden -------------------------------------------------------------------------- Set activeCatiaDocument = myCatia.CatiaObj.ActiveDocument Set selection1 = activeCatiaDocument.selection Set aktVisPropertySet = selection1.VisProperties selection1.Add aktHybridShapeTranslate Set aktVisPropertySet = aktVisPropertySet.Parent aktVisPropertySet.SetShow catVisPropertyNoShowAttr selection1.Clear ' ------------------------------------------------------------------------------------------------------ ' --- CloseSurface erzeugen ---------------------------------------------------------------------------- Set reference10 = aktKombiPart.CreateReferenceFromName("") Set aktCloseSurface_2 = aktShapeFactory.AddNewCloseSurface(reference10) Set reference11 = aktKombiPart.CreateReferenceFromObject(aktHybridShapeRotate) ' Referenz des jeweiligen rotierten Translation aktCloseSurface_2.surface = reference11 aktKombiPart.Update ' ------------------------------------------------------------------------------------------------------ ' --- neue leere Translation mit Referenz auf Startpunkt setzen ---------------------------------------- Set aktHybridShapeTranslate = aktHybridShapeFactory.AddNewEmptyTranslate() ' Translations setzen Set aktHybridShapeTranslate_2 = aktHybridShapeFactory.AddNewEmptyTranslate() Set aktHybridShapeTranslate_3 = aktHybridShapeFactory.AddNewEmptyTranslate() aktHybridShapeTranslate.ElemToTranslate = reference1 aktHybridShapeTranslate.VectorType = 1 aktHybridShapeTranslate.FirstPoint = reference2 ' ------------------------------------------------------------------------------------------------------ ' --- neue leere Rotations setzen ---------------------------------------------------------------------- Set aktHybridShapeRotate = aktHybridShapeFactory.AddNewEmptyRotate() ' ------------------------------------------------------------------------------------------------------ End If Next Error_cbTachoElemente: If Err.Number <> 0 Then If myhelper Is Nothing Then Else Call myhelper.WriteErrorFile("Fehler beim Positionieren der Tachoelemente - FehlerNr.: " + CStr(Err.Number) + " | Meldung: " + Err.Description, "Tabelle7.cbTachoElemente_Click()") End If Range("A26").value = "Fehler beim Positionieren der Tachoelemente Tabelle7.cbTachoElemente_Click()" Range("A27").value = "Fehlernummer : " + CStr(Err.Number) Range("A28").value = "Meldung : " + Err.Description On Error GoTo 0 End If End Sub