Share

Sweep Feature Add

Description

This sample demonstrates the creation of a sweep feature. The profile is a circle, but the path is made up of a 3D sketch and a 2D sketch.

Code Samples

To run the sample have a part document open.
Public Sub SweepFeature()
    ' Set a reference to the currently active document.
    ' This assumes that it is a part document.
    Dim oPartDoc As PartDocument
    Set oPartDoc = ThisApplication.ActiveDocument

    ' Set a reference to the component definition.
    Dim oCompDef As PartComponentDefinition
    Set oCompDef = oPartDoc.ComponentDefinition

    ' Set a reference to the transient geometry object.
    Dim oTG As TransientGeometry
    Set oTG = ThisApplication.TransientGeometry

    ' Create some workpoints that will be used for the 3D sketch.
    Dim oWPs(1 To 5) As WorkPoint
    Set oWPs(1) = oCompDef.WorkPoints.AddFixed(oTG.CreatePoint(0, 0, 0))
    Set oWPs(2) = oCompDef.WorkPoints.AddFixed(oTG.CreatePoint(3, 0, 0))
    Set oWPs(3) = oCompDef.WorkPoints.AddFixed(oTG.CreatePoint(3, 4, 0))
    Set oWPs(4) = oCompDef.WorkPoints.AddFixed(oTG.CreatePoint(3, 4, 2))
    Set oWPs(5) = oCompDef.WorkPoints.AddFixed(oTG.CreatePoint(6, 4, 2))

    ' Create a new 3D Sketch.
    Dim oSketch3D As Sketch3D
    Set oSketch3D = oPartDoc.ComponentDefinition.Sketches3D.Add

    ' Draw 3D lines. The first line is drawn between two of the work points.
    Dim oLine As SketchLine3D
    Set oLine = oSketch3D.SketchLines3D.AddByTwoPoints(oWPs(1), oWPs(2), True, 1)

    ' This second and subsequent lines are drawn between a 3D sketch point and a work point.
    ' The work point is obtained from the previous line. Because the two lines will share
    ' this 3D sketch point, Inventor will treat them as connected lines when creating any
    ' paths.
    Set oLine = oSketch3D.SketchLines3D.AddByTwoPoints(oLine.EndPoint, oWPs(3), True, 1)
    Set oLine = oSketch3D.SketchLines3D.AddByTwoPoints(oLine.EndPoint, oWPs(4), True, 0.75)
    Set oLine = oSketch3D.SketchLines3D.AddByTwoPoints(oLine.EndPoint, oWPs(5), True, 1)

    ' Create a 2D sketch.
    Dim oSketch As PlanarSketch
    Set oSketch = oCompDef.Sketches.Add(oCompDef.WorkPlanes.Item(2))

    ' Determine the model origin relative to the sketch space.
    Dim oOrigin As Point2d
    Set oOrigin = oSketch.ModelToSketchSpace(oTG.CreatePoint(0, 0, 0))

    ' Create two lines.
    Dim oNewPoint As Point2d
    Set oNewPoint = oTG.CreatePoint2d(oOrigin.X, oOrigin.Y - 4)
    Dim oSketchLine1 As SketchLine
    Set oSketchLine1 = oSketch.SketchLines.AddByTwoPoints(oOrigin, oNewPoint)
    oNewPoint.X = oNewPoint.X + 3
    Dim oSketchLine2 As SketchLine
    Set oSketchLine2 = oSketch.SketchLines.AddByTwoPoints(oSketchLine1.EndSketchPoint, oNewPoint)

    ' Create a fillet between the two lines.
    Call oSketch.SketchArcs.AddByFillet(oSketchLine1, oSketchLine2, 1, oSketchLine1.StartSketchPoint.Geometry, oSketchLine2.EndSketchPoint.Geometry)

    ' Get the end of the 2d sketch in model space.
    Dim oModelPoint As Point
    Set oModelPoint = oSketch.SketchToModelSpace(oSketchLine2.EndSketchPoint.Geometry)

    ' Create a work plane at the end of the 2D sketch.
    Dim oWP As WorkPlane
    Set oWP = oCompDef.WorkPlanes.AddByNormalToCurve(oSketchLine2, oSketchLine2.EndSketchPoint)

    ' Create a path. Because the 3D and 2D sketches physically connect the path will include
    ' both of them.
    Dim oPath As Path
    Set oPath = oCompDef.Features.CreatePath(oSketchLine2)

    ' Create a sketch containing a circle.
    Set oSketch = oCompDef.Sketches.Add(oWP)
    Set oOrigin = oSketch.ModelToSketchSpace(oTG.CreatePoint(0, 0, 0))
    Call oSketch.SketchCircles.AddByCenterRadius(oSketch.ModelToSketchSpace(oModelPoint), 0.375)

    ' Create a profile.
    Dim oProfile As Profile
    Set oProfile = oSketch.Profiles.AddForSolid

    ' Create the sweep feature.
    Dim oSweep As SweepFeature
    Set oSweep = oCompDef.Features.SweepFeatures.AddUsingPath(oProfile, oPath, kJoinOperation)
End Sub


Was this information helpful?