Verification

What each CAD API
can verify

Scoring a demonstration means reading the model through the software's automation API. All four packages have one. None of them expose the same checks. This is what each can read.

What can be captured

Recorded while the work happens. The recorder adds screen, microphone, the input hook and the clock; everything below comes from the software itself.

Check CATIA V5AutoCADRevitTekla
Action trace The API-level record of what was actually done, alongside the clicks that did it. macro recorder — lossy, brittle selectionscommand log + Action Recorderjournal file — complete, replayablemacro recorder — idiomatic C#
UI semantics Which control was clicked, by name and path, rather than by pixel. UIAutomation — toolbars, dialogsUIAutomation — ribbon onlyUIAutomation — ribbon onlyUIAutomation — dialogs only
Selection at command time The only thing that gives a click inside the 3D view any meaning. Selection objectpickfirst setSelection.GetElementIds()ModelObjectSelector
Model state dump What the model became at each step, not just what was pressed. tree, params, sketches, mass propsentity enumerationfull API dump + warnings listOpen API enumeration
Neutral geometry A kernel-independent copy, so a result can be checked without the seat that made it. STEP, IGESDXF — ASCII, diffableIFCIFC, DSTV/NC
Recorded intent Why a step was taken. Nothing derives this; it has to be spoken or written. narration + step marksnarrationnarration + sync commentsnarration

natively exposed reachable through the API not available does not apply

What can be checked

Answered afterwards, from the finished model, with nobody watching.

Check CATIA V5AutoCADRevitTekla
Rebuilds clean Did the model survive its own update, or is the tree full of errors? Part.Update()no history to rebuildGetWarnings()clash check
Under-constrained Is the geometry pinned down, or will it wander the first time something moves? not exposed by the APIconstraint DOFunconnected heighthand-modelled plates
Geometry match Is the result the part that was asked for, to a tolerance? boolean residualentity + area compareelement + quantity compareassembly compare
Perturbation Change a driving value and rebuild. The one test that separates a model from a drawing. change a parameterflex a dynamic blockmove a levelchange a profile
Runs headless Can the check run without a seat, a screen and a person? noaccoreconsoleDesign Automationattached instance only

natively exposed reachable through the API not available does not apply

Three things the tables say out loud

Revit is a better target than CATIA

A native quality checker, real headless execution, native journals, and a constraint tell that is machine-readable in a way V5's simply is not. The objection that a verifiable environment needs a licensed Windows seat per rollout mostly disappears with Design Automation.

AEC has more graders than mechanical does

"Is this model built properly" is a question the industry already argues about, with published standards behind it. A rubric with external anchors is a far easier thing to defend than one asserting its author's taste.

The viewport is opaque in all four

Every one of these has a single pane where the engineering actually happens, and no accessibility API can name anything inside it. The fix is identical each time: read the selection through the API immediately after the click. One line of work, four times, and the highest-value thing in the capture layer.

AutoCAD

Autodesk
API
.NET (ObjectARX managed), COM, AutoLISP
Headless
accoreconsole.exe — runs a script against a DWG with no GUI
In practice
Mostly no parametric history, so "rebuilds clean" does not exist. What you assert instead is drafting discipline, which is what a senior drafter grades anyway.
The "faked it" tell
Copied geometry instead of a block reference, and exploded dimension text. Both look identical on a plot. Both are worthless downstream.
  • layer_discipline every entity on its correct layer, ByLayer colour and linetype
  • no_duplicate_geometry no stacked or zero-length lines, no overlapping polylines
  • closed_boundaries hatch boundaries and outlines are closed polylines
  • block_usage repeated geometry is a block reference, not copied entities
  • dimensions_associative dimensions attached to geometry, not exploded text
  • titleblock_attributes required attributes populated
  • purge_clean no unreferenced blocks, layers or styles
  • plot_setup correct paper size, scale and plot style table

Revit

Autodesk
API
.NET Revit API, pyRevit, Dynamo
Headless
Design Automation for Revit — genuinely headless, cloud, parallel
In practice
The strongest of the four, by a distance. Revit maintains a live warnings list — duplicate instances, overlapping walls, unenclosed rooms, elements off axis. Built in, no inference needed. Revit also journals every command a user issues, which is an action trace for free.
The "faked it" tell
A wall with Unconnected Height typed in, instead of Top Constraint: Up to Level 3. Identical geometry. One follows when the level moves. One does not.
  • no_warnings GetWarnings() empty, or below a threshold by severity
  • element_counts N doors of type X, M walls on level 2
  • parameters type and instance parameters set, shared parameters present
  • level_constraints walls constrained to a level, not an unconnected height
  • rooms_bounded every room encloses, no unplaced or redundant rooms
  • worksets elements on the correct workset
  • interference_check no clashes between disciplines
  • schedule_totals a schedule's computed quantity matches expected
  • view_templates views use templates rather than ad-hoc overrides

Tekla Structures

Trimble
API
Tekla Open API (.NET), plus a macro recorder that emits C#
Headless
Open API attaches to a running instance rather than running detached
In practice
The macro recorder gives you a paired corpus: every GUI action alongside the API call it produced. That is the translation data most packages will not hand over.
The "faked it" tell
An experienced detailer applies a connection component. A rushed one hand-models the plates and bolts to look the same. Visually identical. Only one adapts when the beam moves.
  • clash_free built-in clash check returns nothing
  • numbering_consistent no duplicate or unnumbered assembly marks
  • profiles_materials parts use catalogue profiles, correct grade
  • connections_are_components joints are intelligent components, not loose plates
  • bolt_edge_distances bolts satisfy minimum edge distance and pitch
  • weld_definitions welds defined on the connection, not drawn
  • assembly_structure correct main part per assembly
  • drawing_completeness every assembly has a drawing

Every check above is answerable without a person watching. None of them replace the reviewer — they decide which sessions a reviewer should spend time on, and they make the disagreements between the machine and the engineer visible. Those disagreements are the most valuable thing the pipeline produces.