Every SolidWorks user who sends DXF flat patterns to a laser or plasma table eventually runs into this: the file imports into the CAM software, but the part is floating somewhere off in negative coordinate space, or centered around zero, or positioned wherever it happened to be when someone modeled the part. The CAM operator repositions it manually. Every. Time.
This is not a CAM software bug. SolidWorks exports the flat pattern geometry exactly as it exists in the part’s coordinate system — wherever that happens to be. The fix is to tell SolidWorks to reframe the export around a specific point on the part, usually the lower-left corner of the bounding box.
Why the Position Matters to CAM Software
Most fabrication CAM packages define the work area relative to (0, 0). When a part lands with its lower-left corner at (0, 0), the operator sees it at the origin of the material sheet and can nest immediately. When the part arrives at (-147.3, 83.1), the operator has to drag it, snap it, or script around the offset.
Specific behaviors by software:
- LightBurn (CO₂ and fiber laser): imports DXF content relative to the artboard zero point. Geometry at negative coordinates imports off the visible workspace. Users have to drag it onto the grid before cutting.
- SheetCAM (plasma, waterjet, oxy-fuel): opens DXF at whatever coordinates are in the file. Parts in negative space need a manual translate step before the toolpath generates correctly.
- Hypertherm ProNest (industrial nesting): nesting algorithms expect part geometry in positive XY space. Parts at negative coordinates import but display warnings and behave unpredictably in automatic nesting.
- RDWorks / LaserCAD (Chinese laser controllers): similar to LightBurn — the software pads a small margin from (0, 0), so geometry well into negative space goes off the laser bed grid entirely.
- Amada AP100 / Trumpf TruTops: toolpaths defined relative to machine reference zero. Parts not near the origin require explicit offset entry at the machine.
The one-time manual drag is tolerable for prototype work. It becomes a bottleneck when a programmer is processing 80 flat patterns a shift.
How SolidWorks Decides Where to Put the Flat Pattern
When SolidWorks unfolds a sheet metal part, the flat geometry is computed in the same coordinate space as the 3D part. The fixed face — the face that stays stationary while everything unfolds around it — stays at its 3D position projected onto the XY plane.
For a part modeled with the base flange starting at the part origin, the flat pattern is likely near (0, 0). For a part that was modeled as a sub-component in an assembly context, or was built from an imported solid and converted to sheet metal, the flat geometry might end up anywhere.
The alignment array parameter in ExportToDWG2 — the main sheet metal DXF export API call — theoretically handles this, but as documented in the flat pattern export deep-dive, it is a 12-element array with a largely undocumented structure. For one-off manual exports, the coordinate system approach is more predictable and doesn’t require API access.
The Fix: Output Coordinate System
The Output Coordinate System dropdown is available in the DXF/DWG Options dialog when you export via File > Save As. It lists all Coordinate System reference features defined in the part. When you select one, SolidWorks offsets the exported geometry so that the coordinate system’s origin becomes (0, 0) in the output file, and the CS’s X and Y axes become the DXF X and Y axes.
Three steps:
Step 1: Create a Reference Coordinate System at the Corner
Open the sheet metal part. If the flat pattern is visible (you’re in the flat state), that is the best context for picking vertices — you are seeing the actual corner you want to anchor.
- Go to Insert > Reference Geometry > Coordinate System (or click the Reference Geometry dropdown on the Features tab).
- Click the Origin box and select the vertex at the lower-left corner of the flat pattern bounding box. “Lower-left” means the most negative X and most negative Y vertex when the part faces up. For rectangular parts this is unambiguous. For irregular parts, pick the corner that makes the most sense for your CAM workflow — most operators want the part in the first quadrant (positive X and Y).
- Click the X axis box and select an edge running to the right (positive X direction).
- Click the Y axis box and select an edge running upward (positive Y direction). The Z axis calculates automatically as the normal.
- Name the feature something consistent —
DXF_Originworks. Consistent naming matters for batch export (see below).
The coordinate system feature will survive model rebuilds as long as the vertex and edges you referenced still exist. If you picked topology that gets regenerated on rebuild (unusual for flat-pattern corners), the feature will flag an error. Fix it by re-picking the correct geometry.
Step 2: Export via File > Save As
The right-click Flat-Pattern → Export to DXF path opens a different PropertyManager that controls which entities export (bend lines, sketch geometry, etc.) but does not expose the Output Coordinate System option. You need the File > Save As path:
- With the flat pattern feature active (unflatten the part, or right-click Flat-Pattern → Flatten), go to File > Save As.
- Set file type to DXF (*.dxf) or DWG (*.dwg).
- Click Options before saving.
- In the DXF/DWG Output Options dialog, locate Output Coordinate System near the bottom. It defaults to Default (the part origin).
- Switch it to your
DXF_Origincoordinate system. - Click OK and save.
The exported DXF now has the flat pattern positioned with the selected corner at (0, 0). Import it into LightBurn, SheetCAM, or ProNest — the part sits at the origin without any manual repositioning.
Step 3: Check orientation
The Z axis of your coordinate system becomes the normal in the DXF export. For a flat pattern this should point straight up (out of the sheet). If you see the part mirrored or reversed when you import, the Z axis is pointing down — go back to the Coordinate System feature and flip the Z direction.
The fixed face controls which side of the sheet faces “up” in the export (which side is the cosmetically visible face vs. the back side). If you need to control which face is up, see how SolidWorks assigns the flat pattern fixed face — changing FixedFace2 is the API path; the UI equivalent is editing the Flat-Pattern feature in the feature tree and re-selecting the fixed face.
The Right-Click Export Path vs. File > Save As
These two export paths are different:
| Right-click Flat-Pattern → Export to DXF | File > Save As → DXF | |
|---|---|---|
| Output Coordinate System | Not available | Available |
| Entity selection (bend lines, sketches) | Full control | Less control |
| Geometry type (polyline vs. spline) | Options available | Options available |
| Batch automation | Via API or macro | Via API or macro |
For manual, one-off exports where origin control matters, use File > Save As. For batch export via macro or add-in, the ExportToDWG2 method handles both paths and the alignment array (or the IFlatPatternViewPropertyManager approach) handles origin — but for most shops the coordinate system approach is simpler to set up and maintain.
Automating It for Multiple Parts
If you run a batch DXF export across an assembly (via CadShift or a macro), the coordinate system name needs to be consistent across parts for the batch logic to find it. Name every part’s origin coordinate system DXF_Origin. The export routine then queries the part for a coordinate system with that name and applies it automatically.
In VBA, to set the output coordinate system before saving:
' Assumes swModel is open in flat pattern state
Dim swExportData As SldWorks.ExportPdmData
Dim swDXFData As SldWorks.DxfOutputData
' Get DXF options
Dim swExportOpts As Object
swExportOpts = swModel.Extension.GetExportOptions(swExportOptionsOpts_FlatPattern)
' Find the coordinate system feature
Dim swFeat As SldWorks.Feature
Dim swCoordSys As SldWorks.CoordinateSystemFeatureData
swFeat = swModel.FirstFeature()
Do While Not swFeat Is Nothing
If swFeat.GetTypeName2() = "CoordSys" Then
If swFeat.Name = "DXF_Origin" Then
' Found the coordinate system — pass its transform to export
Exit Do
End If
End If
swFeat = swFeat.GetNextFeature()
Loop
The full export call with alignment requires passing the coordinate system’s transform matrix into the ExportToDWG2 alignment array parameter. If you are using CadShift’s batch export, there is a per-part coordinate system override that handles this automatically without requiring API coding.
When You Cannot Add a Coordinate System
Occasionally you receive a flat pattern part that you cannot modify — a supplier’s file, a locked PDM checkout, or a part where model changes are restricted. In those cases:
- CAM software import settings: Most laser CAM software has an import dialog where you can set an offset or choose to auto-center parts on import. This is a workaround, not a fix — it re-centers every import rather than positioning the part at a specific point.
- Post-export DXF edit: Python with
ezdxflets you translate all entities in a DXF file by a fixed offset. This is automatable:This is a reasonable fallback but adds a post-processing step.import ezdxf doc = ezdxf.readfile("part.dxf") msp = doc.modelspace() # Get bounding box to find lower-left corner from ezdxf.math import BoundingBox bb = ezdxf.bbox.extents(msp) # Translate so lower-left is at (0,0) for entity in msp: entity.translate(-bb.extmin.x, -bb.extmin.y, 0) doc.saveas("part_aligned.dxf")
Connection to Bend Line and Layer Control
Origin placement only solves the positioning problem. If your CAM software is also getting confused by SolidWorks’ DXF layer structure — bend lines on wrong layers, hidden lines included, form features cluttering the outline — the DXF entity export settings and layer control guide covers those options.
For kerf compensation: that still belongs in the laser software, not in the DXF. Getting the origin right is a separate concern from kerf — both need to be handled, but in different places.
If your flat patterns are coming out with disconnected curves or spline approximation errors, those are also separate from the origin issue and have their own fix (chord tolerance adjustment in the export options).
Summary
The Output Coordinate System option in File > Save As → DXF Options is the correct tool for this problem. Create a Reference Coordinate System at the lower-left corner of the flat pattern, select it in the export options, and every DXF you generate from that part arrives at (0, 0) in the CAM software. For batch export across an assembly, use a consistent coordinate system name (DXF_Origin) so the batch logic can find and apply it automatically.
One coordinate system feature per part. Two extra clicks in the export dialog. The CAM operator stops repositioning parts manually.