Hallo Cadzchen,
Das Codebeispiel hat folgende Probleme:
Die Werte für folgende Variablen sollten wohl aus Eingabefeldern eines GUI's kommen (ich habe mal einfach Werte gesetzt):
CenterRadiusO = 2
CenterRadiusI = 1.5
DistanceExtend = 10
Dim oCompDef As ComponentDefinition
solltest Du in diesem Fall als PartComponentDefinition deklariere:
Dim oCompDef As PartComponentDefinition
Hier ist ein Schreibfehler (oTransGeom und oTrabsGeom):
Dim oTransGeom As TransientGeometry
Set oTrabsGeom = ThisApplication.TransientGeometry
Bei der Extrusion fehlte der Parameter 'kJoinOperation' und die Distanz ist nun die Variable DistanceExtend:
Set Extrusion1 = oCompDef.Features.ExtrudeFeatures.AddByDistanceExtent(Profile, DistanceExtend, kSymmetricExtentDirection, kJoinOperation)
So geht's:
Private Sub CreateButton_Click()
'Define Variables
Dim CenterRadiusO As Double
Dim CenterRadiusI As Double
Dim DistanceExtent As Double
'Set variables from values in edit boxes
CenterRadiusO = 2
CenterRadiusI = 1.5
DistanceExtend = 10
' error message if innererdurchmesser is greater than assendurchmesser
If Innerdiameter > OuterDiameter Then
CreateButton.Enabled = False
MsgBox (" Inner Diameter must be smaller Value than Outer Diameter.")
Exit Sub
End If
'Create new part document
Dim oDoc As PartDocument
Set oDoc = ThisApplication.Documents.Add(kPartDocumentObject)
'Get Component definition from part document
Dim oCompDef As PartComponentDefinition
Set oCompDef = oDoc.ComponentDefinition
'Create a new Sketch on the X-Y Plane
Dim Sketch1 As PlanarSketch
Set Sketch1 = oCompDef.Sketches.Add(oCompDef.WorkPlanes.Item(3))
'Set a referance to the transient geometry objekt.
Dim oTransGeom As TransientGeometry
Set oTransGeom = ThisApplication.TransientGeometry
'Draw Circles on the Sketch
Dim OuterCircle As SketchCircle
Set OuterCircle = Sketch1.SketchCircles.AddByCenterRadius(oTransGeom.CreatePoint2d(0, 0), CenterRadiusO)
Dim InnerCircle As SketchCircle
Set InnerCircle = Sketch1.SketchCircles.AddByCenterRadius(oTransGeom.CreatePoint2d(0, 0), CenterRadiusI)
'Create a profile
Dim Profile As Profile
Set Profile = Sketch1.Profiles.AddForSolid
'Create a solid extrusion
Dim Extrusion1 As ExtrudeFeature
Set Extrusion1 = oCompDef.Features.ExtrudeFeatures.AddByDistanceExtent(Profile, DistanceExtend, kSymmetricExtentDirection, kJoinOperation)
End
End Sub
Bedenke noch eines: in der metrischen Umgebung sind Längeneinheiten in cm - lies dazu das Thema 'UniteOfMeasure' in der API-Hilfe
Hoffe, das hilft.
------------------
Grüsse, Paul
Inventor-Programmierung, Inventor-Tools und Inventor API-Schulung
thinkCAD Web-Kataloge
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP