When you have two versions of the same part — the designed file and the manufactured sample, a supplier’s model and your original, or two revisions where you can’t find the delta — SOLIDWORKS has a built-in tool for exactly this. It overlays the geometry, highlights the differences, and produces a report. Most engineers have never seen it because it lives behind an add-in that is disabled by default.

It is called Compare Geometry, and it is part of the SOLIDWORKS Utilities add-in.

Enabling SOLIDWORKS Utilities

The comparison tools are not available until you activate the add-in.

Go to Tools > Add-Ins. In the list, find SOLIDWORKS Utilities. Check both the startup checkbox (left) and the active session checkbox (right) if you want it available permanently. Click OK.

Once loaded, a new menu group appears: Tools > Compare.

Inside that group are three tools: Geometry, Features, and Documents. They each do something distinct.

Compare Geometry

Tools > Compare > Geometry is what you want for finding physical differences between two parts — missing material, extra bosses, fillet radius changes, hole position shifts.

It opens a dialog with two file pickers: a Reference document (the correct version) and a Modified document (the one you are checking). Both must be SOLIDWORKS part files (.sldprt). The tool does not work on assemblies.

There is a Configuration dropdown for each — if your part has multiple configurations, you can compare the 3D Machined configuration in one file against the As Cast configuration in another, or compare two configurations of the same file.

Under Options, you choose the comparison mode:

  • Face comparison — identifies faces that are geometrically different. A face in the modified part that changed position, angle, or area relative to the reference gets flagged.
  • Volume comparison — computes the material difference between the two bodies. The result is an actual solid body representing the volume that exists in one file but not the other.
  • Face and volume comparison — runs both. This is the most informative option for most inspection tasks.

There is also a tolerance setting. For face comparison, angular tolerance controls the maximum acceptable angle between corresponding face edges before SOLIDWORKS considers them different. Position tolerance controls spatial offset. The defaults work for most situations; tighten them if you need sub-millimeter sensitivity.

Click Compare and wait. The calculation takes a few seconds for simple parts, 30–60 seconds for parts with complex freeform surfaces. SOLIDWORKS opens both parts, positions them for comparison, and displays the results.

Reading the results

The comparison result is delivered in two ways:

Visual overlay in the graphics window: SOLIDWORKS positions the two parts in the same coordinate space. Faces are color-coded by status. Green faces are unchanged. Red faces differ between the reference and modified versions. Areas that appear in one model but not the other are highlighted — additions appear in one color, removals in another. You can rotate and inspect the overlay in 3D.

HTML report: SOLIDWORKS generates a gtReportIndex.htm report and optionally adds it to the Design Binder (the report attachment embedded in the SOLIDWORKS file). The report includes summary statistics: number of faces compared, number of differences found, volume delta, and thumbnails of the differing face regions. For audit trail purposes, the HTML report is what you attach to an ECO or supplier feedback email.

Volume comparison part file: If you ran a volume comparison, SOLIDWORKS can also save the result as a separate .sldprt file — the volume difference body physically materialized as a solid. The file is named something like Volume Comparison of PartA and PartB.sldprt. Open it to see exactly what material is present in the modified file but absent in the reference, or vice versa. For machined parts, this is particularly useful: the volume difference body is the material that was supposed to be removed by machining but wasn’t, or material that was over-machined.

Compare Features

Tools > Compare > Features operates on the feature tree rather than the final geometry. It identifies which features exist in one version but not the other, whether feature parameters changed (boss height went from 15mm to 17mm), and whether the feature order changed.

Feature comparison is most useful when you have the design intent of both models and want to understand what changed in the parametric structure — not just in the output geometry. If someone added a fillet at the wrong location and you need to find it in the feature tree, this is faster than interrogating geometry visually.

The output is also an HTML report. It shows a side-by-side feature list with status indicators: Identical, Modified, Added, Removed.

Compare Documents

Tools > Compare > Documents is the broadest comparison mode. It uses a bitmask of options — face comparison, volume comparison, feature comparison, or any combination — and is primarily useful when scripting batch comparisons across multiple files via the API.

Using the comparison tools via API

All three comparison interfaces are accessible through the SolidWorks.Interop.gtswutilities namespace. The entry point is swApp.GetAddInObject("Utilities.UtilitiesApp"), which returns an IUtilities interface. From there, GetToolInterface(toolId, errorCode) returns the specific comparison interface.

// C#: Compare Geometry between two part files
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.gtswutilities;

// swApp is an existing SldWorks.ISldWorks instance
var swUtil = (IUtilities)swApp.GetAddInObject("Utilities.UtilitiesApp");
int errorCode;
var compareGeom = (ICompareGeometry)swUtil.GetToolInterface(2, out errorCode);

string referenceFile = @"C:\parts\bracket-rev-A.sldprt";
string modifiedFile  = @"C:\parts\bracket-rev-B.sldprt";
string reportPath    = @"C:\reports\bracket-comparison";

int volDiffStatus, faceDiffStatus;
int result = compareGeom.CompareGeometry3(
    referenceFile, "",           // reference file + config ("" = active config)
    modifiedFile,  "",           // modified file + config
    (int)gtGdfOperationOption_e.gtGdfFaceAndVolumeCompare,
    (int)gtResultSaveOption_e.gtResultSaveReport,
    reportPath,
    false,                       // add to binder: false
    true,                        // show results in graphics window
    out volDiffStatus,
    out faceDiffStatus
);

compareGeom.Close();

The same pattern applies in VBA: GetAddInObject("Utilities.UtilitiesApp") returns an object you can Set to an IUtilities variable, then call GetToolInterface(2, errorCode) to get the geometry comparison interface.

Important: SOLIDWORKS Utilities must be loaded before you call GetAddInObject. If you are writing a standalone out-of-process application that runs without a user session, you need to call swApp.LoadAddIn("SWUtilities.dll") (or the full path) before the comparison call. In a running SolidWorks session, the add-in may already be loaded if the user enabled it.

The gtGdfOperationOption_e enum values:

  • gtGdfFaceCompare = 0 — face differences only
  • gtGdfVolumeCompare = 1 — volume difference body only
  • gtGdfFaceAndVolumeCompare = 2 — both

Error code 0 from GetToolInterface means success. Error codes 1–3 indicate the add-in is not loaded, the license is not available, or the Utilities version is not compatible with the current SOLIDWORKS installation.

DimXpert and annotation comparison

The Utilities add-in comparisons cover geometry and features. If you also need to verify that GD&T annotations between two parts match — same tolerances, same datums — there is a separate API method in the core sldworks namespace: IModelDocExtension.Compare3DPMI.

This method (available since SOLIDWORKS 2017) compares DimXpert annotations, reference dimensions, and other 3D annotations between two versions of a part. It generates a bitmap report showing annotation differences, saved to a path you specify. It does not require the Utilities add-in — it is part of the standard SOLIDWORKS API.

Limitations to know before you rely on it

Parts only. The Utilities compare tools do not work on assemblies (.sldasm). For assembly-level differences, you need to compare component parts individually, or use the Document Management approach of checking what components changed via file dates and revision properties.

Coordinate system alignment. The comparison assumes both parts use the same coordinate system origin and orientation. If the modified part was re-oriented or the origin was moved, the comparison will flag the entire part as different. Before comparing, verify both files have the same origin location and axis alignment.

License tier. SOLIDWORKS Utilities is included in SOLIDWORKS Professional and SOLIDWORKS Premium. It is not included in SOLIDWORKS Standard. If the add-in does not appear in your Add-Ins list, your license tier may not include it. Check with your VAR about adding it.

Performance on complex parts. Volume comparison on parts with many blend surfaces or complex freeform geometry can take several minutes and produce large report files. For routine inspection of machined prismatic parts, performance is generally acceptable. For organic surfaces (cast housings, molded plastics), face comparison alone is more practical than volume comparison.

Practical workflow: comparing a supplier model against your design intent

A common use case: a supplier sends back their interpretation of your design as a SOLIDWORKS file. You need to verify their model matches your original before tooling is cut.

  1. Enable SOLIDWORKS Utilities (Tools > Add-Ins > SOLIDWORKS Utilities).
  2. Open Tools > Compare > Geometry.
  3. Set your original as the Reference, the supplier’s file as Modified.
  4. Use Face and Volume comparison with default tolerances.
  5. Click Compare.
  6. Inspect the colored overlay. Red faces indicate geometry that changed. Zoom in on each flagged region.
  7. Save the HTML report. Attach it to the supplier feedback with annotations marking each discrepancy.

For machined parts, the volume difference body is the most directly useful artifact: it shows the engineer and the machinist exactly what material needs to be corrected. There is no ambiguity in a solid body showing the over-machined pocket.

If your team runs this comparison regularly — each time a supplier or manufacturing update is received — scripting it with the API approach above and outputting standardized HTML reports to a shared folder is straightforward. Combined with a file naming convention that embeds revision numbers (CAD file naming practices for engineering teams), you end up with a traceable comparison record for every part revision without manual overhead.

For teams doing supplier qualification or inspection of machined parts against CAD originals, this built-in SOLIDWORKS tool eliminates the need for a separate metrology-to-CAD comparison step for initial visual screening — before physical measurement is warranted.

The SOLIDWORKS API side of this connects naturally with the broader SolidWorks API gotcha landscape — the Utilities add-in requirement (and its silent failure if not loaded) is exactly the kind of add-in dependency that causes batch scripts to work in interactive sessions but fail in headless automation.