Report Wizard
Element lists are keyed by stereotype
In a SysML model, $Class can come back empty while $Block, $Requirement or your own stereotype's list holds the elements. Loop over the stereotype you applied.
Free tutorials · Cameo Report Wizard · VTL · Metachains
Every Report Wizard, VTL and metachain tutorial we’ve published, in the order we’d learn them. When the model changes, you regenerate the document instead of editing it by hand, so what you deliver always matches the model.
These are the original CameoMagic videos and project files. This page is their home.
## one table row per requirement #forrow($req in $Requirement) $req.id | $req.name #endrow
| Id | Name |
|---|---|
| EV-1 | Driver Authentication |
| EV-2 | Charge Power |
| EV-3 | Connector Interlock |
| EV-4 | Session Pricing |
Tools › Report Wizard › Generate
Learning path
Start with the templates that ship with Cameo, then build a model that is ready to print, then write your own VTL. Metachains come last because they make your tables and templates answer bigger questions.
Open Tools › Report Wizard and pick a built-in template, such as the activity diagram Word report. Set the variables, scope it to a package, choose the output file, and click Generate.
Video: Report Wizard & VTL tips →Open the same template to see the Velocity Template Language that produced the output. The built-in templates are the best examples of loops, macros and tables. The MagicDraw Report Wizard template creation tutorial (31 pages) covers the basics.
Give requirements a stereotype with the attributes your document needs, add the Report profile to the project, and store the title, author and revision as Report Data variables.
Video: Report Wizard model build →Create a new template in Word, then loop over the elements, repeat table rows with #forrow, and insert diagram images. Word is the easiest place to troubleshoot: turn on line numbers so an error message points to a line.
A metachain follows a chain of relationships from one element to another, for example from a block to the requirements it satisfies. Use one as a custom table column or as a derived property.
Video: simple navigation vs metachain →Check the gotchas below before you search forums. Most "the whole template failed" errors come from a few well-known quirks.
Report Wizard gotchas →Videos
Report Wizard · 14 minReport Wizard & VTL tips, resources and troubleshootingRun a built-in template, read its VTL, and the troubleshooting habits we use when a template fails.
Report Wizard · 19 minReport Wizard model buildSet up stereotypes, the Report profile and Report Data so a requirements model generates a specification.
Metachains · 12 minMetachain and structured expressions in tables and legendsTwo worked examples, including a dynamic legend.
Metachains · 9 minSimple navigation vs metachain in tablesConvert a simple navigation column into its metachain form, on a toaster example.
Metachains · 5 minMetachain filter operationTwo short examples of filtering a metachain's results.
Custom columns · 5 minCustom columns and filtering with the scope queryBuild custom columns with metachains, using the scope query button.
Metachains · 36 minFind unused signals with a generic tableAudit signal usage across a model with metachains, tables and legends.
Metachains · 61 minLogical to physical custom columnsA long-form walkthrough of metachain columns across logical and physical architecture.
Metachains · 13 minProbability assignment with a dynamic legendCustom columns and a dynamic legend built with metachains.
Gotchas
We found these while building and testing report templates against a real model with Cameo’s own report engine. We build templates in Cameo 2022x, 2024x and 2026x.
Report Wizard
In a SysML model, $Class can come back empty while $Block, $Requirement or your own stereotype's list holds the elements. Loop over the stereotype you applied.
Report Wizard
$!ref.method($otherRef), a quiet reference with a $ argument, is a syntax error ("Encountered <") that stops the whole template. Drop the !, or pass a plain string argument.
Report Wizard
A plain #foreach inside a Word table row runs inline and crams everything into one row. Use #forrow … #endrow. It adds a row for every item, even ones an #if skips, so build the list first with $array.createArray().
Report Wizard
$report.currentDate no longer works: use $date or $date.get("MMMM dd, yyyy"). Diagram images come from $d.image. In an HTML template it returns a file path, so wrap it in an <img> tag.
Report Wizard
Every blank line in a template becomes a blank line in the output. Keep the VTL tight, and use Word's highlight color to mark where a loop or macro ends.
Derived properties
The element arrives as arg1, not THIS. == doesn't compare model elements by identity, so use a.is(b). A debug column must have Type = String, or the text it returns won't show.
Project files
Each file is the finished Cameo project from a tutorial, so you can open it, inspect every template, column and expression, and reuse them.
Learn it live
Our 6-hour Advanced Topics course covers derived properties, metachain navigation, model libraries and custom Report Wizard (VTL) templates, hands-on in Cameo on our cloud VM. No license needed.
Questions
A built-in tool in Cameo Systems Modeler and CATIA Magic that generates documents from your model. A template decides what goes in the document, and the Wizard fills it with the model's current data, so people without Cameo can read the result.
The Apache Velocity Template Language. Report Wizard templates are written in it: variables start with $, and directives such as #foreach, #if and #macro start with #.
Word, Excel, PowerPoint, HTML and text templates, among others. Report Wizard has no native PDF output, so print a Word or HTML report to PDF.
With the templates that ship with Cameo. Run one, then open it and read its VTL. They are the best examples of loops, macros and tables. Write your own after that.
Report Wizard lists elements by their stereotype. In a SysML model, blocks show up in $Block and requirements in $Requirement, so $Class can be empty.
Look for a quiet reference with a $ argument, such as $!ref.method($otherRef). Remove the ! or pass a string argument instead.
A chain of navigation steps from one element to related elements, for example from a block to the requirements it satisfies. It powers custom table columns, legends and derived properties without any scripting.
Yes. We build templates for specifications and CDRL deliverables from your model as consulting work, in Cameo 2022x, 2024x or 2026x, and teach your team to maintain them.
CameoMagic is an independent company with no affiliation with, sponsorship by, or endorsement from Dassault Systèmes. CATIA and Cameo are trademarks of Dassault Systèmes or its subsidiaries.
Start with the free videos, download a project file, or learn Report Wizard and metachains hands-on in Advanced Topics.
Prefer email? Write to consulting@cameomagic.com
Tell us which documents you need from your model, and we’ll follow up to scope the templates.
No account yet?
Create an Account