dim swApp
dim storePath
dim sw2003api
Function getFeatureByTypeOcc(model, typ, nr)  
  Set feat = model.FirstFeature ' Get the 1st feature in part
  Set res = Nothing
  Count = 0
  Do While Not feat Is Nothing ' While we have a valid feature
    If feat.GetTypeName() = typ Then
      Count = Count + 1
      If Count = nr Then
        Set res = feat
        Exit Do
      End If
    End If
    Set feat = feat.GetNextFeature() ' Get the next feature
  Loop ' Continue until no more
  Set getFeatureByTypeOcc = res
End Function
Function getLastFeatureByType(model,typ)  
  Set feat = model.FirstFeature ' Get the 1st feature in part
  Set res = Nothing
  Count = 0
  Do While Not feat Is Nothing ' While we have a valid feature
    If feat.GetTypeName() = typ Then
      Set res = feat
    End If
    Set feat = feat.GetNextFeature() ' Get the next feature
  Loop ' Continue until no more
  Set getLastFeatureByType = res
End Function
' this code with copy a matrix to a other
Function copyMat4x4(source)
Dim res(0 To 15) As Double
For i = 0 To 15
 res(i) = source(i)
Next
copyMat4x4 = res
End Function

' This code creates a mat from a sw mat
Function createMatFromSWMat(source)
 Dim res(0 To 15) As Double
 res(0) = source(0)
 res(1) = source(1)
 res(2) = source(2)
 res(3) = 0
 res(4) = source(3)
 res(5) = source(4)
 res(6) = source(5)
 res(7) = 0
 res(8) = source(6)
 res(9) = source(7)
 res(10) = source(8)
 res(11) = 0
 res(12) = source(9)
 res(13) = source(10)
 res(14) = source(11)
 res(15) = source(12)
 createMatFromSWMat = res
End Function
Function createSWMatFromMat(source)
 Dim res(0 To 15) As Double
 res(0) = source(0)
 res(1) = source(1)
 res(2) = source(2)
 res(3) = source(4)
 res(4) = source(5)
 res(5) = source(6)
 res(6) = source(8)
 res(7) = source(9)
 res(8) = source(10)
 res(9) = source(12)
 res(10) = source(13)
 res(11) = source(14)
 res(12) = source(15)
 res(13) = 0
 res(14) = 0
 res(15) = 0
 createSWMatFromMat = res
End Function
Function createMat4x4FromValues(x1,x2,x3,y1,y2,y3,z1,z2,z3,t1,t2,t3)
 Dim res(0 To 15) As Double
 res(0) = x1
 res(1) = x2
 res(2) = x3
 res(3) = 0
 res(4) = y1
 res(5) = y2
 res(6) = y3
 res(7) = 0
 res(8) = z1
 res(9) = z2
 res(10) =z3
 res(11) = 0
 res(12) = t1
 res(13) = t2
 res(14) = t3
 res(15) = 1
 createMat4x4FromValues = res
End Function
' this code will mult a common mat with any other stuff
Function multMatMat(ld, xld, yld, rd, xrd, yrd)
  mulRes = yld * xrd
  'Dim od(0 To 0) As Variant
  ReDim od(mulRes - 1) As Double
  For i = 0 To mulRes - 1
   od(i) = 0#
  Next
  y = 0
  While y < yld
    x = 0
    While x < xrd
      i = 0
      While i < xld
       od(x * yld + y) = od(x * yld + y) + ld(i * yld + y) * rd(x * yrd + i)
       i = i + 1
      Wend
      x = x + 1
    Wend
    y = y + 1
  Wend
  multMatMat = od

End Function
' this code will mult a vector with a matrix
Function mulMat4x4Values3d(mat, x,y,z)
  tmp = createVec4d(x, y, z, 1)
  res = multMatMat(mat, 4, 4, tmp, 1, 3)
  mulMat4x4Values3d = createVec3d(res(0), res(1), res(2))
End Function
Function mulMat4x4Vec3d(mat, vec)
  tmp = createVec4d(vec(0), vec(1), vec(2), 1)
  res = multMatMat(mat, 4, 4, tmp, 1, 3)
  mulMat4x4Vec3d = createVec3d(res(0), res(1), res(2))
End Function
Function mulMat4x4Mat4x4(mat1, mat2)
  mulMat4x4Mat4x4 = multMatMat(mat1, 4, 4, mat2, 4, 4)
End Function
' create a 4x4 matrix
Function createMat4x4()
 Dim res(0 To 15) As Double
 for i = 0 to 15 
 res(i) = 0
 next
 createMat4x4 = res
End Function
Function createMat4x4Ident()
 Dim res(0 To 15) As Double
 res(0) = 1
 res(5) = 1
 res(10) = 1
 res(15) = 1
 res(1) = 0
 res(2) = 0
 res(3) = 0
 res(4) = 0
 res(6) = 0
 res(7) = 0
 res(8) = 0
 res(9) = 0
 res(11) = 0
 res(12) = 0
 res(13) = 0
 res(14) = 0
 createMat4x4Ident = res
End Function
' this function create a new vector
Function createVec3d(x, y, z)
 Dim res(0 To 2) As Double
 res(0) = x
 res(1) = y
 res(2) = z
 createVec3d = res
End Function
' this function create a new vector
Function createVec4d(x, y, z, w)
 Dim res(0 To 3) As Double
 res(0) = x
 res(1) = y
 res(2) = z
 res(3) = w
 createVec4d = res
End Function

Function getMatTVec(mat)
 getMatTVec = createVec3d(mat(12), mat(13), mat(14))
End Function

Sub setMatTVec(mat, v)
 mat(12) = v(0)
 mat(13) = v(1)
 mat(14) = v(2)
End Sub
Sub setMatXVec(mat, v)
 mat(0) = v(0)
 mat(1) = v(1)
 mat(2) = v(2)
End Sub
Sub setMatYVec(mat, v)
 mat(4) = v(0)
 mat(5) = v(1)
 mat(6) = v(2)
End Sub
Sub setMatZVec(mat, v)
 mat(8) = v(0)
 mat(9) = v(1)
 mat(10) = v(2)
End Sub
Sub setMatScale(mat, s)
 mat(15) = s
End Sub
Function getMatXVec(mat)
 getMatXVec = createVec3d(mat(0), mat(1), mat(2))
End Function
Function getMatYVec(mat)
 getMatYVec = createVec3d(mat(4), mat(5), mat(6))
End Function
Function getMatZVec(mat)
 getMatZVec = createVec3d(mat(8), mat(9), mat(10))
End Function

Function negVec3d(v)
 negVec3d = createVec3d(-v(0), -v(1), -v(2))
End Function
Function scaleVec3d(v,s)
 scaleVec3d = createVec3d(v(0)*s,v(1)*s,v(2)*s)
End Function
' invert a 4x4 matrix
Function invMat4x4(source)
target = copyMat4x4(source)
setMatTVec target, createVec3d(0, 0, 0)
 target(1) = source(4)
 target(4) = source(1)
 target(2) = source(8)
 target(8) = source(2)
 target(6) = source(9)
 target(9) = source(6)
 setMatScale target,1
 t = getMatTVec(source)
 v = mulMat4x4Vec3d(target, t)
 setMatTVec target, negVec3d(v)
 invMat4x4 = target
End Function
Function getFaceFromModel(part, pos, normal)
 Dim partBodies As Variant
 partBodies = part.GetBodies(swSolidBody)
 For k = LBound(partBodies) To UBound(partBodies)
   found = 0
   Dim body As Object
   Set body = partBodies(k)
   Set face = body.GetFirstFace()
   getFaceFromModel = noting
   Do While Not face Is Nothing ' While we have a valid feature
     Set sur = face.GetSurface()
     If sur.IsPlane() Then
       planePara = sur.PlaneParams
       faceNormal = face.normal
       nTest = faceNormal(0) * normal(0) + faceNormal(1) * normal(1) + faceNormal(2) * normal(2)
       If nTest > 1 - 0.00000001 Then
         ' check projection
         closeRes = face.GetClosestPointOn(pos(0), pos(1), pos(2))
         dTest = (pos(0) - closeRes(0)) * (pos(0) - closeRes(0)) + (pos(1) - closeRes(1)) * (pos(1) - closeRes(1)) + (pos(2) - closeRes(2)) * (pos(2) - closeRes(2))
         If dTest < 0.00000001 Then
           Set getFaceFromModel = face
           found=1
           Exit Do
         End If
       End If
     else
       If sur.IsCylinder() then
         closeRes = face.GetClosestPointOn(pos(0), pos(1), pos(2))
         dTest = (pos(0) - closeRes(0)) * (pos(0) - closeRes(0)) + (pos(1) - closeRes(1)) * (pos(1) - closeRes(1)) + (pos(2) - closeRes(2)) * (pos(2) - closeRes(2))
         If dTest < 0.00000001 Then
           res=sur.EvaluateAtPoint(closeRes(0),closeRes(1),closeRes(2))
           nTest=res(0)*normal(0)+res(1)*normal(1)+res(2)*normal(2)
           if nTest>1-0.00000001 then
             Set getFaceFromModel = face
             found=1
             Exit Do
           End if
         End if
       End if
     End if
     Set face = face.GetNextFace ' Get the next Face
   Loop
   If (found = 1) Then
     Exit For
   End If
 Next k
End Function
Function getEdgeFromModel(part, pos,byref edgeRet)
 Dim partBodies As Variant
 partBodies = part.GetBodies(swSolidBody)
 For k = LBound(partBodies) To UBound(partBodies)
   Dim body As Object
   Set body = partBodies(k)
   edges= body.GetEdges()
   start= LBound(edges)
   ende = UBound(edges)
   For i = start To ende
     Set edge = edges(i)
     closeRes=edge.GetClosestPointOn(pos(0),pos(1),pos(2))
     dTest = (pos(0) - closeRes(0)) * (pos(0) - closeRes(0)) + (pos(1) - closeRes(1)) * (pos(1) - closeRes(1)) + (pos(2) - closeRes(2)) * (pos(2) - closeRes(2))
     If dTest < 0.00000001 Then
       set edgeRet=edge
       getEdgeFromModel=true
       exit function
     End If
   Next i
 Next k
 getEdgeFromModel=false
End Function
sub cLn(part,wMat,x1,y1,x2,y2)
pk1=mulMat4x4Values3d(wMat,x1,y1,0)
pk2=mulMat4x4Values3d(wMat,x2,y2,0)
Part.CreateLine2 pk1(0),pk1(1),0,pk2(0),pk2(1),0
end sub
sub cCLn(part,wMat,x1,y1,x2,y2)
pk1=mulMat4x4Values3d(wMat,x1,y1,0)
pk2=mulMat4x4Values3d(wMat,x2,y2,0)
Part.CreateCenterLineVB pk1(0),pk1(1),0,pk2(0),pk2(1),0
end sub
sub cArc(part,wMat,x1,y1,x2,y2,x3,y3)
pk1=mulMat4x4Values3d(wMat,x1,y1,0)
pk2=mulMat4x4Values3d(wMat,x2,y2,0)
pk3=mulMat4x4Values3d(wMat,x3,y3,0)
Part.Create3PointArc pk1(0),pk1(1),0,pk3(0),pk3(1),0,pk2(0),pk2(1),0
end sub
sub cCir(part,wMat,x1,y1,rad)
pk1=mulMat4x4Values3d(wMat,x1,y1,0)
Part.CreateCircleByRadius2 pk1(0),pk1(1),0,rad
end sub
sub getLocalOptions()
storePath = InputBox("Enter Path (e.g. c:\cadfiles\ )")
l=len(storePath)
if l<>0 then
  lastChar=mid(storePath,l,1)
  if lastChar<>"\" then
    storePath=storePath & "\"
  end if
end if
end sub
Sub CreatePart0
dim error as long
set res=swApp.OpenDoc2 ( storePath & "61834_PART1.sldprt",1,true,false,true,error)
if not res is nothing then
 exit sub
end if
set part=swApp.NewPart
part.SetAddToDB(true)
part.SetDisplayWhenAdded (false)
valRGB=part.MaterialPropertyValues
valRGB(0)=0.69803923368454
valRGB(1)=0.69803923368454
valRGB(2)=0.69803923368454
part.MaterialPropertyValues=valRGB
Dim featMgr as object
if (sw2003api=1) then
  set featMgr=part.FeatureManager
End If
Part.SetTitle2 "0 of 4"
Set feat0= getFeatureByTypeOcc(Part, "RefPlane",1)
Part.SetTitle2 "1 of 4"
Set feat1= getFeatureByTypeOcc(Part, "RefPlane",2)
Part.SetTitle2 "2 of 4"
Set feat2= getFeatureByTypeOcc(Part, "RefPlane",3)
Part.SetTitle2 "3 of 4"
part.selectById feat0.Name,"PLANE",0,0,0
codeBag0 part
set feat3=getLastFeatureByType(part,"ProfileFeature")
Part.SetTitle2 "4 of 4"
part.selectById feat3.Name,"SKETCH",0,0,0
if (sw2003api=0) then
  part.FeatureRevolve2 6.2831853071796,0,6.2831853071796,0,0
else
  featMgr.FeatureRevolve 6.2831853071796,0,6.2831853071796,0,0,1,1,1
end if
part.SetDisplayWhenAdded (true)
part.SetAddToDB(false)
part.SaveAs2 storePath & "61834_PART1.sldprt",0,0,false
End Sub
Sub CreatePart1
dim error as long
set res=swApp.OpenDoc2 ( storePath & "61834_PART2.sldprt",1,true,false,true,error)
if not res is nothing then
 exit sub
end if
set part=swApp.NewPart
part.SetAddToDB(true)
part.SetDisplayWhenAdded (false)
valRGB=part.MaterialPropertyValues
valRGB(0)=0.69803923368454
valRGB(1)=0.69803923368454
valRGB(2)=0.69803923368454
part.MaterialPropertyValues=valRGB
Dim featMgr as object
if (sw2003api=1) then
  set featMgr=part.FeatureManager
End If
Part.SetTitle2 "0 of 4"
Set feat0= getFeatureByTypeOcc(Part, "RefPlane",1)
Part.SetTitle2 "1 of 4"
Set feat1= getFeatureByTypeOcc(Part, "RefPlane",2)
Part.SetTitle2 "2 of 4"
Set feat2= getFeatureByTypeOcc(Part, "RefPlane",3)
Part.SetTitle2 "3 of 4"
part.selectById feat0.Name,"PLANE",0,0,0
codeBag1 part
set feat3=getLastFeatureByType(part,"ProfileFeature")
Part.SetTitle2 "4 of 4"
part.selectById feat3.Name,"SKETCH",0,0,0
if (sw2003api=0) then
  part.FeatureRevolve2 6.2831853071796,0,6.2831853071796,0,0
else
  featMgr.FeatureRevolve 6.2831853071796,0,6.2831853071796,0,0,1,1,1
end if
part.SetDisplayWhenAdded (true)
part.SetAddToDB(false)
part.SaveAs2 storePath & "61834_PART2.sldprt",0,0,false
End Sub
Sub CreatePart2
dim error as long
set res=swApp.OpenDoc2 ( storePath & "61834_PART3.sldprt",1,true,false,true,error)
if not res is nothing then
 exit sub
end if
set part=swApp.NewPart
part.SetAddToDB(true)
part.SetDisplayWhenAdded (false)
valRGB=part.MaterialPropertyValues
valRGB(0)=0.75
valRGB(1)=0.75
valRGB(2)=0
part.MaterialPropertyValues=valRGB
Dim featMgr as object
if (sw2003api=1) then
  set featMgr=part.FeatureManager
End If
Part.SetTitle2 "0 of 4"
Set feat0= getFeatureByTypeOcc(Part, "RefPlane",1)
Part.SetTitle2 "1 of 4"
Set feat1= getFeatureByTypeOcc(Part, "RefPlane",2)
Part.SetTitle2 "2 of 4"
Set feat2= getFeatureByTypeOcc(Part, "RefPlane",3)
Part.SetTitle2 "3 of 4"
part.selectById feat0.Name,"PLANE",0,0,0
codeBag2 part
set feat3=getLastFeatureByType(part,"ProfileFeature")
Part.SetTitle2 "4 of 4"
part.selectById feat3.Name,"SKETCH",0,0,0
if (sw2003api=0) then
  part.FeatureRevolve2 6.2831853071796,0,6.2831853071796,0,0
else
  featMgr.FeatureRevolve 6.2831853071796,0,6.2831853071796,0,0,1,1,1
end if
part.SetDisplayWhenAdded (true)
part.SetAddToDB(false)
part.SaveAs2 storePath & "61834_PART3.sldprt",0,0,false
End Sub
sub CreatePart3
dim error as long
set res=swApp.OpenDoc2 ( storePath & "61834.sldasm",2,true,false,true,error)
if not res is nothing then
 exit sub
end if
createPart0
createPart1
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
createPart2
set asm=swApp.NewAssembly
set comp=asm.AddComponent2 ( storePath &"61834_PART1.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,1,0,0,0,1,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART2.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,1,0,0,0,1,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,1,0,0,0,1,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.96858316112863,-0.24868988716485,0,0.24868988716485,0.96858316112863,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.87630668004386,-0.48175367410172,0,0.48175367410172,0.87630668004386,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.72896862742141,-0.68454710592869,0,0.68454710592869,0.72896862742141,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.535826794979,-0.84432792550202,0,0.84432792550202,0.535826794979,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.30901699437495,-0.95105651629515,0,0.95105651629515,0.30901699437495,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.062790519529313,-0.99802672842827,0,0.99802672842827,0.062790519529313,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.18738131458572,-0.98228725072869,0,0.98228725072869,-0.18738131458572,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.42577929156507,-0.90482705246602,0,0.90482705246602,-0.42577929156507,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.63742398974869,-0.77051324277579,0,0.77051324277579,-0.63742398974869,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.80901699437495,-0.58778525229247,0,0.58778525229247,-0.80901699437495,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.92977648588825,-0.36812455268468,0,0.36812455268468,-0.92977648588825,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.99211470131448,-0.1253332335643,0,0.1253332335643,-0.99211470131448,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.99211470131448,0.1253332335643,0,-0.1253332335643,-0.99211470131448,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.92977648588825,0.36812455268468,0,-0.36812455268468,-0.92977648588825,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.80901699437495,0.58778525229247,0,-0.58778525229247,-0.80901699437495,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.63742398974869,0.77051324277579,0,-0.77051324277579,-0.63742398974869,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.42577929156507,0.90482705246602,0,-0.90482705246602,-0.42577929156507,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,-0.18738131458572,0.98228725072869,0,-0.98228725072869,-0.18738131458572,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.062790519529314,0.99802672842827,0,-0.99802672842827,0.062790519529314,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.30901699437495,0.95105651629515,0,-0.95105651629515,0.30901699437495,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.535826794979,0.84432792550201,0,-0.84432792550201,0.535826794979,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.72896862742141,0.68454710592869,0,-0.68454710592869,0.72896862742141,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.87630668004386,0.48175367410172,0,-0.48175367410172,0.87630668004386,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
set comp=asm.AddComponent2 ( storePath &"61834_PART3.sldprt",0,0,0)
posMat=createMat4x4FromValues(1,0,0,0,0.96858316112863,0.24868988716485,0,-0.24868988716485,0.96858316112863,0,0,0)
swPosMat=createSWMatFromMat(posMat)
comp.SetXForm(swPosMat)
swApp.CloseDoc storePath &"61834_PART1.sldprt"
swApp.CloseDoc storePath &"61834_PART2.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
swApp.CloseDoc storePath &"61834_PART3.sldprt"
asm.SaveAs2 storePath & "61834.sldasm",0,0,false
end sub
sub codeBag0(part)
Part.InsertSketch
Set swActiveMat = Part.GetActiveSketch()
swSketchMat= createMatFromSWMat(swActiveMat.ModelToSketchXForm)
mSkMat=createMat4x4FromValues(1,0,0,0,1,0,0,0,1,0,0,0)
wMat=mulMat4x4Mat4x4(swSketchMat,mSkMat)
cArc part,wMat,0,0.0861,0.0003221825406948,0.085322182540695,0.0011,0.085
cLn part,wMat,0.0011,0.085,0.0209,0.085
cArc part,wMat,0.0209,0.085,0.021677817459305,0.085322182540695,0.022,0.0861
cLn part,wMat,0.022,0.0861,0.022,0.091633333
cArc part,wMat,0.022,0.091633333,0.021892605722137,0.091892605722137,0.021633333,0.092
cLn part,wMat,0.021633333,0.092,0.016240182153323,0.092
cArc part,wMat,0.016240182153323,0.092,0.011,0.089503,0.0057598178466775,0.092
cLn part,wMat,0.0057598178466775,0.092,0.000366667,0.092
cArc part,wMat,0.000366667,0.092,0.00010739427786267,0.091892605722137,0,0.091633333
cLn part,wMat,0,0.091633333,0,0.0861
cCLn part,wMat,0.05,0,-0.05,0
Part.InsertSketch
end sub

sub codeBag1(part)
Part.InsertSketch
Set swActiveMat = Part.GetActiveSketch()
swSketchMat= createMatFromSWMat(swActiveMat.ModelToSketchXForm)
mSkMat=createMat4x4FromValues(1,0,0,0,1,0,0,0,1,0,0,0)
wMat=mulMat4x4Mat4x4(swSketchMat,mSkMat)
cLn part,wMat,0,0.1064,0,0.100866667
cArc part,wMat,0,0.100866667,0.00010739427786267,0.10060739427786,0.000366667,0.1005
cLn part,wMat,0.000366667,0.1005,0.0057598178466775,0.1005
cArc part,wMat,0.0057598178466775,0.1005,0.011,0.102997,0.016240182153323,0.1005
cLn part,wMat,0.016240182153323,0.1005,0.021633333,0.1005
cArc part,wMat,0.021633333,0.1005,0.021892605722137,0.10060739427786,0.022,0.100866667
cLn part,wMat,0.022,0.100866667,0.022,0.1064
cArc part,wMat,0.022,0.1064,0.021677817459305,0.10717781745931,0.0209,0.1075
cLn part,wMat,0.0209,0.1075,0.0011,0.1075
cArc part,wMat,0.0011,0.1075,0.0003221825406948,0.10717781745931,0,0.1064
cCLn part,wMat,0.05,0,-0.05,0
Part.InsertSketch
end sub

sub codeBag2(part)
Part.InsertSketch
Set swActiveMat = Part.GetActiveSketch()
swSketchMat= createMatFromSWMat(swActiveMat.ModelToSketchXForm)
mSkMat=createMat4x4FromValues(1,0,0,0,1,0,0,0,1,0,0,0)
wMat=mulMat4x4Mat4x4(swSketchMat,mSkMat)
cArc part,wMat,0.004253,0.09625,0.011,0.102997,0.017747,0.09625
cLn part,wMat,0.017747,0.09625,0.004253,0.09625
cCLn part,wMat,0.05,0.09625,-0.05,0.09625
Part.InsertSketch
end sub

sub main
set swApp=CreateObject("SldWorks.Application")
code = swApp.RevisionNumber
found = InStr(code, ".")
If (found > 0) Then
  code = Left(code, found-1)
  If (CInt(code) >= 11) Then
    sw2003api=1
  End If
End If
swApp.SetUserPreferenceToggle 11, FALSE
swApp.SetUserPreferenceToggle 97, FALSE
getLocalOptions
createPart3
end sub
