Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Image RemovedImage Added

Macro Breakdown


UserForm

This macro starts by opening a Userform. In this form the user has the ability to choose the diameter of one strand in the braid and the total length of the braid, although in this version of the macro the total length of the braid cannot be changed all it does is create one link of the braid.

Image Modified

Braid Macro UserForm

Create Planes

Next the macro inserts 3 3D sketches and draws a spline in each of the sketches. The points of the sketches are determined by multiple of the inputted diameter measurements. Below is an example of the spline creation:

Code Block
Public Sub Create_Spline_1(Diameter As Double)

    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    Part.SketchManager.Insert3DSketch True

' Create Spline
    Dim pointArray As Variant
    Dim points() As Double
    ReDim points(0 To 17) As Double
    points(0) = -1 * Diameter
    points(1) = -1 * (Diameter / 1.5)
    points(2) = 0
    points(3) = -1 * Diameter
    points(4) = -1 * (Diameter / 1.5)
    points(5) = Diameter / 8
    points(6) = -1 * (Diameter)
    points(7) = Diameter / 1.5
    points(8) = Diameter * 2
    points(9) = 0
    points(10) = 0
    points(11) = (Diameter * 4)
    points(12) = Diameter
    points(13) = (Diameter / -1.5)
    points(14) = (Diameter * 6) - (Diameter / 8)
    points(15) = Diameter
    points(16) = Diameter / -1.5
    points(17) = Diameter * 6
    pointArray = points
    Dim skSegment As Object
    Set skSegment = Part.SketchManager.CreateSpline((pointArray))

    Part.SketchManager.Insert3DSketch True
    Part.ClearSelection2 True
End Sub

Circle Sketches 

In order to create a swept braid strand later it needs a sketch to sweep a long the spline. The macro then creates 3 sketches on the front plane with their center points intersecting with end points of the splines and the diameter set to the value taken in the UserForm. Below is an example of the code:

Code Block
Public Sub Draw_Circles(Diameter As Double)

	Set swApp = Application.SldWorks
	Set Part = swApp.ActiveDoc

' Cirlce 1
    Part.SketchManager.InsertSketch True
    boolstatus = Part.Extension.SelectByID2("Plane1", "PLANE", -5.10703921288805E-03, -2.59649850538866E-03, -4.90350149461128E-03, False, 0, Nothing, 0)
    Part.ClearSelection2 True
    Dim skSegment As Object
    Set skSegment = Part.SketchManager.CreateCircle(-1 * Diameter, -1 * (Diameter / 1.5), 0#, -1 * Diameter, (Diameter / -1.5) - (Diameter / 2), 0#)
    Part.ClearSelection2 True
    Part.SketchManager.InsertSketch True
    Part.ClearSelection2 True

' Circle 2
    Part.SketchManager.InsertSketch True
    boolstatus = Part.Extension.SelectByID2("Plane1", "PLANE", -5.10703921288805E-03, -2.59649850538866E-03, -4.90350149461128E-03, False, 0, Nothing, 0)
    Part.ClearSelection2 True
    Set skSegment = Part.SketchManager.CreateCircle(0#, 0#, 0#, 0#, Diameter / 2, 0#)
    Part.ClearSelection2 True
    Part.SketchManager.InsertSketch True
    Part.ClearSelection2 True
    
' Circle 3
     Part.SketchManager.InsertSketch True
    boolstatus = Part.Extension.SelectByID2("Plane1", "PLANE", -5.10703921288805E-03, -2.59649850538866E-03, -4.90350149461128E-03, False, 0, Nothing, 0)
    Part.ClearSelection2 True
    Set skSegment = Part.SketchManager.CreateCircle(Diameter, Diameter / 1.5, 0#, Diameter, (Diameter / 1.5) + (Diameter / 2), 0#)
    Part.ClearSelection2 True
    Part.SketchManager.InsertSketch True
    Part.ClearSelection2 True

End Sub

Swept Boss\ Base

The final step is to create the strands. the macro selects 1 spline and 1 circle and preforms a swept boss. This process is repeated 3 times to make all the strands. Below is an example of the code:

Code Block
boolstatus = Part.Extension.SelectByID2("Sketch1", "SKETCH", 7.11112277789861E-03, 1.27021790098527E-03, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("3DSketch1", "SKETCH", 6.81458693163701E-03, 4.54305795442467E-03, 4.79044795270839E-03, True, 4, Nothing, 0)
Dim swFeat As Object
Dim swFeatMgr As Object

Set swFeatMgr = Part.FeatureManager
Dim swFeatData As Object
Set swFeatData = swFeatMgr.CreateDefinition(swFeatureNameID_e.swFmSweep)
swFeatData.AdvancedSmoothing = False
swFeatData.AlignWithEndFaces = 0
swFeatData.AutoSelect = True
swFeatData.D1ReverseTwistDir = False
swFeatData.Direction = -1
swFeatData.EndTangencyType = 0
swFeatData.FeatureScope = True
swFeatData.MaintainTangency = False
swFeatData.Merge = True
swFeatData.MergeSmoothFaces = True
swFeatData.PathAlignmentType = 10
swFeatData.StartTangencyType = 0
swFeatData.ThinFeature = False
swFeatData.ThinWallType = 0
swFeatData.TwistControlType = 0
swFeatData.SetTwistAngle 0
swFeatData.SetWallThickness True, 0
Set swFeat = swFeatMgr.CreateFeature(swFeatData)
Part.ClearSelection2 True


Future Plans


  1.  Add the ability to chose the length of the braid.
  2. Create the braid with a taper
  3. Braid in a circle
  4. Transpose the braid onto different surfaces
  5. Create the a braided tube

Macro File


Attachments
uploadfalse
patterns.*swp


Contributors:

Contributors