ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
AGArlene Garfield01/10/2019

I want the user input to be round to 1 decimal place.  Currently it is rounding to next whole number.

System option on Part is set to

Length: .12

Mass: .1

Under customer properties the field I have user input to are set to property type NUMBER

It seems to me it should be an easy fix but I have get to get it.

(In total the user is putting in 5 inputs but I am pasting the code for just 1 for this answer.)

It should be noted that the input are being pulled form custom properties and being used in equations.  I want it this way because we have tab fields set up where the user can go ahead and change just one or two value instead of running the whole macro again.

Other then the rounding issue the Macro and equations work perfect.

Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim swCustPropMgr As SldWorks.CustomPropertyManager

'Gets and sets the User input for Overall Tool Width
Dim UTWNumber As Integer

UTWNumber = InputBox("Specify Overall Tool Width")
Dim UTW As Integer
UTW = CDbl(UTWNumber)
MsgBox UTW

Dim TW As Long
Dim TWBool As Boolean
Dim WPropValues As String
Dim WResolved As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension

Set swCustProp = swModelDocExt.CustomPropertyManager("")


TW = swCustProp.Add3("Tool Side Width", swCustomInfoDouble, UTW, swCustomPropertyReplaceValue)

TWBool = swCustProp.Get4("Tool Side Width", False, WPropValues, WResolved)
   Debug.Print "Value: " & WPropValues
   Debug.Print "Evaluated value: " & WResolved
   Debug.Print "Up-to-date data: " & TWINT

MsgBox ("Equation Value have been updated" & vbCrLf & _
"Tool Width = " & WResolved)

Set swApp = Application.SldWorks
End Sub