Hallo,
ich habe folgendes Problem:
Ich soll in einer Projektarbeit ein parametrisiertes Modell in Catia erstellen. Dies beinhaltet eine Kurvenkontur die an einer Helix entlangläuft.
Die Kontur haben wir entwickelt. Wir haben auch ein VB Programm geschrieben das bis jetzt die Kontur zweimal vervielfacht wird, beim dritten mal bezieht sich die Kontur immer auf die aller erste und benutzt nicht den Endpunkt der zweiten Kontur als Startpunkt.
Wie kann ich das programmieren das immer die folgende Kontur den Endpunkt des Vorgängers als Startpunkt wählt?
Hier mein Quellcode:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim CATIA As INFITF.Application
Dim Body1 As Body
Dim part1 As Part
Dim reference1, reference2 As Reference
Dim hybridShapeFactory1 As HybridShapeFactory
Dim hybridShapes1 As HybridShapes
Dim hybridShapeRotate1 As HybridShapeRotate
Dim partDocument1 As Document
Dim hybridShapeAssemble1 As HybridShapeAssemble
Dim axisSystems1 As AxisSystems
Dim axisSystem1 As AxisSystem
Dim bodies1 As Bodies
Try
CATIA = System.Runtime.InteropServices.Marshal.GetActiveObject("CATIA.Application")
Catch ex As System.Runtime.InteropServices.COMException
MessageBox.Show("Catia nicht gefunden!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End
End Try
partDocument1 = CATIA.ActiveDocument
part1 = partDocument1.Part
hybridShapeFactory1 = part1.HybridShapeFactory
'Auslesen und setzten der Parameter
'Dim Hoehe_Beginn_der_Tropfen As Parameter
'Hoehe_Beginn_der_Tropfen = part1.Paramters.Item("Hoehe_Beginn_der_Tropfen")
'Geometrischesset erzeugen
Dim hb1 As HybridBody
hb1 = part1.HybridBodies.Add
hb1.Name = "Spiralkonstruktion"
part1.InWorkObject = hb1
'Deklaration für die nächsten Schritte
Dim i, h, Winkel, Hoehe As Single
i = 29.79
h = 0.92
Winkel = 0
Hoehe = 0
Do While Hoehe < 1.8
'Die Kurve um einen gewissen Winkel drehen
Winkel = Winkel + i
hybridShapeRotate1 = hybridShapeFactory1.AddNewEmptyRotate()
bodies1 = part1.Bodies
Body1 = bodies1.Item("Hauptkörper")
hybridShapes1 = Body1.HybridShapes
hybridShapeAssemble1 = hybridShapes1.Item("Verbindung.1")
reference1 = part1.CreateReferenceFromObject(hybridShapeAssemble1)
hybridShapeRotate1.ElemToRotate = reference1
hybridShapeRotate1.VolumeResult = False
hybridShapeRotate1.RotationType = 0
axisSystems1 = part1.AxisSystems
axisSystem1 = axisSystems1.Item("Achsensystem.1")
reference2 = part1.CreateReferenceFromBRepName("REdge :frown:Edge :frown:Face :frown:Brp :frown:AxisSystem.1;3);None :frown:);Cf11 :frown:));Face :frown:Brp :frown:AxisSystem.1;2);None :frown:);Cf11 :frown:));None :frown:Limits1 :frown:);Limits2 :frown:));Cf11 :frown:));WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", axisSystem1)
hybridShapeRotate1.Axis = reference2
hybridShapeRotate1.AngleValue = Winkel
hb1.AppendHybridShape(hybridShapeRotate1)
part1.InWorkObject = hybridShapeRotate1
part1.Update()
'Ausblenden der Drehung
Dim mysel As INFITF.Selection
mysel = partDocument1.Selection
mysel.Clear()
mysel.Add(hybridShapeRotate1)
mysel.VisProperties.SetShow(CatVisPropertyShow.catVisPropertyNoShowAttr)
mysel.Clear()
'Verschieben der weiter gedrehten Kurve
Hoehe = Hoehe + h
Dim reference3, reference4 As Reference
Dim hybridShapeDirection1 As HybridShapeDirection
Dim hybridShapeTranslate1 As HybridShapeTranslate
reference3 = part1.CreateReferenceFromBRepName("REdge :frown:Edge :frown:Face :frown:Brp :frown:AxisSystem.1;3);None :frown:);Cf11 :frown:));Face :frown:Brp :frown:AxisSystem.1;2);None :frown:);Cf11 :frown:));None :frown:Limits1 :frown:);Limits2 :frown:));Cf11 :frown:));WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", axisSystem1)
hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference3)
hybridShapeTranslate1 = hybridShapeFactory1.AddNewEmptyTranslate()
hybridShapes1 = Body1.HybridShapes
reference4 = part1.CreateReferenceFromObject(hybridShapeRotate1)
hybridShapeTranslate1.ElemToTranslate = reference4
hybridShapeTranslate1.VectorType = 0
hybridShapeTranslate1.Direction = hybridShapeDirection1
hybridShapeTranslate1.DistanceValue = Hoehe
hybridShapeTranslate1.VolumeResult = False
hb1.AppendHybridShape(hybridShapeTranslate1)
part1.Update()
'Die beiden Kurven miteinader Verbinden
Dim hybridShapeAssemble2 As HybridShapeAssemble
Dim reference5, reference6 As Reference
reference5 = part1.CreateReferenceFromObject(hybridShapeAssemble1)
reference6 = part1.CreateReferenceFromObject(hybridShapeTranslate1)
hybridShapeAssemble2 = hybridShapeFactory1.AddNewJoin(reference5, reference6)
hybridShapeAssemble2.SetConnex(1)
hybridShapeAssemble2.SetManifold(1)
hybridShapeAssemble2.SetSimplify(0)
hybridShapeAssemble2.SetSuppressMode(0)
hybridShapeAssemble2.SetDeviation(0.004)
hybridShapeAssemble2.SetAngularToleranceMode(0)
hybridShapeAssemble2.SetAngularTolerance(0.5)
hybridShapeAssemble2.SetFederationPropagation(0)
hb1.AppendHybridShape(hybridShapeAssemble2)
part1.Update()
Loop
End Sub
End Class
[Diese Nachricht wurde von Ronholt am 11. Jul. 2012 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP