dim swApp
dim storePath
dim docVisible
Private Const MAX_PATH = 260
'Directories only
Private Const BIF_RETURNONLYFSDIRS = &H1&
'Windows 2000 (Shell32.dll 5.0) extended dialog
Private Const BIF_NEWDIALOGSTYLE = &H40
' show edit box
Private Const BIF_EDITBOX = &H10&
' add all dir options
Private Const BIF_BrowseFolder = BIF_EDITBOX  Or BIF_RETURNONLYFSDIRS Or BIF_NEWDIALOGSTYLE
' set the virtual desktop as  ini folder 
Private Const IniFolder = &H0 'Virtual Desktop
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 IsEqual(argVec3DA, argVec3DB)
  For i = 0 To 2
    If( argVec3DA(i) <> argVec3DB(i) ) Then
      Exit For
    End If
  Next
  If(i = 3) Then
    IsEqual = 1
  Else
    IsEqual = 0
  End If
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()
   Set getFaceFromModel = nothing
   minDist = -1
   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.000001 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 < minDist Or minDist = -1 ) Then
           Set getFaceFromModel = face
           minDist = dTest
           found=1
         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 < minDist Or minDist = -1 ) 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
           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.SketchManager.CreateLine 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.SketchManager.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.SketchManager.CreateCircleByRadius pk1(0),pk1(1),0,rad
end sub
Public Function  BrowseForFolder
Dim objFolder, objShell
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Please select the folder..", BIF_BrowseFolder, IniFolder)
If Not (objFolder Is Nothing) Then
		BrowseForFolder = objFolder.Self.path
End If
End Function
Sub SelectCommonEdge(argFaceA, argFaceB)
  edgesA = argFaceA.GetEdges
  edgesB = argFaceB.GetEdges
  For Each edgeA In edgesA
    Set vertexA1 = edgeA.GetStartVertex
    Set vertexA2 = edgeA.GetEndVertex
    pointA1 = vertexA1.GetPoint
    pointA2 = vertexA2.GetPoint
    For Each edgeB In edgesB
      Set vertexB1 = edgeB.GetStartVertex
      Set vertexB2 = edgeB.GetEndVertex
      pointB1 = vertexB1.GetPoint
      pointB2 = vertexB2.GetPoint
      If ( (IsEqual(pointA1, pointB1) And IsEqual(pointA2, pointB2)) Or (IsEqual(pointA1, pointB2) And IsEqual(pointA2, pointB1)) ) Then
        edgeA.Select(True)
        Exit Sub
      End If
    Next
  Next
End Sub
Sub CreatePart0
dim errors as long
dim warnings as long
Dim longstatus As Long
if (docVisible=0) then
 swApp.DocumentVisible 0, 1
end if
set res=swApp.OpenDoc6 ( storePath & "Spur gears with straight teeth ZCL-2_5-20-A15-K.sldprt",1,3,"", errors, warnings)
swApp.ActivateDoc2 "Spur gears with straight teeth ZCL-2_5-20-A15-K.sldprt", False, longstatus
if not res is nothing then
 if (docVisible=0) then
  swApp.DocumentVisible 1, 1
 end if
 exit sub
end if
if (docVisible=0) then
 swApp.DocumentVisible 1, 1
end if
Dim sPartTemplateName As String
sPartTemplateName = swApp.GetUserPreferenceStringValue(8)
Set part = swApp.NewDocument(sPartTemplateName, 0, 0, 0)
swApp.ActivateDoc2 "Spur gears with straight teeth ZCL-2_5-20-A15-K.sldprt", False, longstatus
Set part = swApp.ActiveDoc
part.SketchManager.AddToDB = true
part.SketchManager.DisplayWhenAdded = false
part.ActiveView.EnableGraphicsUpdate = false
Set modelExt = part.Extension
Set customPropMgr = modelExt.CustomPropertyManager("")
customPropMgr.Add2 "NB", 30, "Spur gears with straight teeth ZCL-2.5-20-A15-K"
customPropMgr.Add2 "NN", 30, "ZCL-2.5-K"
customPropMgr.Add2 "NT", 30, "Spur gears with straight teeth"
customPropMgr.Add2 "NBSYN", 30, "Spur gears with straight teeth $DESCRIPTION."
customPropMgr.Add2 "LINA", 30, "Spur gears with straight teeth ZCL-2.5-20-A15-K"
customPropMgr.Add2 "CATALOG", 30, "Elesa"
customPropMgr.Add2 "CODE", 30, "550715-K"
customPropMgr.Add2 "DESCRIPTION", 30, "ZCL-2.5-20-A15-K"
customPropMgr.Add2 "DIM01", 30, "2.5"
customPropMgr.Add2 "DIM02", 30, "20"
customPropMgr.Add2 "DIM03", 30, "50.0"
customPropMgr.Add2 "DIM04", 30, "55.0"
customPropMgr.Add2 "DIM05", 30, "40"
customPropMgr.Add2 "DIM06", 30, "15"
customPropMgr.Add2 "DIM07", 30, "5"
customPropMgr.Add2 "DIM08", 30, "17.3+0.1"
customPropMgr.Add2 "DIM09", 30, "35"
customPropMgr.Add2 "DIM10", 30, "-"
customPropMgr.Add2 "DIM11", 30, "25"
customPropMgr.Add2 "DIM12", 30, "50.4"
customPropMgr.Add2 "WEIGHT", 30, "73"
customPropMgr.Add2 "SUPPLIER", 30, "ELESA"
customPropMgr.Add2 "ARTICLENO", 30, "Spur gears with straight teeth ZCL-2.5-20-A15-K"
customPropMgr.Add2 "BOMINFO", 30, "Spur gears with straight teeth ZCL-2.5-20-A15-K"
customPropMgr.Add2 "CREATOR", 30, "CADENAS GmbH"
customPropMgr.Add2 "IsFastener", 30, "0"
part.SummaryInfo(0)="Spur gears with straight teeth ZCL-2.5-20-A15-K"
part.SummaryInfo(4)="Spur gears with straight teeth"
part.SummaryInfo(2)="Cadenas PARTsolutions"
valRGB=part.MaterialPropertyValues
valRGB(0)=0.37999999523163
valRGB(1)=0.37999999523163
valRGB(2)=0.37999999523163
valRGB(7)=0
part.MaterialPropertyValues=valRGB
Dim featMgr as object
set featMgr = part.FeatureManager
codeBag0 part,featMgr
part.ActiveView.EnableGraphicsUpdate = true
part.SketchManager.DisplayWhenAdded = true
part.SketchManager.AddToDB = false
part.EditRebuild3
part.Rebuild swRebuildAll
Set modelExt = part.Extension
modelExt.SaveAs storePath & "Spur gears with straight teeth ZCL-2_5-20-A15-K.sldprt",0,0,nothing,errors,warnings
End Sub
sub codeBag1(part,wMat)
cLn part,wMat,0,0.04,0.0175,0.04
cLn part,wMat,0.0175,0.04,0.0175,0.025
cLn part,wMat,0.0175,0.025,0.0275,0.025
cLn part,wMat,0.0275,0.025,0.0275,0
cLn part,wMat,0.0275,0,0,0
cLn part,wMat,0,0,0,0.04
cCLn part,wMat,0,0,0,0.04
Part.SketchManager.InsertSketch True
end sub

sub codeBag2(part,wMat)
cArc part,wMat,-0.0025,0.0070710678118655,-3.8898755829348e-18,-0.0075,0.0025,0.0070710678118655
cLn part,wMat,0.0025,0.0070710678118655,0.0025,0.0098
cLn part,wMat,0.0025,0.0098,-0.0025,0.0098
cLn part,wMat,-0.0025,0.0098,-0.0025,0.0070710678118655
Part.SketchManager.InsertSketch True
end sub

sub codeBag3(part,wMat)
cLn part,wMat,-0.055,0.055,-0.055,-0.055
cLn part,wMat,-0.055,-0.055,0.055,-0.055
cLn part,wMat,0.055,-0.055,0.055,0.055
cLn part,wMat,0.055,0.055,-0.055,0.055
cArc part,wMat,-0.0275,1.7763568394003e-18,-0.027487459577938,-0.00083040107853848,-0.027449849749001,-0.0016600448058037
cArc part,wMat,-0.027449849749001,-0.0016600448058037,-0.025455423548694,-0.0025092552564459,-0.0233171481535,-0.0028651661894899
cArc part,wMat,-0.0233171481535,-0.0028651661894899,-0.022693542048979,-0.0028332836247753,-0.022083749949178,-0.002967651506013
cArc part,wMat,-0.022083749949178,-0.002967651506013,-0.021678640858683,-0.0032339162362853,-0.021468292831234,-0.0036706816070936
cLn part,wMat,-0.021468292831234,-0.0036706816070936,-0.021399367170495,-0.0040552089631082
cLn part,wMat,-0.021399367170495,-0.0040552089631082,-0.021322829286006,-0.0044382937924516
cArc part,wMat,-0.021322829286006,-0.0044382937924516,-0.021358796684325,-0.004921736268913,-0.021638402103747,-0.0053177553230248
cArc part,wMat,-0.021638402103747,-0.0053177553230248,-0.022156755837775,-0.0056659083625138,-0.022748790919599,-0.005864391443452
cArc part,wMat,-0.022748790919599,-0.005864391443452,-0.02460860082251,-0.006977944936997,-0.026154054198117,-0.0084979673453111
cArc part,wMat,-0.026154054198117,-0.0084979673453111,-0.025885519502582,-0.0092838504986596,-0.025593376418693,-0.010061266495382
cArc part,wMat,-0.025593376418693,-0.010061266495382,-0.023434143923572,-0.010252602038249,-0.021290540648545,-0.0099303300145728
cArc part,wMat,-0.021290540648545,-0.0099303300145728,-0.020707308253559,-0.0097073030095518,-0.020085839544658,-0.0096466583367098
cArc part,wMat,-0.020085839544658,-0.0096466583367098,-0.01961827832467,-0.0097747055521563,-0.019282740269956,-0.0101260578259
cLn part,wMat,-0.019282740269956,-0.0101260578259,-0.01909887910675,-0.010469501033855
cLn part,wMat,-0.01909887910675,-0.010469501033855,-0.018908243086487,-0.010809230444133
cArc part,wMat,-0.018908243086487,-0.010809230444133,-0.018792523021571,-0.011281081133442,-0.018936066556241,-0.011744119833203
cArc part,wMat,-0.018936066556241,-0.011744119833203,-0.019321465046889,-0.012235413162989,-0.019823189224227,-0.012607130692039
cArc part,wMat,-0.019823189224227,-0.012607130692039,-0.021247866597809,-0.014240895864625,-0.022247967345311,-0.016164094438043
cArc part,wMat,-0.022247967345311,-0.016164094438043,-0.021749724423293,-0.016828531947582,-0.021231645084984,-0.017477621319426
cArc part,wMat,-0.021231645084984,-0.017477621319426,-0.019118967015929,-0.01699235269847,-0.017179866684991,-0.016023443949152
cArc part,wMat,-0.017179866684991,-0.016023443949152,-0.016694098849981,-0.015631103940996,-0.016121787219234,-0.015381383037189
cArc part,wMat,-0.016121787219234,-0.015381383037189,-0.015637541308542,-0.015358678812945,-0.015209851831542,-0.015589147721238
cLn part,wMat,-0.015209851831542,-0.015589147721238,-0.014928859686321,-0.015858965398105
cLn part,wMat,-0.014928859686321,-0.015858965398105,-0.014642571895744,-0.016123157497526
cArc part,wMat,-0.014642571895744,-0.016123157497526,-0.014386705692136,-0.016536154703662,-0.014380136878877,-0.017020888068012
cArc part,wMat,-0.014380136878877,-0.017020888068012,-0.01459485463665,-0.017607230473934,-0.014957155651307,-0.018115796149445
cArc part,wMat,-0.014957155651307,-0.018115796149445,-0.015807243147924,-0.020109848682867,-0.016164094438043,-0.022247967345311
cArc part,wMat,-0.016164094438043,-0.022247967345311,-0.015484914778212,-0.022725919438199,-0.014791612400788,-0.023183144794977
cArc part,wMat,-0.014791612400788,-0.023183144794977,-0.012932292407091,-0.022068773483882,-0.01138750767114,-0.020548071548089
cArc part,wMat,-0.01138750767114,-0.020548071548089,-0.011046754736341,-0.020024823510391,-0.010579622033695,-0.01961047079759
cArc part,wMat,-0.010579622033695,-0.01961047079759,-0.010126092795977,-0.019439237581316,-0.0096481171225881,-0.019526263221643
cLn part,wMat,-0.0096481171225881,-0.019526263221643,-0.0092974994643127,-0.019696043733279
cLn part,wMat,-0.0092974994643127,-0.019696043733279,-0.0089435837470484,-0.019858837558417
cArc part,wMat,-0.0089435837470484,-0.019858837558417,-0.0085726173714813,-0.020172554237323,-0.0084165792115022,-0.020631533187224
cArc part,wMat,-0.0084165792115022,-0.020631533187224,-0.0084395981662445,-0.021255529389302,-0.0086270114706054,-0.021851161259569
cArc part,wMat,-0.0086270114706054,-0.021851161259569,-0.0088192966031805,-0.024010309398475,-0.0084979673453111,-0.026154054198117
cArc part,wMat,-0.0084979673453111,-0.026154054198117,-0.0077043337848946,-0.026398735593413,-0.0069036736355786,-0.026619340531527
cArc part,wMat,-0.0069036736355786,-0.026619340531527,-0.0054797149128678,-0.024984948958505,-0.0044804600650069,-0.023061310737066
cArc part,wMat,-0.0044804600650069,-0.023061310737066,-0.0043180773018419,-0.022458373833439,-0.0040018497309362,-0.021919949042139
cArc part,wMat,-0.0040018497309362,-0.021919949042139,-0.0036234313306124,-0.02161694772847,-0.0031430416633981,-0.021551862788409
cLn part,wMat,-0.0031430416633981,-0.021551862788409,-0.0027560352152499,-0.021605136077434
cLn part,wMat,-0.0027560352152499,-0.021605136077434,-0.0023680483849883,-0.021650723946202
cArc part,wMat,-0.0023680483849883,-0.021650723946202,-0.0019193818048198,-0.021834322915777,-0.0016291481291505,-0.022222620089726
cArc part,wMat,-0.0016291481291505,-0.022222620089726,-0.0014582150251889,-0.022823188992064,-0.0014523952992379,-0.023447582459614
cArc part,wMat,-0.0014523952992379,-0.023447582459614,-0.00096805585926507,-0.025560473740499,-3.5527136788005e-18,-0.0275
cArc part,wMat,-3.5527136788005e-18,-0.0275,0.00083040107853842,-0.027487459577938,0.0016600448058037,-0.027449849749001
cArc part,wMat,0.0016600448058037,-0.027449849749001,0.0025092552564459,-0.025455423548694,0.0028651661894899,-0.0233171481535
cArc part,wMat,0.0028651661894899,-0.0233171481535,0.0028332836247753,-0.022693542048979,0.002967651506013,-0.022083749949178
cArc part,wMat,0.002967651506013,-0.022083749949178,0.0032339162362853,-0.021678640858683,0.0036706816070936,-0.021468292831234
cLn part,wMat,0.0036706816070936,-0.021468292831234,0.004055208963108,-0.021399367170495
cLn part,wMat,0.004055208963108,-0.021399367170495,0.0044382937924516,-0.021322829286006
cArc part,wMat,0.0044382937924516,-0.021322829286006,0.004921736268913,-0.021358796684325,0.0053177553230249,-0.021638402103747
cArc part,wMat,0.0053177553230249,-0.021638402103747,0.0056659083625138,-0.022156755837775,0.005864391443452,-0.022748790919599
cArc part,wMat,0.005864391443452,-0.022748790919599,0.006977944936997,-0.02460860082251,0.008497967345311,-0.026154054198117
cArc part,wMat,0.008497967345311,-0.026154054198117,0.0092838504986597,-0.025885519502582,0.010061266495382,-0.025593376418693
cArc part,wMat,0.010061266495382,-0.025593376418693,0.010252602038249,-0.023434143923572,0.0099303300145728,-0.021290540648545
cArc part,wMat,0.0099303300145728,-0.021290540648545,0.0097073030095518,-0.020707308253559,0.0096466583367098,-0.020085839544658
cArc part,wMat,0.0096466583367098,-0.020085839544658,0.0097747055521563,-0.01961827832467,0.0101260578259,-0.019282740269956
cLn part,wMat,0.0101260578259,-0.019282740269956,0.010469501033855,-0.01909887910675
cLn part,wMat,0.010469501033855,-0.01909887910675,0.010809230444133,-0.018908243086487
cArc part,wMat,0.010809230444133,-0.018908243086487,0.011281081133442,-0.018792523021571,0.011744119833202,-0.018936066556241
cArc part,wMat,0.011744119833202,-0.018936066556241,0.012235413162989,-0.019321465046889,0.012607130692039,-0.019823189224227
cArc part,wMat,0.012607130692039,-0.019823189224227,0.014240895864625,-0.021247866597809,0.016164094438043,-0.022247967345311
cArc part,wMat,0.016164094438043,-0.022247967345311,0.016828531947582,-0.021749724423293,0.017477621319426,-0.021231645084984
cArc part,wMat,0.017477621319426,-0.021231645084984,0.01699235269847,-0.019118967015929,0.016023443949152,-0.017179866684991
cArc part,wMat,0.016023443949152,-0.017179866684991,0.015631103940996,-0.016694098849981,0.015381383037189,-0.016121787219234
cArc part,wMat,0.015381383037189,-0.016121787219234,0.015358678812945,-0.015637541308542,0.015589147721238,-0.015209851831542
end sub

sub codeBag4(part,wMat)
cLn part,wMat,0.015589147721238,-0.015209851831542,0.015858965398105,-0.014928859686321
cLn part,wMat,0.015858965398105,-0.014928859686321,0.016123157497526,-0.014642571895744
cArc part,wMat,0.016123157497526,-0.014642571895744,0.016536154703662,-0.014386705692136,0.017020888068012,-0.014380136878876
cArc part,wMat,0.017020888068012,-0.014380136878876,0.017607230473934,-0.01459485463665,0.018115796149445,-0.014957155651307
cArc part,wMat,0.018115796149445,-0.014957155651307,0.020109848682867,-0.015807243147924,0.022247967345311,-0.016164094438043
cArc part,wMat,0.022247967345311,-0.016164094438043,0.022725919438199,-0.015484914778212,0.023183144794977,-0.014791612400788
cArc part,wMat,0.023183144794977,-0.014791612400788,0.022068773483882,-0.012932292407091,0.020548071548089,-0.01138750767114
cArc part,wMat,0.020548071548089,-0.01138750767114,0.020024823510391,-0.011046754736341,0.01961047079759,-0.010579622033695
cArc part,wMat,0.01961047079759,-0.010579622033695,0.019439237581316,-0.010126092795977,0.019526263221643,-0.0096481171225881
cLn part,wMat,0.019526263221643,-0.0096481171225881,0.019696043733279,-0.0092974994643127
cLn part,wMat,0.019696043733279,-0.0092974994643127,0.019858837558417,-0.0089435837470484
cArc part,wMat,0.019858837558417,-0.0089435837470484,0.020172554237323,-0.0085726173714813,0.020631533187224,-0.0084165792115022
cArc part,wMat,0.020631533187224,-0.0084165792115022,0.021255529389302,-0.0084395981662445,0.021851161259569,-0.0086270114706054
cArc part,wMat,0.021851161259569,-0.0086270114706054,0.024010309398475,-0.0088192966031805,0.026154054198117,-0.0084979673453111
cArc part,wMat,0.026154054198117,-0.0084979673453111,0.026398735593413,-0.0077043337848947,0.026619340531527,-0.0069036736355786
cArc part,wMat,0.026619340531527,-0.0069036736355786,0.024984948958505,-0.0054797149128678,0.023061310737066,-0.0044804600650069
cArc part,wMat,0.023061310737066,-0.0044804600650069,0.022458373833439,-0.0043180773018419,0.021919949042139,-0.0040018497309362
cArc part,wMat,0.021919949042139,-0.0040018497309362,0.02161694772847,-0.0036234313306124,0.021551862788409,-0.0031430416633981
cLn part,wMat,0.021551862788409,-0.0031430416633981,0.021605136077434,-0.0027560352152501
cLn part,wMat,0.021605136077434,-0.0027560352152501,0.021650723946202,-0.0023680483849883
cArc part,wMat,0.021650723946202,-0.0023680483849883,0.021834322915777,-0.0019193818048198,0.022222620089726,-0.0016291481291505
cArc part,wMat,0.022222620089726,-0.0016291481291505,0.022823188992064,-0.0014582150251889,0.023447582459614,-0.0014523952992379
cArc part,wMat,0.023447582459614,-0.0014523952992379,0.025560473740499,-0.00096805585926508,0.0275,-1.0658141036402e-17
cArc part,wMat,0.0275,-1.0658141036402e-17,0.027487459577938,0.00083040107853847,0.027449849749001,0.0016600448058037
cArc part,wMat,0.027449849749001,0.0016600448058037,0.025455423548694,0.0025092552564459,0.0233171481535,0.0028651661894899
cArc part,wMat,0.0233171481535,0.0028651661894899,0.022693542048979,0.0028332836247753,0.022083749949178,0.002967651506013
cArc part,wMat,0.022083749949178,0.002967651506013,0.021678640858683,0.0032339162362853,0.021468292831234,0.0036706816070936
cLn part,wMat,0.021468292831234,0.0036706816070936,0.021399367170495,0.0040552089631078
cLn part,wMat,0.021399367170495,0.0040552089631078,0.021322829286006,0.0044382937924516
cArc part,wMat,0.021322829286006,0.0044382937924516,0.021358796684325,0.004921736268913,0.021638402103748,0.0053177553230249
cArc part,wMat,0.021638402103748,0.0053177553230249,0.022156755837775,0.0056659083625138,0.022748790919599,0.005864391443452
cArc part,wMat,0.022748790919599,0.005864391443452,0.02460860082251,0.006977944936997,0.026154054198117,0.008497967345311
cArc part,wMat,0.026154054198117,0.008497967345311,0.025885519502582,0.0092838504986597,0.025593376418693,0.010061266495382
cArc part,wMat,0.025593376418693,0.010061266495382,0.023434143923572,0.010252602038249,0.021290540648545,0.0099303300145728
cArc part,wMat,0.021290540648545,0.0099303300145728,0.020707308253559,0.0097073030095518,0.020085839544659,0.0096466583367098
cArc part,wMat,0.020085839544659,0.0096466583367098,0.01961827832467,0.0097747055521563,0.019282740269956,0.010126057825899
cLn part,wMat,0.019282740269956,0.010126057825899,0.01909887910675,0.010469501033854
cLn part,wMat,0.01909887910675,0.010469501033854,0.018908243086487,0.010809230444133
cArc part,wMat,0.018908243086487,0.010809230444133,0.018792523021571,0.011281081133442,0.018936066556241,0.011744119833203
cArc part,wMat,0.018936066556241,0.011744119833203,0.019321465046889,0.012235413162989,0.019823189224227,0.012607130692039
cArc part,wMat,0.019823189224227,0.012607130692039,0.021247866597809,0.014240895864625,0.022247967345311,0.016164094438043
cArc part,wMat,0.022247967345311,0.016164094438043,0.021749724423293,0.016828531947582,0.021231645084984,0.017477621319426
cArc part,wMat,0.021231645084984,0.017477621319426,0.019118967015929,0.01699235269847,0.017179866684991,0.016023443949152
cArc part,wMat,0.017179866684991,0.016023443949152,0.016694098849981,0.015631103940996,0.016121787219234,0.015381383037189
cArc part,wMat,0.016121787219234,0.015381383037189,0.015637541308542,0.015358678812945,0.015209851831542,0.015589147721238
cLn part,wMat,0.015209851831542,0.015589147721238,0.014928859686321,0.015858965398105
cLn part,wMat,0.014928859686321,0.015858965398105,0.014642571895744,0.016123157497526
cArc part,wMat,0.014642571895744,0.016123157497526,0.014386705692136,0.016536154703662,0.014380136878877,0.017020888068012
cArc part,wMat,0.014380136878877,0.017020888068012,0.01459485463665,0.017607230473934,0.014957155651307,0.018115796149445
cArc part,wMat,0.014957155651307,0.018115796149445,0.015807243147924,0.020109848682867,0.016164094438043,0.022247967345311
cArc part,wMat,0.016164094438043,0.022247967345311,0.015484914778212,0.022725919438199,0.014791612400788,0.023183144794977
cArc part,wMat,0.014791612400788,0.023183144794977,0.012932292407091,0.022068773483882,0.01138750767114,0.020548071548089
cArc part,wMat,0.01138750767114,0.020548071548089,0.011046754736341,0.020024823510391,0.010579622033695,0.01961047079759
cArc part,wMat,0.010579622033695,0.01961047079759,0.010126092795977,0.019439237581316,0.0096481171225881,0.019526263221643
cLn part,wMat,0.0096481171225881,0.019526263221643,0.0092974994643127,0.019696043733279
cLn part,wMat,0.0092974994643127,0.019696043733279,0.0089435837470484,0.019858837558417
cArc part,wMat,0.0089435837470484,0.019858837558417,0.0085726173714813,0.020172554237323,0.0084165792115022,0.020631533187224
cArc part,wMat,0.0084165792115022,0.020631533187224,0.0084395981662445,0.021255529389302,0.0086270114706054,0.021851161259569
cArc part,wMat,0.0086270114706054,0.021851161259569,0.0088192966031805,0.024010309398475,0.0084979673453111,0.026154054198117
cArc part,wMat,0.0084979673453111,0.026154054198117,0.0077043337848947,0.026398735593413,0.0069036736355787,0.026619340531527
cArc part,wMat,0.0069036736355787,0.026619340531527,0.0054797149128678,0.024984948958505,0.0044804600650069,0.023061310737066
cArc part,wMat,0.0044804600650069,0.023061310737066,0.0043180773018419,0.022458373833439,0.0040018497309362,0.021919949042139
cArc part,wMat,0.0040018497309362,0.021919949042139,0.0036234313306124,0.02161694772847,0.0031430416633981,0.021551862788409
cLn part,wMat,0.0031430416633981,0.021551862788409,0.0027560352152485,0.021605136077434
cLn part,wMat,0.0027560352152485,0.021605136077434,0.0023680483849883,0.021650723946202
cArc part,wMat,0.0023680483849883,0.021650723946202,0.0019193818048198,0.021834322915777,0.0016291481291505,0.022222620089726
cArc part,wMat,0.0016291481291505,0.022222620089726,0.0014582150251889,0.022823188992064,0.0014523952992379,0.023447582459614
cArc part,wMat,0.0014523952992379,0.023447582459614,0.00096805585926506,0.025560473740499,1.7763568394003e-18,0.0275
cArc part,wMat,1.7763568394003e-18,0.0275,-0.00083040107853843,0.027487459577938,-0.0016600448058037,0.027449849749001
cArc part,wMat,-0.0016600448058037,0.027449849749001,-0.0025092552564459,0.025455423548694,-0.0028651661894899,0.0233171481535
cArc part,wMat,-0.0028651661894899,0.0233171481535,-0.0028332836247753,0.022693542048979,-0.002967651506013,0.022083749949178
end sub

sub codeBag5(part,wMat)
cArc part,wMat,-0.002967651506013,0.022083749949178,-0.0032339162362853,0.021678640858683,-0.0036706816070936,0.021468292831234
cLn part,wMat,-0.0036706816070936,0.021468292831234,-0.0040552089631082,0.021399367170495
cLn part,wMat,-0.0040552089631082,0.021399367170495,-0.0044382937924516,0.021322829286006
cArc part,wMat,-0.0044382937924516,0.021322829286006,-0.004921736268913,0.021358796684325,-0.0053177553230249,0.021638402103747
cArc part,wMat,-0.0053177553230249,0.021638402103747,-0.0056659083625138,0.022156755837775,-0.005864391443452,0.022748790919599
cArc part,wMat,-0.005864391443452,0.022748790919599,-0.006977944936997,0.02460860082251,-0.0084979673453111,0.026154054198117
cArc part,wMat,-0.0084979673453111,0.026154054198117,-0.0092838504986596,0.025885519502582,-0.010061266495382,0.025593376418693
cArc part,wMat,-0.010061266495382,0.025593376418693,-0.010252602038249,0.023434143923572,-0.0099303300145728,0.021290540648545
cArc part,wMat,-0.0099303300145728,0.021290540648545,-0.0097073030095518,0.020707308253559,-0.0096466583367098,0.020085839544658
cArc part,wMat,-0.0096466583367098,0.020085839544658,-0.0097747055521563,0.01961827832467,-0.0101260578259,0.019282740269956
cLn part,wMat,-0.0101260578259,0.019282740269956,-0.010469501033855,0.01909887910675
cLn part,wMat,-0.010469501033855,0.01909887910675,-0.010809230444133,0.018908243086487
cArc part,wMat,-0.010809230444133,0.018908243086487,-0.011281081133442,0.018792523021571,-0.011744119833203,0.018936066556241
cArc part,wMat,-0.011744119833203,0.018936066556241,-0.012235413162989,0.019321465046889,-0.012607130692039,0.019823189224227
cArc part,wMat,-0.012607130692039,0.019823189224227,-0.014240895864625,0.021247866597809,-0.016164094438043,0.022247967345311
cArc part,wMat,-0.016164094438043,0.022247967345311,-0.016828531947582,0.021749724423293,-0.017477621319426,0.021231645084984
cArc part,wMat,-0.017477621319426,0.021231645084984,-0.01699235269847,0.019118967015929,-0.016023443949152,0.017179866684991
cArc part,wMat,-0.016023443949152,0.017179866684991,-0.015631103940996,0.016694098849981,-0.015381383037189,0.016121787219234
cArc part,wMat,-0.015381383037189,0.016121787219234,-0.015358678812945,0.015637541308542,-0.015589147721238,0.015209851831542
cLn part,wMat,-0.015589147721238,0.015209851831542,-0.015858965398105,0.01492885968632
cLn part,wMat,-0.015858965398105,0.01492885968632,-0.016123157497526,0.014642571895744
cArc part,wMat,-0.016123157497526,0.014642571895744,-0.016536154703662,0.014386705692136,-0.017020888068012,0.014380136878877
cArc part,wMat,-0.017020888068012,0.014380136878877,-0.017607230473934,0.01459485463665,-0.018115796149445,0.014957155651307
cArc part,wMat,-0.018115796149445,0.014957155651307,-0.020109848682867,0.015807243147924,-0.022247967345311,0.016164094438043
cArc part,wMat,-0.022247967345311,0.016164094438043,-0.022725919438199,0.015484914778212,-0.023183144794977,0.014791612400788
cArc part,wMat,-0.023183144794977,0.014791612400788,-0.022068773483882,0.012932292407091,-0.020548071548089,0.01138750767114
cArc part,wMat,-0.020548071548089,0.01138750767114,-0.020024823510391,0.011046754736341,-0.01961047079759,0.010579622033695
cArc part,wMat,-0.01961047079759,0.010579622033695,-0.019439237581316,0.010126092795977,-0.019526263221643,0.0096481171225882
cLn part,wMat,-0.019526263221643,0.0096481171225882,-0.019696043733279,0.0092974994643124
cLn part,wMat,-0.019696043733279,0.0092974994643124,-0.019858837558417,0.0089435837470484
cArc part,wMat,-0.019858837558417,0.0089435837470484,-0.020172554237323,0.0085726173714813,-0.020631533187224,0.0084165792115022
cArc part,wMat,-0.020631533187224,0.0084165792115022,-0.021255529389302,0.0084395981662445,-0.021851161259569,0.0086270114706053
cArc part,wMat,-0.021851161259569,0.0086270114706053,-0.024010309398475,0.0088192966031805,-0.026154054198117,0.0084979673453111
cArc part,wMat,-0.026154054198117,0.0084979673453111,-0.026398735593413,0.0077043337848947,-0.026619340531527,0.0069036736355786
cArc part,wMat,-0.026619340531527,0.0069036736355786,-0.024984948958505,0.0054797149128678,-0.023061310737066,0.0044804600650069
cArc part,wMat,-0.023061310737066,0.0044804600650069,-0.022458373833439,0.0043180773018419,-0.021919949042139,0.0040018497309362
cArc part,wMat,-0.021919949042139,0.0040018497309362,-0.02161694772847,0.0036234313306124,-0.021551862788409,0.0031430416633981
cLn part,wMat,-0.021551862788409,0.0031430416633981,-0.021605136077434,0.0027560352152496
cLn part,wMat,-0.021605136077434,0.0027560352152496,-0.021650723946202,0.0023680483849883
cArc part,wMat,-0.021650723946202,0.0023680483849883,-0.021834322915777,0.0019193818048198,-0.022222620089726,0.0016291481291506
cArc part,wMat,-0.022222620089726,0.0016291481291506,-0.022823188992064,0.0014582150251889,-0.023447582459614,0.0014523952992379
cArc part,wMat,-0.023447582459614,0.0014523952992379,-0.025560473740499,0.00096805585926506,-0.0275,1.7763568394003e-18
Part.SketchManager.InsertSketch True
end sub

sub codeBag0(part,featMgr)
part.CreatePlaneFixed2 createVec3d(0,0,0),createVec3d(1,0,0),createVec3d(0,1,0),1
set feat4=part.Extension.GetLastFeatureAdded()
feat4.select2 false,0
part.SketchManager.InsertSketch True
part.BlankRefGeom
Set swActiveMat = Part.SketchManager.ActiveSketch
swSketchMat= createMatFromSWMat(swActiveMat.ModelToSketchXForm)
mSkMat=createMat4x4FromValues(1,0,0,0,1,0,0,0,1,0,0,0)
wMat=mulMat4x4Mat4x4(swSketchMat,mSkMat)
codeBag1 part,wMat
set feat4=part.Extension.GetLastFeatureAdded()
feat4.select2 false,0
featMgr.FeatureRevolve 6.2831853071796,1,6.2831853071796,0,0,1,1,1
part.CreatePlaneFixed2 createVec3d(0,0,0),createVec3d(1,0,0),createVec3d(0,0,-1),1
set feat6=part.Extension.GetLastFeatureAdded()
feat6.select2 false,0
part.SketchManager.InsertSketch True
part.BlankRefGeom
Set swActiveMat = Part.SketchManager.ActiveSketch
swSketchMat= createMatFromSWMat(swActiveMat.ModelToSketchXForm)
mSkMat=createMat4x4FromValues(1,0,0,0,0,-1,0,1,0,0,0,0)
wMat=mulMat4x4Mat4x4(swSketchMat,mSkMat)
codeBag2 part,wMat
set feat6=part.Extension.GetLastFeatureAdded()
feat6.select2 false,0
featMgr.FeatureCut3 1,0,1,0,0,0.04,0.04,1,1,0,0,0,0,0,0,0,0,0,1,1,false,false,false,0,0,0
part.CreatePlaneFixed2 createVec3d(0,0,0),createVec3d(1,0,0),createVec3d(0,0,-1),1
set feat8=part.Extension.GetLastFeatureAdded()
feat8.select2 false,0
part.SketchManager.InsertSketch True
part.BlankRefGeom
Set swActiveMat = Part.SketchManager.ActiveSketch
swSketchMat= createMatFromSWMat(swActiveMat.ModelToSketchXForm)
mSkMat=createMat4x4FromValues(1,0,0,0,0,-1,0,1,0,0,0,0)
wMat=mulMat4x4Mat4x4(swSketchMat,mSkMat)
codeBag3 part,wMat
codeBag4 part,wMat
codeBag5 part,wMat
set feat8=part.Extension.GetLastFeatureAdded()
feat8.select2 false,0
featMgr.FeatureCut3 1,0,1,0,0,0.035,0.035,1,1,0,0,0,0,0,0,0,0,0,1,1,false,false,false,0,0,0
end sub

sub main
set swApp = Application.SldWorks
code = swApp.RevisionNumber
found = InStr(code, ".")
If (found > 0) Then
  code = Left(code, found-1)
  docVisible=1
  If (CInt(code) >= 18) Then
    docVisible=0
  End If
End If
swApp.SetUserPreferenceToggle 11, FALSE
swApp.SetUserPreferenceToggle 97, FALSE
storePath=BrowseForFolder
If (storePath <> "") Then
   If ((Right(storePath, 1) <> "\") And (Right(storePath, 1) <> "/")) Then
       storePath = storePath + "\"
   End If
   createPart0
End If
end sub
