Xarial.XCad 0.8.0-preview.4297

This is a prerelease version of Xarial.XCad.
There is a newer version of this package available.
See the version list below for details.
The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package Xarial.XCad --version 0.8.0-preview.4297
NuGet\Install-Package Xarial.XCad -Version 0.8.0-preview.4297
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Xarial.XCad" Version="0.8.0-preview.4297" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Xarial.XCad --version 0.8.0-preview.4297
#r "nuget: Xarial.XCad, 0.8.0-preview.4297"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Xarial.XCad as a Cake Addin
#addin nuget:?package=Xarial.XCad&version=0.8.0-preview.4297&prerelease

// Install Xarial.XCad as a Cake Tool
#tool nuget:?package=Xarial.XCad&version=0.8.0-preview.4297&prerelease

xCAD.NET: SOLIDWORKS API development made easy

Logo

NuGet version (xCAD.NET) Build status

User Guide Examples

xCAD.NET is a framework for building CAD agnostic applications. It allows developers to implement complex functionality with a very simple innovative approach. This brings the best user experience to the consumers of the software.

SOLIDWORKS Add-in Applications

It has never been easier to create SOLIDWORKS add-ins with toolbar and menu commands.

[ComVisible(true)]
public class XCadAddIn : SwAddInEx
{
    public enum Commands_e
    {
        Command1,
        Command2
    }

    public override void OnConnect()
    {
        this.CommandManager.AddCommandGroup<Commands_e>().CommandClick += OnCommandsButtonClick;
    }

    private void OnCommandsButtonClick(Commands_e cmd)
    {
        //TODO: handle the button click
    }
}

Property Manager Pages

Framework reinvents the way you work with Property Manager Pages. No need to code a complex code behind for adding the controls and handling the values. Simply define your data model and the framework will build the suitable Property Manager Page automatically and two-way bind controls to the data model.

[ComVisible(true)]
public class IntroPmpPageAddIn : SwAddInEx
{
    [ComVisible(true)]
    public class MyPMPageData : SwPropertyManagerPageHandler
    {
        public string Text { get; set; }
        public int Number { get; set; }
        public IXComponent Component { get; set; }
    }

    private enum Commands_e
    {
        ShowPmpPage
    }

    private IXPropertyPage<MyPMPageData> m_Page;
    private MyPMPageData m_Data = new MyPMPageData();

    public override void OnConnect()
    {
        m_Page = this.CreatePage<MyPMPageData>();
        m_Page.Closed += OnPageClosed;
        this.CommandManager.AddCommandGroup<Commands_e>().CommandClick += ShowPmpPage;
    }

    private void ShowPmpPage(Commands_e cmd)
    {
        m_Page.Show(m_Data);
    }

    private void OnPageClosed(PageCloseReasons_e reason)
    {
        Debug.Print($"Text: {m_Data.Text}");
        Debug.Print($"Number: {m_Data.Number}");
        Debug.Print($"Selection component name: {m_Data.Component.Name}");
    }
}

Macro Features

Complex macro features became an ease with xCAD.NET

[ComVisible(true)]
public class IntroMacroFeatureAddIn : SwAddInEx 
{
    [ComVisible(true)]
    public class BoxData : SwPropertyManagerPageHandler
    {
        public double Width { get; set; }
        public double Length { get; set; }
        public double Height { get; set; }
    }

    [ComVisible(true)]
    public class BoxMacroFeature : SwMacroFeatureDefinition<BoxData, BoxData>
    {
        public override ISwBody[] CreateGeometry(ISwApplication app, ISwDocument model, BoxData data)
        {
            var body = (ISwBody)app.MemoryGeometryBuilder.CreateSolidBox(new Point(0, 0, 0),
                new Vector(1, 0, 0), new Vector(0, 1, 0),
                data.Width, data.Length, data.Height).Bodies.First();

            return new ISwBody[] { body };
        }

    }

    public enum Commands_e
    {
        InsertMacroFeature,
    }

    public override void OnConnect()
    {
        this.CommandManager.AddCommandGroup<Commands_e>().CommandClick += OnCommandsButtonClick;
    }

    private void OnCommandsButtonClick(Commands_e cmd)
    {
        switch (cmd) 
        {
            case Commands_e.InsertMacroFeature:
                Application.Documents.Active.Features.CreateCustomFeature<BoxMacroFeature, BoxData, BoxData>();
                break;
        }
    }
}

SOLIDWORKS And Document Manager API

xCAD.NET allows to write the same code targeting different CAD implementation in a completely agnostic way. Example below demonstrates how to perform opening of assembly, traversing components recursively and closing the assembly via SOLIDWORKS API and SOLIDWORKS Document Manager API using the same code base.

static void Main(string[] args)
{
    var assmFilePath = @"C:\sample-assembly.sldasm";

    //print assembly components using SOLIDWORKS API
    var swApp = SwApplicationFactory.Create(SwVersion_e.Sw2022, ApplicationState_e.Silent);
    PrintAssemblyComponents(swApp, assmFilePath);

    //print assembly components using SOLIDWORKS Document Manager API
    var swDmApp = SwDmApplicationFactory.Create("[Document Manager Lincese Key]");
    PrintAssemblyComponents(swDmApp, assmFilePath);
}

//CAD-agnostic function to open assembly, print all components and close assembly
private static void PrintAssemblyComponents(IXApplication app, string filePath) 
{
    using (var assm = app.Documents.Open(filePath, DocumentState_e.ReadOnly))
    {
        IterateComponentsRecursively(((IXAssembly)assm).Configurations.Active.Components, 0);
    }
}

private static void IterateComponentsRecursively(IXComponentRepository compsRepo, int level) 
{
    foreach (var comp in compsRepo)
    {
        Console.WriteLine(Enumerable.Repeat("  ", level) + comp.Name);

        IterateComponentsRecursively(comp.Children, level + 1);
    }
}

Target Frameworks

xCAD.NET is compatible with multiple target frameworks: .NET Framework 4.6.1, .NET Core 3.1 and .NET 6.0 and number of additional computed target frameworks (e.g. .NET Framework 4.8)

When building the SOLIDWORKS add-ins see the information below

.NET Framework

  • Run Visual Studio as an Administrator
  • Install Xarial.XCad.SolidWorks package from the nuget and create add-in class as shown above
  • Build the solution. Add-in will be automatically registered. Clean the solution to unregister the add-in.
  • Set the Embed Interop option to True for all SOLIDWORKS type libraries (e.g. SolidWorks.Interop.SldWorks.tlb, SolidWorks.Interop.SwConst.tlb, SolidWorks.Interop.SwPublished.tlb). Note this might not be required as nuget will set this flag automatically.

.NET Core

  • Run Visual Studio as an Administrator
  • Install Xarial.XCad.SolidWorks package from the nuget and create add-in class as shown above
  • Add the following properties into the project file
<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <EnableComHosting>true</EnableComHosting>
</PropertyGroup>
  • Add the following into the add-in class
[ComRegisterFunction]
public static void RegisterFunction(Type t)
{
    SwAddInEx.RegisterFunction(t);
}

[ComUnregisterFunction]
public static void UnregisterFunction(Type t)
{
    SwAddInEx.UnregisterFunction(t);
}
  • Build the solution. Add-in will be automatically registered. Clean the solution to unregister the add-in.

.NET6

  • Run Visual Studio as an Administrator
  • Install Xarial.XCad.SolidWorks package from the nuget and create add-in class as shown above
  • Add the following properties into the project file
<PropertyGroup>
    <TargetFramework>net6.0-windows</TargetFramework>
    <EnableComHosting>true</EnableComHosting>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
  • Build the solution. Add-in will be automatically registered. Clean the solution to unregister the add-in.

Watch the video demonstration of xCAD in action.

Visit User Guide page and start exploring the framework.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
.NET Framework net461 is compatible.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.6.1

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net6.0

    • No dependencies.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on Xarial.XCad:

Package Downloads
Xarial.XCad.Toolkit

Utility classes for implementing xCAD.NET - Framework for developing CAD applications

Xarial.XCad.SolidWorks

Framework for developing SOLIDWORKS applications based on xCAD.NET

Xarial.XCad.SwDocumentManager

Framework for developing SOLIDWORKS applications using Document Manager based on xCAD.NET

Xarial.CadPlusPlus

CAD+ Toolset API

Xarial.XCad.Inventor

Framework for developing Autodesk Inventor applications based on xCAD.NET

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Xarial.XCad:

Repository Stars
xarial/xcad
Framework for developing CAD applications for SOLIDWORKS, including add-ins, stand-alone applications, macro features, property manager pages, etc.
Version Downloads Last updated
0.8.0 610 1/30/2024
0.8.0-beta.4964 48 1/29/2024
0.8.0-beta.4960 59 1/25/2024
0.8.0-beta.4956 47 1/25/2024
0.8.0-beta.4948 64 1/18/2024
0.8.0-beta.4929 135 12/19/2023
0.8.0-beta.4922 84 12/17/2023
0.8.0-beta.4913 100 12/1/2023
0.8.0-beta.4901 134 11/9/2023
0.8.0-beta.4893 59 11/9/2023
0.8.0-beta.4875 116 10/25/2023
0.8.0-beta.4867 64 10/25/2023
0.8.0-beta.4855 82 10/17/2023
0.8.0-beta.4843 80 10/10/2023
0.8.0-beta.4839 80 10/1/2023
0.8.0-beta.4687 326 5/25/2023
0.8.0-beta.4670 89 5/11/2023
0.8.0-beta.4627 318 2/9/2023
0.8.0-beta.4619 167 1/18/2023
0.8.0-beta.4614 102 1/16/2023
0.8.0-beta.4602 114 1/15/2023
0.8.0-beta.4599 112 1/12/2023
0.8.0-beta.4594 115 12/21/2022
0.8.0-beta.4593 97 12/21/2022
0.8.0-beta.4590 95 12/13/2022
0.8.0-beta.4583 96 12/11/2022
0.8.0-alpha.4560 156 12/6/2022
0.7.12 6,395 11/26/2021
0.7.11 715 11/23/2021
0.7.10 787 11/19/2021
0.7.9 780 11/18/2021
0.7.8 854 11/1/2021
0.7.7 836 10/26/2021
0.7.6 904 10/13/2021
0.7.5 1,262 10/6/2021
0.7.4 1,025 7/11/2021
0.7.3 864 7/2/2021
0.7.2 908 7/2/2021
0.7.1 947 6/8/2021
0.7.0 993 5/2/2021
0.6.10 1,270 12/7/2020
0.6.9 778 11/27/2020
0.6.8 840 11/9/2020
0.6.7 828 11/9/2020
0.6.6 813 10/28/2020
0.6.5 857 10/14/2020
0.6.4 767 10/8/2020
0.6.3 899 9/30/2020
0.6.2 820 9/28/2020
0.6.1 807 9/23/2020
0.6.0 884 9/13/2020
0.5.8 840 9/1/2020
0.5.7 928 7/19/2020
0.5.6 954 6/26/2020
0.5.5 901 6/26/2020
0.5.4 841 6/25/2020
0.5.3 934 6/25/2020
0.5.2 838 6/15/2020
0.5.1 831 6/15/2020
0.5.0 840 6/15/2020
0.4.0 976 2/13/2020
0.3.3 912 2/11/2020
0.3.1 997 2/9/2020
0.3.0 921 2/8/2020
0.2.4 917 2/6/2020
0.2.3 925 2/6/2020
0.2.2 913 2/6/2020
0.2.0 872 2/5/2020
0.1.1 891 2/4/2020
0.1.0 807 2/3/2020
0.0.1 583 2/3/2020