Hi Chris,
Thank you for the thorough feedback, these are all valid points. Let me go through them honestly.
Reference Templates (TREF):
You're right, and this is a gap. The current layer naming check validates against allowed prefixes in the host drawing's layer table, but it doesn't account for TREF-controlled styles that may have been overridden. A drawing can appear compliant while its TREF relationship is out of sync or temporarily overridden, and we wouldn't catch that.
Looking into this more, TREF governance is genuinely complex: nested TREFs, the sync behavior controlled by system variables, and the fact that overrides are intentional in some workflows while being violations in others. This probably deserves its own rule category rather than being bolted onto the existing layer checks. I've added it to the Rule Wishlist as a medium-priority item. If you have thoughts on what "out of sync" looks like from a practical standpoint, I'd be interested to hear.
AUDIT before checks:
That's a fair point about the Batch Save Utility approach. The current tool detects exit code 53 and notes the drawing needs manual recovery, but it doesn't proactively run AUDIT as a pre-step. The reason was conservative: AUDIT with fix mode modifies the drawing, and I didn't want the QA tool silently changing files. But you're right that for batch workflows, running AUDIT as an explicit opt-in pre-step (with a --repair flag or similar) would be more useful than just failing and telling the user to open the GUI. That's a practical improvement I can add.
System resources / parallel instances:
Currently the tool runs checks sequentially, one drawing at a time. Again, you're right that this is a limitation. Some machines can handle 10+ concurrent accoreconsole instances, others struggle with 2-3. A --parallel flag with a configurable concurrency limit might be the straightforward approach. The challenge is that each instance consumes ~100MB+ of memory, and Civil 3D's licensing model means concurrent instances may compete for licenses depending on the deployment. I'll add this to the roadmap.
AutoCAD Profile:
The tool currently launches accoreconsole.exe without specifying a profile, so it uses the default profile. This means it loads whatever native assemblies the default profile includes, but no custom CUI or enterprise customization. For most QA checks, I believe this is fine since we're reading entity properties, not running user customization. But you raise a good point: if someone's standards depend on profile-specific settings (e.g., a custom profile that loads specific Object Enablers or third-party assemblies), the default profile might not reflect their actual production environment. Supporting a --profile flag to specify which profile accoreconsole loads would be a useful addition.
AECC Object and Label Styles:
Not currently included, and you're right to ask. The existing rules focus on AutoCAD-level entities (layers, blocks, text styles, xrefs). Civil 3D's AECC object styles and label styles are a different layer of the drawing model entirely. They're accessible via the .NET API (CivilApplication.ActiveDocument.Styles), so it's technically feasible, but it's a significant scope expansion. The Rule Wishlist has some surface and corridor checks, but nothing specifically targeting AECC style compliance yet. I've added this as a high-priority wishlist item.
Use case where this tool is currently useful:
The practical sweet spot right now is organizations with drawing standards that are primarily AutoCAD-level: layer naming conventions, xref management, text style consistency, proxy object cleanup. These are the checks that CAD managers currently do manually or via partial LISP routines. The tool adds value by making those checks repeatable, configurable, and AI-integrable.
I feel that the Civil 3D-specific style governance (TREF, AECC styles) is where the tool needs to grow, and feedback like yours helps prioritize that.
Thanks again for the detailed review.
Asem Daaboul
"Actions are but by intentions, and every man shall have only that which he intended."