Open-source project
ros/solidworks_urdf_exporter avatar
ros/solidworks_urdf_exporter

solidworks_urdf_exporter: turning CAD assemblies into robot descriptions

SolidWorks to URDF Exporter

700 stars151 forksC#MIT

At a glance

What is it?
The SolidWorks to URDF Exporter is a C# add-in for SolidWorks that turns a CAD assembly into a URDF robot description with meshes and joints, so the same model can be simulated in ROS. The catch is the version matrix: the last tagged exporter is for SolidWorks 2021, and the documented build path still assumes Visual Studio 2017.
Who is it for?
Adopt solidworks_urdf_exporter if your team already models robots in SolidWorks and needs a URDF and mesh set for ROS simulation without rebuilding the model in a robotics specific CAD tool, and if you are on SolidWorks 2018 Service Pack 5 or newer.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 28 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A SolidWorks add-in, not a standalone converter

The SolidWorks to URDF Exporter does one job: it takes an assembly open in SolidWorks and produces a URDF description of that robot, with links, joints and meshes, so the model can be loaded into a ROS simulation or a visualisation tool.

The way it is packaged is the first thing to understand. This is a C# add-in that runs inside SolidWorks itself, not a command line program that reads a STEP file. The development instructions make the consequence plain: you launch Visual Studio with admin privileges, open the solution, and point the debugging configuration at the SolidWorks executable, for example the path to SLDWORKS.exe under Program Files. Debugging therefore means attaching to a running CAD session.

The solution in the repository is SW2URDF.sln, with the add-in source in SW2URDF, a TestRunner project, an examples directory, a scripts directory and an INSTALL directory. The examples are named for the kind of mechanism they represent, with 3_DOF_ARM, 4_WHEELER, ORIGINAL_3_DOF_ARM and TOY_BLOCK, which is a useful hint about scope: this is aimed at mechanisms with a manageable number of parts and joints, not at a full vehicle model.

The add-in is authored and maintained by Stephen Brawner, and the project records past supporters including PickNik Consulting, Verb Surgical, Open Robotics and Willow Garage.

The version matrix is the real constraint

Everything about this project has to be read through its version matrix, because both ends of the chain are versioned independently.

On the SolidWorks side, the minimum required version is SolidWorks 2018 Service Pack 5. SolidWorks 2017 or earlier may work, and the project points to an issue in its tracker for that question, which tells you the answer is best effort rather than supported.

On the exporter side, the tagged releases are v1.6.1 for SolidWorks 2021, v1.6.0 for SolidWorks 2020, and 1.5.1 for SolidWorks 2019 running on 2018 Service Pack 5. The tags are dated 2021-11-21, 2020-10-16 and 2019-08-02 respectively. There is no tagged build for a SolidWorks version newer than 2021, so a team on a recent release is working with an exporter that was never released for it.

The repository is not dead. The last push was on 2026-09-25, which is well after the last tag, so work continues on the branch even though no new version has been cut for a newer SolidWorks. The practical read is that the code moves and the release tags do not, which means you are choosing between a tagged build tied to an old SolidWorks and untagged work on master for a current one.

Documentation for actual use lives on the ROS Wiki, at the sw_urdf_exporter page and its associated tutorials, rather than in this repository's readme.

Building the add-in needs Visual Studio and a specific debugging setup

The development path is documented as a numbered sequence, and every step matters.

You install Visual Studio 2017, then add the .NET desktop development workload through Tools > Get Tools and Features, checking the .NET desktop development package and selecting Modify. Next comes the SolidWorks API tools, which the instructions link to in the SolidWorks API programming guide, and then the part people usually get wrong: you launch Visual Studio with admin privileges, using Run as Administrator.

After that you open SW2URDF/SW2URDF.sln, right click SW2URDF in the Solution Explorer, go to the Debug tab, ensure Configuration is set to Debug, and make sure Start external program points at the SolidWorks executable, with the example given as the path to SLDWORKS.exe under the SOLIDWORKS Corp directory.

The requirement for administrator rights is not incidental. Loading an add-in into SolidWorks touches COM registration and file locations under Program Files, and the debugging session is hosting a second process, so the elevated launch is what makes the attach work.

Two failure modes are documented in the troubleshooting notes, and both are environment issues rather than code issues. An AxImp.exe error points at the .NET tools installation, with the advice to install the Windows 10 SDK if there is no error at all. A Resourse.resx error means the resources file at sw2urdf/SW2URDF/Resources.resx is missing or empty, and the fix is to delete it, open the SW2URDF project properties, go to the Resources tab and create a new file.

Meshes come out as 3DXML and need a second pass

There is a specific gap between what the exporter produces and what a ROS visualisation pipeline can display, and the project documents the fix rather than leaving you to discover it.

The exporter writes meshes in the 3DXML format, which is SolidWorks' own interchange format. A ROS visualisation tool such as RViz cannot show coloured meshes from that directly, so the URDF has to be rewritten to point at DAE meshes instead. The project provides a command for this, using the scikit-robot tool:

bash
pip3 install scikit-robot -U
convert-urdf-mesh <URDF_PATH> --output <OUTPUT_URDF_PATH>

The first line installs or upgrades scikit-robot, and the second rewrites the URDF at the given path into a new one, leaving the mesh references pointing at DAE files that carry the colour information.

This is a two step workflow rather than a single export, and it is worth understanding why before you script it. The exporter owns the CAD semantics, links and joints, while the mesh format conversion is handled by an external Python tool. That split means a pipeline has two dependencies with different runtimes, a .NET add-in inside SolidWorks on Windows and a Python package on whatever machine runs the conversion.

The 3DXML and DAE formats also differ in what they carry, and the visible effect of skipping the step is a model that loads but renders without the colours you expected.

Where this fits against the alternatives

The realistic alternatives fall into two groups, and this tool sits between them.

On one side there is building the URDF by hand or with a general purpose script. A URDF is a text format, so a team with a small robot can write links and joints directly, and that gives complete control over the result with no CAD dependency at all. It scales badly, because every link needs a mesh reference, every joint needs an axis and a limit, and the file stops being reviewable once a model has more than a handful of parts.

On the other side there is a robotics oriented CAD tool or an open source mesh pipeline, which can read STEP or other neutral formats and produce a URDF without needing SolidWorks at all. The tradeoff there is that the neutral format loses the assembly structure and the joint information, so you end up re-establishing the kinematic tree by hand, which is the work the exporter is automating.

The SolidWorks exporter is the option for a team whose engineering workflow already lives in SolidWorks and whose robots are already modelled as assemblies there. Its specific advantage is that a CAD assembly already encodes which parts move relative to which, and the exporter turns that into joints.

The limit is the same in both directions. The add-in only runs on Windows, only inside SolidWorks, and only for versions it was built against.

Editorial conclusion

Adopt solidworks_urdf_exporter if your team already models robots in SolidWorks and needs a URDF and mesh set for ROS simulation without rebuilding the model in a robotics specific CAD tool, and if you are on SolidWorks 2018 Service Pack 5 or newer. Do not adopt it if you need an exporter for a current SolidWorks release, because the newest tagged build is v1.6.1 for SolidWorks 2021 and the documentation still lists Visual Studio 2017, or if you are on Linux, since the add-in runs inside SolidWorks on Windows. Before you commit, check that your SolidWorks version has a matching tagged exporter release, run the ROS Wiki tutorials on one example assembly, and verify that the exported mesh format matches what your visualization setup expects, since the project ships a separate conversion step for that.

Frequently asked questions

What does the SolidWorks to URDF Exporter produce?

It converts a SolidWorks assembly into a URDF robot description with links, joints and meshes so the model can be used in ROS simulation and visualisation. The exporter writes meshes in the 3DXML format, and a separate conversion step rewrites the URDF to point at DAE files for coloured rendering in tools like RViz.

Which SolidWorks versions does the exporter support?

The minimum required version is SolidWorks 2018 Service Pack 5, and SolidWorks 2017 or earlier may work. The tagged releases are v1.6.1 for SolidWorks 2021, v1.6.0 for SolidWorks 2020 and 1.5.1 for SolidWorks 2019 on 2018 Service Pack 5.

How do I convert the exported mesh format from 3DXML to DAE?

Install scikit-robot with pip3 install scikit-robot -U, then run convert-urdf-mesh with the URDF path and the output path you want. The rewritten URDF points at DAE meshes so coloured meshes display in visualisation tools like RViz.

How do I build the SolidWorks URDF exporter from source?

The documented path is Visual Studio 2017 with the .NET desktop development workload, the SolidWorks API tools, launching Visual Studio as Administrator, opening SW2URDF/SW2URDF.sln, and setting the Debug configuration with Start external program pointing at the SolidWorks executable.

Where are the usage tutorials for the SolidWorks URDF exporter?

The usage documentation lives on the ROS Wiki, on the sw_urdf_exporter page and its associated tutorials, and the repository itself carries example assemblies such as 3_DOF_ARM, 4_WHEELER and TOY_BLOCK.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. ros/solidworks_urdf_exporter on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ros-solidworks-urdf-exporter.svg)](https://hysenlabs.com/projects/ros-solidworks-urdf-exporter)

Was this useful?