main
Drew Owens 0.11.4 source 8889116 1d ago

SOLIDWORKS version compatibility

The bridge's first community user, Michael, filed issues #1 and #2. He runs SOLIDWORKS 2021 (COM RevisionNumber 29.5.1, Windows 11). The bridge has only ever run against 3DEXPERIENCE SOLIDWORKS 2026 (Makers, revision 34). This page says what that means. Every claim is marked:

  • [audited] read from help.solidworks.com, with a link;
  • [measured] seen on a real machine;
  • [unmeasured] a reasoned expectation that nobody has run yet.

The answer

  • [audited] Supported from SOLIDWORKS 2021. Every COM member the bridge calls (165 rows below, covering com.rs, the modelling DSL and the renderer) was looked up on help.solidworks.com. The newest is SOLIDWORKS 2017 (revision 25): IFeatureManager::FeatureCut4, ISldWorks::GetCurrentLicenseType and IModelDocExtension::SelectByRay (a fallback rung the bridge skips below 2017). Nothing is newer than 2021, so nothing needs a fallback on 2021.
  • [measured] Tested on SOLIDWORKS 2026, live. On 2026-10-14 the modelling ops of issues #1 and #2 ran on SOLIDWORKS 2026 (major 34, 3DEXPERIENCE "Connected") with bridge 0.10.3. tools/dsl-live-check.py passed 30 of 30 checks. swx_selftest {"level":"write"} passed 43, failed 0 and skipped 1. The LEGO brick matched Michael's 2021 numbers, face count included. See LIVE-RESULTS.md.
  • [measured, community] Tested on SOLIDWORKS 2021. On 2026-10-15 Michael ran swx_selftest {"level":"write"} with bridge 0.10.9 on SOLIDWORKS 2021 (COM 29.5.1, classic desktop, Windows 11): every modelling check passed (T01-T22, T24-T32), and the LEGO brick came out identical to the 2026 numbers. The 6 failures were ONE bug, the only 2021 finding: the self-test addressed its scratch part by a title WITH the extension, and with Windows' "Hide extensions for known file types" ON (the Windows default) SOLIDWORKS titles it without one. Fixed in 0.10.10: titles compare extension-insensitively everywhere, and the bridge addresses its own documents by path. See LIVE-RESULTS.md.
  • Each swx_run_script step reports proven: {live, measuredOn}. live is true only when every variant the step ran was measured on the release it ran on. On 2021 that is the 32 variants the community run measured; the T33+ checks (0.10.4) have run on 2026 only. The variants and their measurements are one table, compat::OP_FACTS; each measurement says by (adom or community). swx_describe and swx_selftest report the same table as liveMeasured.
  • bridge.json declares "solidworks": ">=2021". It said >=2024, which was untrue in both directions: it never stopped Michael installing, and nothing in the API needs 2024.
  • swx_status.solidworks reports the version it reads at attach:
    • majorVersion, for example 29;
    • versionSupport, which holds {revision, majorVersion, year, supported, tested, supportedFrom: 2021, testedOn: [2026, 2021], lacks}. supported and tested are separate claims.

What breaks on 2021, and what the bridge does

Area On 2021 What the bridge does
Every COM member called All available (table below) Calls them as on 2026
FeatureCut4 / FeatureFillet3 / FeatureLinearPattern4 / FeatureCircularPattern4 / FeatureExtrusion3 Available (2013–2017) Version gate (requires): on a SOLIDWORKS older than the member, the step is refused needs_solidworks_version with the member's name, instead of a COM "unknown name" partway through a script. This never fires on 2021.
Obsolete members (SelectByID, SaveAs3, LoadFile2, GraphicsRedraw2, CreateMassProperty, FeatureFillet3 for constant radius, FeatureLinearPattern4/5, FeatureCircularPattern4/5, Get4, AddComponent4, IDimension::SystemValue) Present: SOLIDWORKS keeps obsolete members callable Kept, because these are the spellings proven live. The replacements are listed in the table. Each replacement is from 2004–2017, so all are on 2021 too.
The 3DEXPERIENCE sign-in, platform shortcut, SWXDesktopUpdate, Visualize Do not exist on a classic install The edition is desktop, so those paths are never taken. See the next section.

Classic desktop vs 3DEXPERIENCE (Connected)

3DEXPERIENCE SOLIDWORKS (2026, measured) Classic desktop (2021: a community self-test run, 2026-10-15; rows marked [unmeasured] still are)
How it is detected An install path or registry entry naming 3DEXPERIENCE, or the 3DEXPERIENCE Launcher An install path under SOLIDWORKS Corp, OR a registry key HKLM\SOFTWARE\SolidWorks\SOLIDWORKS <year> with an exe found and no 3DEXPERIENCE marker. The exe is also looked up from ...\SOLIDWORKS <year>\Setup value SolidWorks Folder [unmeasured]. swx_status.solidworks.registryYears lists every SOLIDWORKS <year> key. That is a fact about the registry, not the edition: the 3DEXPERIENCE 2026 install writes SOLIDWORKS 2026 too (measured 2026-10-13). classicYears lists only the years with no 3DEXPERIENCE entry or install path for the same release; on Drew's 2026 machine that is [].
edition / launchRoute connected / platformShortcut desktop / com
Launch The Platform's own shortcut (CATSTART, then SWXDesktopLauncher), never the exe CoCreateInstance("SldWorks.Application"), which starts SLDWORKS.exe itself. With several releases installed, set SWX_PROGID=SldWorks.Application.29 to pick 2021 [unmeasured].
Sign-in 3DEXPERIENCE ID (three measured hosts) None. The licence is standalone or SolidNetWork; the bridge never sees a licence prompt and never answers one.
Add-ins The 3DEXPERIENCE add-in; readiness waits for its marker No platform add-in. Readiness falls back to StartupProcessCompleted (2015) and the performance-log markers [unmeasured].
Templates Resolved from the user's settings (GetDocumentTemplate, 2001Plus SP4) The same call [unmeasured].
Visualize A separate app started through its platform shortcut Not part of a classic install. swx_start {app:"visualize"} reports visualize_shortcut_missing.

Every COM member the bridge calls

Generated from the calls in src/comhost/com.rs and src/render.rs. The Availability text comes from each member's help page (the 2024 help, which records the first release). "—" means the page has no Availability line. Those are original-API members older than any line the help records. "2021?" means available in SOLIDWORKS 2021.

Member Availability 2021? Obsolete → replacement Source
ISldWorks::ActivateDoc3 2012 FCS, Revision Number 20.0 yes help
IConfigurationManager::ActiveConfiguration 2005 FCS, Revision Number 13.0 yes help
ISldWorks::ActiveDoc — (no Availability line: an original-API member) yes help
IModelDoc2::ActiveView 2001Plus FCS, Revision Number 10.0 yes help
ICustomPropertyManager::Add3 2014 FCS, Revision Number 22.0 yes help
IMassProperty::AddBodies 2003 SP2, Revision Number 11.2 yes help
IAssemblyDoc::AddComponent — (no Availability line: an original-API member) yes obsolete → IAssemblyDoc::AddComponent4 help
IAssemblyDoc::AddComponent3 does not exist on IAssemblyDoc (only the multi-insert AddComponents3); the last spelling in the insert fallback chain, never reached while AddComponent5 answers yes —
IAssemblyDoc::AddComponent4 2003 SP5, Revision Number 11.5 yes obsolete → IAssemblyDoc::AddComponent5 help
IAssemblyDoc::AddComponent5 2010 FCS, Revision Number 18.0 yes help
ISketchManager::AddToDB 2008 FCS, Revision Number 16.0 yes help
IMassProperty::CenterOfMass 2003 SP2, Revision Number 11.2 yes help
IModelDoc2::ClearSelection2 2001Plus FCS, Revision Number 10.0 yes help
ISldWorks::CloseAllDocuments 2006 SP2, Revision Number 14.2 yes help
ISldWorks::CloseDoc — (no Availability line: an original-API member) yes help
ISldWorks::CommandInProgress 2006 SP2, Revision Number 14.2 yes help
IInterference::Components 2007 FCS, Revision Number 15 yes help
IModelDoc2::ConfigurationManager 2003 FCS, Revision Number 11.0 yes help
ISketchSegment::ConstructionGeometry not verified (0.11.0) not verified help
ISketchManager::CreateArc 2008 FCS, Revision Number 16.0 yes help
ISketchManager::CreateCenterLine 2008 FCS, Revision Number 16.0 yes help
ISketchManager::CreateCircle 2008 FCS, Revision Number 16.0 yes help
ISketchManager::CreateCircleByRadius 2008 FCS, Revision Number 16.0 yes help
ISketchManager::CreateCornerRectangle 2008 FCS, Revision Number 16.0 yes help
ISketchManager::CreateLine 2008 FCS, Revision Number 16.0 yes help
IModelDocExtension::CreateMassProperty 2003 SP2, Revision Number 11.2 yes obsolete → IModelDocExtension::CreateMassProperty2 help
ISelectionMgr::CreateSelectData 2004 FCS, Revision Number 12 yes help
IMathUtility::CreateTransform 2001 FCS, Revision Number 9.0 yes help
IModelDocExtension::CustomPropertyManager 2007 FCS, Revision Number 15.0 yes help
IModelDocExtension::DeleteSelection2 2006 SP1, Revision Number 14.1 yes help
IMassProperty::Density 2003 SP2, Revision Number 11.2 yes help
IModelView::DisplayMode 2004 SP1, Revision Number 12.1 yes help
ISldWorks::DocumentVisible — (no Availability line: an original-API member) yes help
IInterferenceDetectionMgr::Done 2007 FCS, Revision Number 15.0 yes help
IModelDoc2::EditDelete 2001Plus FCS, Revision Number 10.0; the offset segments on the wrong side, deleted (0.11.4) yes help
IModelDoc2::EditRebuild3 2001Plus FCS, Revision Number 10.0 yes help
ISelectionMgr::EnableContourSelection 2003 FCS, Revision Number 11.0; on for a sketch-region pick, put back as it was (0.11.4) yes help
IEquationMgr::Equation 2001Plus FCS, Revision Number 10.0 yes help
ICurve::Evaluate2 2007 SP5, Revision Number 15.5 yes help
ISurface::EvaluateAtPoint — (no Availability line: an original-API member) yes help
ISldWorks::ExitApp — (no Availability line: an original-API member) yes help
IModelDoc2::Extension 2003 FCS, Revision Number 11.0 yes help
IFace2::FaceInSurfaceSense 2001Plus FCS, Revision Number 10.0 yes help
IFeatureManager::FeatureCircularPattern4 2013 FCS, Revision Number 21.0 yes obsolete → IFeatureManager::FeatureCircularPattern5 help
IFeatureManager::FeatureCut4 2017 FCS, Revision Number 25.0 yes help
IFeatureManager::FeatureExtrusion3 2014 FCS, Revision Number 22.0 yes help
IFeatureManager::FeatureFillet3 2015 FCS, Revision Number 23.0 yes obsolete → IFeatureManager::CreateDefinition/CreateFeature + ISimpleFilletFeatureData2 / IPartialEdgeFilletData help
IFeatureManager::FeatureLinearPattern4 2015 FCS, Revision Number 23.0 yes obsolete → IFeatureManager::FeatureLinearPattern5 help
IModelDoc2::FeatureManager 2003 FCS, Revision Number 11.0 yes help
IFeatureManager::FeatureRevolve2 2011 FCS, Revision Number 19.0 yes FeatureRevolveCut2 is obsolete → FeatureRevolve2 with IsCut help
IModelDoc2::FirstFeature 2001Plus FCS, Revision Number 10.0 yes help
IAssemblyDoc::FixComponent — (no Availability line: an original-API member) yes help
IModelDoc2::ForceRebuild3 2001Plus FCS, Revision Number 10.0 yes help
ISldWorks::Frame — (no Availability line: an original-API member) yes help
ICustomPropertyManager::Get4 2011 SP4, Revision Number 19.4 yes obsolete → ICustomPropertyManager::Get5 help
IPartDoc::GetBodies2 2003 FCS, Revision Number 11.0 yes help
IBody2::GetBodyBox 2001Plus FCS, Revision Number 10.0 yes help
IEdge::GetClosestPointOn — (no Availability line: an original-API member) yes help
IFace2::GetClosestPointOn 2001Plus FCS, Revision Number 10.0 yes help
IAssemblyDoc::GetComponentCount 2006 FCS, Revision Number 14 yes help
IAssemblyDoc::GetComponents 2006 FCS, Revision Number 14 yes help
IModelDoc2::GetConfigurationNames 2001Plus FCS, Revision Number 10.0 yes help
IEquationMgr::GetCount 99, datecode 1999207 yes help
ISldWorks::GetCurrentLicenseType 2017 FCS, Revision Number 25.0 yes help
IEdge::GetCurve — (no Availability line: an original-API member) yes help
IEdge::GetCurveParams2 2000 FCS, Revision Number 8.0 yes help
ISldWorks::GetDocumentCount 2009 FCS, Revision Number 17.0 yes help
ISldWorks::GetDocuments 2009 FCS, Revision Number 17.0 yes help
IPackAndGo::GetDocumentSaveToNames 2011 FCS, Revision Number 19.0 yes help
ISldWorks::GetDocumentTemplate 2001Plus SP4, Revision Number 10.4 yes help
IFace2::GetEdges 2001Plus FCS, Revision Number 10.0 yes help
ILoop2::GetEdges 2001Plus FCS, Revision Number 10.0; the outer loop's edges, for Offset Entities (0.11.4) yes help
ISketchArc::GetEndPoint2 2000 FCS, Revision Number 8.0; an offset segment's end, for the side check (0.11.4) yes help
ISketchLine::GetEndPoint2 2000 FCS, Revision Number 8.0; as above yes help
IModelDoc2::GetEquationMgr 2001Plus FCS, Revision Number 10.0 yes help
IFeature::GetErrorCode 2001Plus FCS, Revision Number 10 yes help
ISldWorks::GetExecutablePath 2003 SP3, Revision Number 11.3 yes help
IBody2::GetFaceCount 2001Plus FCS, Revision Number 10.0 yes help
IFeature::GetFaces — (no Availability line: an original-API member) yes help
ISldWorks::GetFirstDocument 98Plus, datecode 1998319 yes help
IFrame::GetHWnd 2001Plus FCS, Revision Number 10.0 yes help
ISldWorks::GetImportFileData 2005 SP3, Revision Number 13.3 yes help
IInterferenceDetectionMgr::GetInterferenceCount 2007 FCS, Revision Number 15.0 yes help
IInterferenceDetectionMgr::GetInterferences 2007 FCS, Revision Number 15.0 yes help
IFace2::GetLoops 2009 FCS, Revision Number 17.0; the face's loops, for Offset Entities (0.11.4) yes help
IBody2::GetMassProperties 2001Plus FCS Revision Number 10.0 yes help
IPartDoc::GetMaterialPropertyName2 2005 FCS, Revision Number 13.0 yes help
ISldWorks::GetMathUtility 2001 FCS, Revision Number 9.0 yes help
IComponent2::GetModelDoc2 2009 FCS, Revision Number 17.0 yes help
ISketchSegment::GetName not verified (0.11.0) not verified help
ICustomPropertyManager::GetNames 2004 FCS, Revision number 12.0 yes help
IModelDoc2::GetNext 2001Plus FCS, Revision Number 10 yes help
IFeature::GetNextFeature — (no Availability line: an original-API member) yes help
ISldWorks::GetOpenDocumentByName 2000 FCS, Revision Number 8.0 yes help
IModelDocExtension::GetPackAndGo 2011 FCS, Revision Number 19.0 yes help
IPartDoc::GetPartBox — (no Availability line: an original-API member) yes help
IComponent2::GetPathName 2001Plus FCS, Revision Number 10.0 yes help
IModelDoc2::GetPathName 2001Plus FCS, Revision Number 10.0 yes help
ISldWorks::GetProcessID 2001Plus FCS, Revision Number 10.0 yes help
IModelDoc2::GetSaveFlag 2001Plus FCS, Revision Number 10.0 yes help
ISelectionMgr::GetSelectedObject6 2006 FCS, Revision Number 14 yes help
ISelectionMgr::GetSelectedObjectCount2 2006 FCS, Revision Number 14.0 yes help
ISketch::GetSketchSegments SOLIDWORKS 99, datecode 1999207; what Offset Entities added to the sketch (0.11.4) yes help
ISketchArc::GetStartPoint2 2000 FCS, Revision Number 8.0; as GetEndPoint2 yes help
ISketchLine::GetStartPoint2 2000 FCS, Revision Number 8.0; as GetEndPoint2 yes help
IComponent2::GetSuppression 2001Plus FCS, Revision Number 10.0 yes obsolete → IComponent2::GetSuppression2 help
IFace2::GetSurface 2001Plus FCS, Revision Number 10.0 yes help
IModelDoc2::GetTitle 2001Plus FCS, Revision Number 10.0 yes help
IEdge::GetTwoAdjacentFaces2 2001Plus FCS, Revision Number 10.0 yes help
IModelDoc2::GetType 2001Plus FCS, Revision Number 10.0 yes help
IFeature::GetTypeName2 2008 FCS, Revision Number 16.0 yes help
IModelDocExtension::GetUserPreferenceDouble not verified (0.11.0) not verified help
IModelDocExtension::GetUserPreferenceInteger 2009 FCS, Revision Number 17.0 yes help
ISldWorks::GetUserPreferenceIntegerValue — (no Availability line: an original-API member) yes help
ISldWorks::GetUserPreferenceStringValue 2000 FCS, Revision Number 8.0 yes help
ISldWorks::GetUserPreferenceToggle — (no Availability line: an original-API member) yes help
IModelDocExtension::GetWhatsWrongCount 2009 SP3, Revision Number 17.3 yes help
IModelDoc2::GraphicsRedraw2 2001Plus FCS, Revision Number 10.0 yes obsolete → IModelView::GraphicsRedraw help
IModelView::HasPerspective — (no Availability line: an original-API member) yes help
IPackAndGo::IncludeDrawings 2011 FCS, Revision Number 19.0 yes help
IModelDoc2::InsertAxis2 2001Plus FCS, Revision Number 10.0 yes help
IFeatureManager::InsertFeatureChamfer 2005 FCS, Revision Number 13.0 yes help
IModelDoc2::InsertFeatureShell 2001Plus FCS, Revision Number 10.0 yes help
IFeatureManager::InsertMirrorFeature — (obsolete; used only when swFeatureScope_e cannot be read from the interop) yes obsolete → InsertMirrorFeature2 help
IFeatureManager::InsertMirrorFeature2 2008 FCS, Revision Number 16.0 yes help
IFeatureManager::InsertRefPlane 2010 FCS, Revision Number 18.0 yes help
IModelDoc2::InsertSketch — (no Availability line: an original-API member) yes obsolete → ISketchManager::InsertSketch help
ISketchManager::InsertSketch 2007 FCS, Revision Number 15.0 yes help
IAssemblyDoc::InterferenceDetectionManager 2007 FCS, Revision Number 15 yes help
ILoop2::IsOuter 2001Plus FCS, Revision Number 10.0; which loop is the outer one (0.11.4) yes help
ISldWorks::LoadFile2 — (no Availability line: an original-API member) yes obsolete → ISldWorks::LoadFile4 help
ISldWorks::LoadFile4 2006 SP1, Revision Number 14.1 yes help
IInterferenceDetectionMgr::MakeInterferingPartsTransparent 2007 FCS, Revision Number 15.0 yes help
ISelectData::Mark 2004 FCS, Revision Number 12 yes help
IMassProperty::Mass 2003 SP2, Revision Number 11.2 yes help
IModelDocExtension::MultiSelect2 2012 SP04, Revision Number 20.4 yes help
IBody2::Name 2005 FCS, Revision Number 13 yes help
IConfiguration::Name — (no Availability line: an original-API member) yes help
IFeature::Name — (no Availability line: an original-API member) yes help
IComponent2::Name2 2001Plus FCS, Revision Number 10.0 yes help
IModelDocExtension::NeedsRebuild2 2012 FCS, Revision Number 20.0 yes help
ISldWorks::NewDocument 2000 FCS, Revision Number 8.0 yes help
IFace2::Normal 2001Plus FCS, Revision Number 10.0 yes help
ISldWorks::OpenDoc6 2001Plus FCS, Revision Number 10.0 yes help
IModelView::Orientation3 2001Plus SP2, Revision Number 10.2 yes help
IModelDoc2::Parameter 2001Plus FCS, Revision Number 10.0 yes help
IComponent2::ReferencedConfiguration 2001Plus FCS, Revision Number 10.0 yes help
ISldWorks::RevisionNumber — (no Availability line: an original-API member) yes help
ISldWorks::RunCommand 2008 FCS, Revision Number 16.0 yes help
ISldWorks::RunMacro2 2009 FCS, Revision Number 17.0 yes help
IModelDoc2::Save3 2001Plus FCS, Revision Number 10.0 yes help
IModelDoc2::SaveAs3 — (no Availability line: an original-API member) yes obsolete → IModelDocExtension::SaveAs3 (chain: SaveAs3 -> IModelDocExtension::SaveAs -> SaveAs2 -> SaveAs3) help
IModelDoc2::SaveBMP 2001Plus FCS, Revision Number 10.0 yes help
IModelDocExtension::SavePackAndGo 2011 FCS, Revision Number 19.0 yes help
IModelView::Scale2 99, datecode 1999207 yes help
IBody2::Select2 not verified (0.11.0): a body selected for a mirror (mark 256) not verified help
IFeature::Select2 2001Plus FCS, Revision Number 10.0 yes help
IEntity::Select4 2004 FCS, Revision Number 12.0 yes help
ISketchSegment::Select4 not verified (0.11.0): the revolve axis's fallback selection not verified help
IModelDoc2::SelectByID — (no Availability line: an original-API member) yes obsolete → IModelDocExtension::SelectByID2 help
IModelDocExtension::SelectByID2 2005 FCS, Revision Number 13.0 yes help
IModelDocExtension::SelectByRay 2017 FCS, Revision Number 25.0 yes help
IModelDoc2::SelectionManager 2001Plus FCS, Revision Number 10 yes help
IPartDoc::SetMaterialPropertyName2 2005 FCS, Revision Number 13.0 yes help
IPackAndGo::SetSaveToName 2011 FCS, Revision Number 19.0 yes help
IModelDocExtension::SetUserPreferenceDouble not verified (0.11.0): swMaterialPropertyDensity, read from the interop not verified help
IModelDocExtension::SetUserPreferenceInteger 2009 FCS, Revision Number 17.0 yes help
ISldWorks::SetUserPreferenceIntegerValue — (no Availability line: an original-API member) yes help
ISldWorks::SetUserPreferenceToggle — (no Availability line: an original-API member) yes help
IModelDoc2::ShowNamedView2 2001Plus FCS, Revision Number 10.0 yes help
IModelDoc2::SketchManager 2005 FCS, Revision Number 13.0 yes help
IModelDoc2::SketchOffsetEntities2 2001Plus FCS, Revision Number 10.0; Offset Entities of a face or its outer loop (0.11.4); its sign does not decide the side, so the bridge checks it yes help
ISldWorks::StartupProcessCompleted 2015 FCS, Revision Number 23.0 yes help
IMassProperty::SurfaceArea 2003 SP2, Revision Number 11.2 yes help
IDimension::SystemValue — (no Availability line: an original-API member) yes obsolete → IDimension::GetSystemValue3 help
IComponent2::Transform2 2003 FCS, Revision Number 11.0 yes help
IModelView::Translation3 2001Plus SP2, Revision Number 10.2 yes help
IInterferenceDetectionMgr::TreatCoincidenceAsInterference 2007 FCS, Revision Number 15.0 yes help
ISldWorks::UserControl — (no Availability line: an original-API member) yes help
ISldWorks::UserControlBackground 2005 FCS, Revision Number 13.0 yes help
IMassProperty::UseSystemUnits 2003 SP2, Revision Number 11.2 yes help
IInterferenceDetectionMgr::UseTransform 2015 FCS, Revision Number 23.0 yes help
IEquationMgr::Value 2001Plus FCS, Revision Number 10.0 yes help
IModelDocExtension::ViewDisplayRealView 2005 FCS, Revision Number 13.0 yes help
IModelDoc2::ViewZoomtofit2 2001Plus FCS, Revision Number 10.0 yes help
IBody2::Visible 2001Plus FCS, Revision Number 10.0 yes help
IModelDoc2::Visible 2001Plus FCS, Revision Number 10.0 yes help
IMassProperty::Volume 2003 SP2, Revision Number 11.2 yes help
ISketchPoint::X SOLIDWORKS 99, datecode 1999207; with Y and Z: a sketch point, in sketch space (0.11.4) yes help

Enum values the DSL passes are read from the published swconst pages (cited in com.rs):

  • swEndConditions_e: Blind 0, ThroughAll 1, UpToSurface 4, OffsetFromSurface 5, MidPlane 6, ThroughAllBoth 9, UpToNext 11 (0.11.4; measured 2026-10-16: the help's UpToSelection 10 with the face at mark 1 built with an EMPTY direction box and stopped at the next face on 2026, for a boss and for a cut; 4, the id the macro recorder writes, is what the bridge sends). Ddir1 TRUE drafts OUTWARD on 2026 (the help says inward); the bridge passes outward as is.
  • ISketchManager::CreateArc Direction: +1 counter-clockwise, −1 clockwise (a short).
  • InsertMirrorFeature2 marks: features 1, plane or planar face 2, bodies 256. FeatureRevolve2 marks: sketch 0, axis 4 (the bridge tries 16 when 4 builds nothing).
  • A sketch REGION (0.11.4) is selected the way SOLIDWORKS' own "Enable Contour Selection Example" does it: ISelectionMgr::EnableContourSelection = true, then SelectByID2(<sketch name>, "SKETCHREGION", x, y, z, Append true, MARK 4, null, 0) at a model point inside the region, then the feature, then contour selection put back.
  • IModelDoc2::SketchOffsetEntities2(Offset metres, BothDirections, Chain) (0.11.4) takes "an edge, loop, face, external sketch curve, external sketch contour, set of edges, or set of external sketch curves"; its sign does not fix the side (a forum report: −0.01 landed inside on one face, outside on another), so the bridge reads where the new segments landed and redoes it with the other sign once.
  • swFeatureScope_e and swUserPreferenceDoubleValue_e.swMaterialPropertyDensity are NOT on the help pages with numbers: they are read from the installed SolidWorks.Interop.swconst.dll by reflection, never guessed.
  • swRefPlaneReferenceConstraints_e: Distance 8, OptionFlip 256.
  • swFeatureFilletOptions_e: Propagate 1, UniformRadius 2.
  • swFeatureFilletType_e: Simple 0.
  • swChamferType_e: AngleDistance 1.
  • swFeatureChamferOption_e: TangentPropagation 4.

All are unchanged since well before 2021.

How to test a release we do not have: swx_selftest

We have no 2021 machine. swx_selftest is how Michael, or anyone, sends back one JSON that says, verb by verb, what works on their install:

swx_selftest {}                  # level "read": changes nothing
swx_selftest {"level": "write"}  # also builds, reads back, exports, saves and closes a scratch part
swx_selftest {"level": "cswa"}   # builds the CSWA benchmark parts and checks their mass against the published keys
  • read runs these and changes nothing:

    • swx_status, including the version facts above;
    • swx_readiness, swx_docs and swx_get_preferences;
    • the read verbs on whatever document is active: document info, design info, parameters, properties and mass properties, plus bodies for a part or a BOM for an assembly.
  • write (0.10.2) is a geometric proof, not just a success check. It runs the same 32 checks as tools/dsl-live-check.py. Each check builds its own scratch part (never a user document), MEASURES it with swx_inspect_bodies / swx_mass_properties, and compares the measurement with geometry computed in the self-test itself from closed-form formulas and the documented conventions. Each row carries expected, measured and fails, and the check then closes what it made. The checks cover:

    • the conventions: the corner anchor, Top Plane +y = model −Z, a centred anchor;
    • sketches on a +10 mm and a −5 mm offset plane, on the top face, and on the hidden BOTTOM face, which must extrude OUTWARD;
    • a default cut into empty space, which must FAIL loudly; reverse and through-all cuts; an asymmetric two-way cut;
    • both-direction and mid-plane extents;
    • a ring and two bodies from one sketch;
    • appearance on the part and on a face;
    • an appearance followed by a material (the colour must survive);
    • a fillet of every edge (both a box and a cylinder);
    • a chamfer of one edge;
    • shells removing the top and the bottom face;
    • linear patterns with positive and negative spacing, and a circular pattern;
    • an op between a sketch and its extrude;
    • issue #2's density and mass;
    • the LEGO brick.

    Then, on one part made with swx_new_document, it checks issue #2's ownership (scripted by path), sets a dimension, exports a STEP copy, saves, closes it, and re-activates the document that was active before. only: ["T25", …] runs a subset of the checks.

Each verb row is {name, verb, pass, ms, errorCode, error, hostError}; each geometry row adds expected, measured and fails. The summary gives passed, failed and skipped counts. Every sub-call goes through the normal dispatcher, readiness gate included. The self-test is itself exempt from the gate, so a check held at the gate is reported, not hidden.

Run it with SOLIDWORKS started. With SOLIDWORKS closed (measured 2026-10-13), only swx_status and swx_readiness can run:

  • every check that needs SOLIDWORKS is skipped, with the reason, and is never counted as a failure;
  • the summary carries solidworksRunning: false;
  • the _hint begins "Start SOLIDWORKS (swx_start, or by hand) and run this again".

level:"write" with SOLIDWORKS closed is refused up front (solidworks_not_running) and changes nothing.

Live validation: the CSWA benchmark (0.11.0)

Every release can be checked against EXAM PARTS with published answers, not only against the bridge's own closed-form checks. The specs live in resources/cswa/ (shipped in the zip); the schema and rules are in tools/cswa/README.md.

  • swx_selftest {"level":"cswa"} on any install: one row per part, and the summary "N of M CSWA parts within tolerance". On a release we have not run, this is the most direct evidence that a modelled part weighs what SOLIDWORKS says it should.
  • tools/cswa-check.py from a dev container writes cswa-report.json.
  • tools/release.sh --require-live <report.json> --publish refuses to publish without a report from THIS version that passed every part and is newer than the last code commit; since 0.11.4 a bare --publish is refused too (only --docs-only, for a release that changes no code, skips the gate).
  • The live run tests the very bytes that ship (the canary). tools/release.sh --canary publishes the build as the release candidate <version>-rc<N>, with manifests/canary.json naming it. Only the test machine installs it, by hand: bridge_install {manifestUrl: .../manifests/canary.json}. cswa-check records the installed exe's sha256 (read back through ab's read_file), and --require-live publishes that zip unchanged, only when the report ran its exe. The canary never pins the machine. ab resolves a bridge's update URL from the bridge's own bridge.json updateManifestUrl first, before the URL it was installed from (adom-bridge help bridge_check_updates). Every zip declares the MAIN manifest there, and the canary file does too. Since the release has the canary's version, the machine runs the published bytes as they are; the next release reaches it like any other.

The first live run (2026-10-15, bridge 0.11.2, SOLIDWORKS 2026: 8 of 8 within 0.0015 % of their keys) measured the lines and arcs of a contour, the face-offset plane, the plain hole and the density (docs/LIVE-RESULTS.md). Still NOT MEASURED on any release, each step using them reporting proven.live:false: revolve and revolve-cut, mirror, the counterbored and countersunk hole, the up-to end conditions, draft, construction geometry, and 0.11.4's Offset Entities and sketch regions. The community specs cswa-09 to cswa-12 and the Step 4 pair cswa-08 / cswa-08b build every one of them, so the next live run measures them.

What is still unmeasured on 2021

  • The classic launch route (CoCreateInstance) and the Setup\SolidWorks Folder lookup.

  • The readiness signals without the 3DEXPERIENCE add-in.

  • Every op added in 0.10.0: offset and face sketches, multi-profile sketches, cut direction, both-direction and mid-plane extents, fillet, chamfer, shell, the patterns and appearance. An independent review (2026-10-13) checked every COM call against the 2021 API help: the signatures, argument counts, units and enum values are right. 0.10.2 fixed the BEHAVIOURAL risks it found:

    • picks through the view, now geometric;
    • a face's normal sign, now followed;
    • duplicate edges toggling themselves off, now de-duplicated;
    • a material wiping the colour, now re-applied;
    • the pinned document not activated, now activated;
    • a negative offset plane's and an axis's orientation, now read back.

    On 2026 they are now MEASURED (LIVE-RESULTS.md). On 2021 they are not, and each step's proven.live says false there.

    Eight more variants were measured on 2026 later the same day, with bridge 0.10.4 (LIVE-RESULTS.md):

    • a reversed boss;
    • a boss through all, one way;
    • Right Plane's axes;
    • sketches on the +X and −Z side faces;
    • a plane offset from Front Plane;
    • a two-direction linear pattern;
    • an outward shell.

    Some variants have not been measured on any release yet. Steps that use them report proven.live:false and name them under unmeasured:

    • through all with direction:"both" on a boss;
    • a sketch on a named plane, on a plane offset from Right Plane or from a named plane, on a negative offset from Front Plane, or on a face facing −X or +Z;
    • a linear pattern along Y or Z alone, and a circular pattern about X or Z;
    • a chamfer on all of a feature's edges;
    • a colour on one body of a multi-body part;
    • the later rungs of the selection ladder;
    • the CreateDefinition fillet fallback.
  • SELECTION after a geometric pick (0.10.3). On SOLIDWORKS 2026 MultiSelect2 with a VARIANT array selected nothing. This was measured, and it broke face sketches, fillet, chamfer and shell. The bridge now climbs a verified ladder: a typed-array MultiSelect2, then IEntity::Select4, then SelectByRay (2017+) with its own ray, then SelectByID2 at the point. Each step's selectedVia says which rung worked. Which rung works on 2021 is unmeasured. SelectByRay is skipped below 2017.

swx_selftest {"level":"write"} on a 2021 machine answers every one of them with MEASURED geometry in one reply. A pass there is a proof, not a "the call returned".