I am trying to write an extremely basic Macro and it is giving me fits. I just want a user form that will allow the user to input the length and diameter of a cylinder and SolidWorks draw and extrude it for them. I literally watched a step by step tutorial and almost copied the code word for word but it is giving me the error "Compile Error: Sub or Function Not Defined". I have absolutely no idea why it isn't working but this is my first time writing a macro code for SolidWorks so it could be something blatantly obvious that I am missing. Any help would be greatly appreciated.
Here is my code:
' ******************************************************************************
' C:\Users\awallace\AppData\Local\Temp\swx1764\Macro1.swb - macro recorded on 11/28/16 by awallace
' ******************************************************************************
Dim swApp As Object
Dim Part As ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
'Display User Form
UserForm1.Show
'Opens new part in SolidWorks
Set swApp = Application.SldWorks
Set Part = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2015\templates\Part.prtdot", 0, 0, 0)
swApp.ActivateDoc2 "Part2", False, longstatus
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
End Sub
Public Sub CreateCylinder(InputLength As Double, InputDia As Double)
'Define Variables
Dim CylinderLength As Double
Dim CylinderDia As Double
'Inputs User Values
CylinderLength = InputLength
CylinderDia = InputDia
'Convert to Meters
CylinderLength = ConvertToMeters(CylinderLength)
CylinderDia = ConvertToMeters(CylinderDia)
'Creating the SketchManager
Dim swSketchManager As SketchManager
Set swSketchManager = Part.SketchManager
'Create Circle
Dim TheCircle As SketchSegment
Set TheCircle = swSketchManager.CreateCircle(0, 0, 0, CylinderDia / 2, 0, 0)
'Creating the SketchManager
Dim swFeatureManager As FeatureManager
Set swFeatureManager = Part.FeatureManager
'Create Circle
Dim TheLength As Feature
Set TheLength = swFeatureManager.FeatureExtrusion2(True, False, False, swEndCondBlind, swEndCondBlind, CylinderLength, 0, False, False, False, False, 0, 0, False, False, False, False, False, False, False, False, False, False)
End Sub
Here is also the code for the userform:
Private Sub CommandButton1_Click()
'Create Variables
Dim Length As Double
Dim Dia As Double
'Set User Inputs Equal to Variables
Length = LengthTextBox.Text
Dia = DiaTextBox.Text
Call CreateCylinder(Length, Dia)
End
End Sub
SolidworksApi macros