xCAD.NET framework for developing applications for CAD systems
xCAD.NET is a framework which is designed to simplify development of software for SOLIDWORKS in .NET (C# and VB.NET).
Framework provides utilities for implementation software design principles such as S.O.L.I.D, type safety, single point of maintenance for developing maintainable and scalable solutions for SOLIDWORKS and other CAD systems.
There are 3 main section of CAD functionality which are covered by framework
- Extensions - add-in skeleton, commands, menus, toolbars, events management, data access
- Property Pages - building native property pages with data binding
- Custom Feature - building parametric native features
Example projects are published in the GitHub Repository.
See video below for the demonstration of xCAD.NET capabilities:
Join xCAD.NET subreddit or xCAD Discord Channel to discuss xCAD.NET.
Framework source code is available on GitHub under MIT license.
Refer Changelog for release notes.
Architecture
Framework enables the abstraction layers over the CAD API allowing CAD agnostic development.
- Interfaces defined in the Xarial.XCad provide highest level of abstraction and completely hide the references to any CAD system, neither reference any interops or namespaces. Use this to develop CAD agnostic applications. All interface names start with IX, e.g. IXApplication, IXDocument, IXFace
- Interfaces defined in Xarial.XCad.SolidWorks, Xarial.XCad.SwDocumentManager, Xarial.XCad.Inventor or other CAD systems (future). This is an implementation of the base interfaces. This library contains references to specific CAD system and might contain functionality specific to this CAD system. For example ISwApplication is an implementation of IXApplication and ISwDocument is an implementation of IXDocument in SOLIDWORKS, while IAiApplication and IAiDocument are corresponding implementations in Autodesk Inventor. Naming convention follows the short name of the CAD system at the start of the name.
- Access to native APIs. All the xCAD wrapper classes provide access to native (underlying) APIs. For example ISwApplication.Sw would return the pointer to ISldWorks, ISwDocument.Model returns the IModelDoc2 and ISwEntity.Entity points to IEntity