SOLIDWORKS C# API - Fix Unit Issue
Objective
I want to:
- Fix Unit issue for input values using Solidworks C# API.
For more Details on why Fixing Unit issue, please visit 🚀 Solidworks Macro - Fix Unit Issue article.
- We will continue from previous article 🚀 WPF Tutorials - Create Line UI - Part 2 article.
Demo Video
Below 🎬 video shows how to “Fix Unit Issue” in Solidworks C# API.
Please note that there are no explanation in the video.
Explanation of each step and why we write code this way is given in this post.
Add [UnitConversionHelper] class
- First we add
Helperfolder in our solution. - Then we add
UnitConversionHelperclass inside “Helper” folder. - Please see below 👇🏻 image for reference.
Add [Public Properties]
- First we need to create a region.
- Region Name: Public Properties
- Inside this region, we we need 2 properties.
- Please see below 👇🏻 for code reference.
#region Public Properties
public double LengthConversionFactor { get; set; }
public double AngleConversionFactor { get; set; }
#endregion
- In above code, we create 2 properties.
- Name of 1st property:
LengthConversionFactor - Name of 2nd property:
AngleConversionFactor - Type of both properties:
double
- Name of 1st property:
- We expose them as public members, so that we can use them in other classes.
Add [Public Method]
-
Now we need to add a method to
UnitConversionHelperclass. - First we need to create a region.
- Region Name: Public Method
- Inside this Public Method region, we need to create a method.
- Method Name:
UnitConversion - Method Return Type:
void[means this method did not return anything] - Method parameters:
- Name of parameter:
swUnit - Type of parameter:
swLengthUnit_e[Parameter forSolidworks Length Unitin current document.]
- Name of parameter:
-
Method Purpose: Depending upon the value of
swUnitparameter, we will modify the values ofLengthConversionFactorandAngleConversionFactorproperties. - Please see below 👇🏻 for code reference.
#region Public Method
public void UnitConversion(swLengthUnit_e swUnit)
{
}
#endregion
- Please see below 👇🏻 image for reference.
Update Properties Value
- Now we need to update values of
LengthConversionFactorandAngleConversionFactorproperties. - For this, we will use
if-else ifconditional statement. - Please see below 👇🏻 for code reference.
#region Public Method
public void UnitConversion(swLengthUnit_e swUnit)
{
if (swUnit == swLengthUnit_e.swMETER)
{
LengthConversionFactor = AngleConversionFactor = 1;
}
else if (swUnit == swLengthUnit_e.swMM)
{
LengthConversionFactor = 1 / 1000;
AngleConversionFactor = 1 * 0.01745329;
}
else if (swUnit == swLengthUnit_e.swCM)
{
LengthConversionFactor = 1 / 100;
AngleConversionFactor = 1 * 0.01745329;
}
else if (swUnit == swLengthUnit_e.swINCHES)
{
LengthConversionFactor = 1 * 0.0254;
AngleConversionFactor = 1 * 0.01745329;
}
else if (swUnit == swLengthUnit_e.swFEET)
{
LengthConversionFactor = 1 * (0.0254 * 12);
AngleConversionFactor = 1 * 0.01745329;
}
else if (swUnit == swLengthUnit_e.swFEETINCHES)
{
LengthConversionFactor = 1 * 0.0254;
AngleConversionFactor = 1 * 0.01745329;
}
}
#endregion
- In above code, we are checking value of
swUnitparameter. - Depending upon the value of
swUnitparameter, we will update values ofLengthConversionFactorandAngleConversionFactorproperties accordingly.
Register [UnitConversionHelper]
- Now we need to register
UnitConversionHelperclass into DI container. - After registering class, we can create instance of
UnitConversionHelperclass through DI container. - For this, go to “
App.xaml.cs” class. - In “
App.xaml.cs” class, insideRegisterTypesmethod, we registerUnitConversionHelpermethod into DI container. - Please see below 👇🏻 for code reference.
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<PointViewModel>();
containerRegistry.RegisterSingleton<UnitConversionHelper>();
}
- Please see below 👇🏻 image for reference.
- In above code, we register
UnitConversionHelperclass asSingleton. - By doing this, we only has single instance of
UnitConversionHelperclass in our application.
This is it !!!
I hope my efforts will helpful to someone!
If you found anything to add or update, please let me know on my e-mail.
Hope this post helps you to fix Unit issue in Solidworks application.
If you like the post then please share it with your friends also.
Do let me know by you like this post or not!
Till then, Happy learning!!!


