CADSharpTools: .NET Developer Toolkit

Blog 8.13.2018 No Comments

CADSharp is pleased to announce that our industry-leading SOLIDWORKS API and SOLIDWORKS PDM API libraries are now available to Power User members. This is the ultimate toolkit for those who want to speed up their .NET addin and stand-alone development by utilizing our hand-made library of commonly used functions and classes. Best of all, it’s regularly updated by CADSharp team members with great new functionality.


Possibly the best way to demonstrate the power of this toolset is to compare two addins, one that uses CADSharpTools and one that does not. These addins both accomplish the same thing: creating dropdown menus in SolidWorks that appear in particular document types and display message boxes when clicked.

You will notice that the example using CADSharpTools requires fewer imports, fewer classes, fewer lines of code (about a third less), and is much more readable. More importantly, you can imagine how much faster developing an addin is using CADSharpTools. You can set up your own template with CADSharpTools already utilized or quickly update old addins. You might even discover a better way to accomplish certain tasks using our toolset.


Note: While this is complete list of classes, the descriptions do not state all functionality in each class.


Contains classes that let you easily create drop-down menus and CommandManager tabs (saving you possibly hundreds of lines of code), register and unregister your addin with SolidWorks, and perform “cleanup” when unloading the addin.


Contains functions that let you rename components, get a component’s instance, get a component’s name without the instance number, and create an array of unique components in the assembly.


Contains dozens of useful file extension and file filter constants.


Lets you input your Document Manager license key via the constructor and then easily work with a document’s custom properties, get a document’s configuration names, and more.


Provides flexible options for searching for and updating notes, getting a note’s position relative to the sheet margin, and locating views.


Lets you store a spreadsheet’s contents in a .NET DataTable, get worksheet and workbook pointers, create Excel visibly or invisibly, quit Excel, and determine if any Excel processes are active.


Lets you safely create, copy, delete, and rename files and folders in Windows. You can also determine if a file is read-only, verify its extension, verify whether a file name is legal, and read text files.


Lets you sort ListView controls in ascending or descending order, as well as create file and folder browsers that add the browsed location to a text box.


Lets you easily handle various aspects of logging, namely creating the log entries and accessing the log folder in the user’s AppData folder.


Performs various tasks related to two or more SolidWorks model types, including toggling graphics updating, creating named views, working with display states, creating a pack and go, and saving the model (Save or Save As) in any format.


Performs tasks related to parts, including getting IBody2 pointer given a body name, getting a body’s folder feature, and getting a body’s cut list feature.


Lets you create an instance of a SolidWorks (for use with a stand-alone) with the ability to specify the desired year if multiple installations are present, exit SolidWorks (for use with a stand-alone), determine if any SolidWorks processes are active, open a SolidWorks model, get a model’s document type from its file path, and get a list of all SolidWorks models of a particular type in a folder.


Lets you search geometry and topology, such as getting the length of an edge and getting the largest planar face in a body.


Lets you easily get the data from a project’s Assembly Information, display a message with the product name as the title, save out an embedded icon to the local disk and get its file path, convert an enumerator to string, and compare two values given a tolerance.


Lets you read read a specific XML node, update a specific XML node, and get a list of all material names in a SolidWorks material database.

How Can I Use It?

If you are a Power User member and wish to use CADSharpTools then you may visit our .NET Resources page to learn how to obtain it. You can either download the DLL and add it as a reference to your project or you can copy and paste individual portions of the source code into your code. The documentation is available in the repository. You can also submit bug reports and enhancement requests using the repository’s built-in issue tracker. If you’re new to online repositories and have any questions, let us know.

Think of it as similar to our Macro Library, except 1) the entire codebase can be downloaded and referenced in a project, 2) the codebase is in .NET. As long as you kindly do not share the DLL or the code outside of your organization with individuals who aren’t CADSharp, the sky is the limit. (Note: it is fine to use the code in a project that you will sell to a customer. Please the entire Usage Agreement here.)

Want to keep up with future content and training events? Sign up for our newsletter.

Leave Comment

Upcoming API Training Class Near Portland

Blog 8.6.2018 No Comments

CADSharp is offering a four-day live training class in Vancouver, WA, USA in October, 2018 on SolidWorks addin and stand-alone development using Visual Studio and VB.NET. Here’s what others have said about our classes:

You’re the best programming teacher I’ve ever had. I took two programming classes in college and neither of the teachers broke the subject down and explained every line of code like you do.

Alex B.,

Why You Should Attend

<> Highly rated. The last 40 survey respondents averaged 8.4 / 10 for the question, “Were you satisfied with how much you learned?”

<> Beginner-friendly. No previous programming experience is required.

<> Personal. Small class size allows for excellent teacher-student interaction.

<> Professional. Content is designed and taught by Keith Rice, a leading SolidWorks API expert and software developer.

<> Flexible. Lessons are tailored on-the-fly to student needs and interests.

<> Learning doesn’t end. Complimentary one-year premium membership included.

Course Description

Download syllabus for Advanced Program Development

Ready to go to the next level? If you already have experience writing VBA macros for SolidWorks (prerequisites are stated in syllabus), then this course will cover all aspects of professional add-in and stand-alone development: program setup and architecture, object-oriented programming techniques, using Visual Studio, source code control and collaboration using GitHub, documentation, deployment, and administration. The contents of this course is borne out of years of real-world experience and has never been published in any form.


1250 USD per person

Date and Time

October 9 – 12. Training is from 8:00 AM to 4:30 PM with an hour break for lunch. Trainees may stay after the class to ask additional questions.


810 Main St, Vancouver, WA 98660 USA

Our training center is located just 10 minutes away from the Portland International Airport (PDX) with plenty of excellent hotels, eateries, and outdoor attractions in the area.

Registration and Payment

Registration is limited to six people. Email me to register.

I have one computer available for rent for 200 USD. First come, first serve. Otherwise, you will be expected to bring your own computer.

Invoices may be paid by check, wire transfer, or credit card. If by credit card, an additional 3% processing fee is included. Invoices will be sent out a week before the class starts.

I hope you can join me for a great time of learning! Let me know if you have ANY questions.


Want to keep up with future content and training events? Sign up for our newsletter.

Leave Comment

Fix These 4 Common PDM Vault Addin Errors

Blog 8.1.2018 No Comments

Have you ever attempted to develop a SOLIDWORKS PDM addin and run into errors when adding it to the vault? This short posts discusses four different types of errors one might actually see when adding a new PDM addin to a vault.

1. The DLL is not com module 

This error simply means that your DLL is com-compliant. Your types were not registered for com interops and probably are not com-visible. You can fix this by:

  • Decorating the class with the ComVisible(“true”) attribute and guid:

  • Going to Project > Build (Compile for VB.NET) and then checking register for com interop.

2. Please Select at least one DLL implementing the IEdmAddIn5 Interface


Your add-in class must  implement the IEDMAddIn5 interface.  To implement this interface, you must reference a dll that contains this interface.

  • Add a reference to <SOLIDWORKS PDM INSTALLATION FOLDER>/EPDM.interop.epdm.dll. This assumes you are writing a add-in for CLR4 (SOLIDWORKS 2013 and newer). Here’s a table that summarises the different versions of the PDM interops:
     PDM Professional versions… Support .NET Framework…
    2013 and later 4.0 and later
    2009 – 2012 3.5, 3.0, and 2.0
    2008 and earlier 2.0

    To target earlier version of the CLR, follow this link for instructions.

  • Implement the interface like follow:

    Normally, after writing MyPDMAddInClass : IEdmAddIn5, Visual Studio will show a squiggly line under IEdmAddIn5, press Ctrl + ; and then implement explicity:

3. The add-in ‘<Path>’ cannot be installed since it returned an invalid required version SOLIDWORKS PDM version from its GetAddInInfo Method

This is because of an incomplete implementation of the GetAddInInfo method. A sample implementation of the GetAddInInfo would look like this:

4. The archive server could not open  the Windows registry

This error is because of windows permissions. If you are running Windows 7/10, make sure the run the administration tool with administrator privileges.
If you have downloaded the add-in dll, make sure it’s not blocked by windows. To unblock, simply right on it and go to properties:

Questions or comments? Please share in the comments below!

Amen Jlili

Want to keep up with future content and training events? Join our newsletter!

Leave Comment