One fixed 12d macro turns a raw Veris survey into a fully-compliant client deliverable. Below is a working simulation with real UnityWater data: scan the survey, fill the per-job values, run the macro, and watch every attribute fill in.
Veris surveys every job using Veris field codes. But every client wants the data in their own format — their attribute names, their drop-downs, their rules. Doing that by hand, job after job, is slow and error-prone. CSM + this macro automate it.
Surveyors only capture what must be measured on site — a filtered field-code list, so they aren't overwhelmed.
CSM defines every rule: which attribute maps where, how values translate, what formulas to run. It writes instructions, never does the maths.
In 12d, the one fixed macro reads those instructions, asks you for a few per-job values, then fills in everything the surveyor didn't capture.
Two stages. Stage 1 (Codelist Manager) translates the code. Stage 2 (CSM designs it, the macro runs it) fills in the attributes.
Links each Veris code to the client's code / model / layer.
DRDPC → "308 Side entry pit"
CSM writes the rule files: runtime actions, value maps, conditional rules + the field-input spec.
CSM appIn 12d: scan the survey, fill the gaps (copy / map / compute / reference), write attributes onto every element.
12d macroEvery required attribute populated → export to the client's format (fieldcodes, Leica, Trimble, ADAC XML).
Ready to shipThis behaves like the real macro panel, with real UnityWater data. Follow the three steps in the orange bar. Everything you click changes the result — just like in 12d.
The macro hasn't scanned yet. Click below — it reads the SURVEY model and shows only the client codes actually found in it (not the full client list).
| Element | Field value | Reference attribute | After the macro runs |
|---|
Nothing run yet. Scan, fill the Project Values, then press Run the macro.
The same thing the simulation does, told as a story — follow pipe depth on a UnityWater sewer pipe from the field to the deliverable. The surveyor never measures depth; the macro derives it.
Every client attribute has a source kind — it answers "where does this value come from?". That single tag decides whether it appears on the panel for you to fill, or the macro handles it silently.
| Source kind | In plain English | On the panel? |
|---|---|---|
| capture_new | The surveyor measured it on site. Already in the survey data. | No — macro reads it |
| veris_attr | Copy a captured Veris attribute straight across (Material → Material). | No — macro copies |
| office_ingestion | Typed in the office, not measured — builder, document number, asset owner. | Yes — you type it |
| project_default | One value for the whole job — data quality grade, survey method. | Yes — set once |
| reference | Derived from a 12d object you pick — a design TIN, cadastre, sewer main. | Yes — pick the object |
| derived_formula | Computed from geometry or other attributes — depth, length, bearing. | No — macro computes |
| conditional_rule | IF/THEN logic over other attributes (like an Excel rule). | No — macro computes |
| value_map | Translate a Veris choice to the client's word (QL-A → A). | No — macro translates |
| blocked_manual | No safe automatic source yet — a human must decide before delivery. | No — review queue |
The macro has exactly two "file boxes". One holds the client's rules (you never edit it). The other holds your answers for this job (the macro reads and writes it).