Appearance
PlanExpo Integration
PlanCAD connects directly to PlanExpo, the event floor-plan management platform. The integration lets you import stands and zones from PlanExpo into your CAD drawing, push geometry back, and keep both systems in sync as the event layout evolves.
Overview
The workflow is bi-directional:
- PlanExpo to PlanCAD: import Spots, ConstraintZones, and AuthorizedZones as CAD entities (polylines or rectangles), with stand numbers, sector names, and label colors.
- PlanCAD to PlanExpo: push geometry modifications and stand number changes back to PlanExpo from within PlanCAD.
The sync panel shows every shape from PlanExpo alongside its status — new, synced, modified (diff), or deleted — and lets you resolve conflicts shape by shape or in bulk.
Connecting to PlanExpo
PlanCAD does not use a typed API key. Authentication is handled through a config.xml file that you obtain from your PlanExpo administrator. The file lists the remote configuration URLs for one or more events.
Steps:
- Open File > PlanExpo > Connect (or the PlanExpo button in the toolbar).
- When prompted, select your
config.xmlfile on disk. - PlanCAD reads the file, fetches the event list from each URL it contains, and populates the event selector.
Each event entry in the config carries a subdomain (client), an event key, a base URL, and an event secret that is used for all subsequent API calls. You do not need to manage these values manually.
Selecting an Event and Floor
After connecting, the PlanExpo dialog presents two autocomplete selectors:
- Event — choose the event from the list fetched from your config.
- Floor — choose the floor (hall) within that event.
Each floor has a name and an autocadOffset (x, y) that defines the origin shift between PlanExpo coordinates and your drawing's coordinate system.
Once you confirm the selection, PlanCAD fetches the full plan for that event and caches it. Subsequent refreshes within the same session use the cache; reconnecting clears it.
Unit and Coordinate Mapping
PlanExpo stores geometry in its own unit (typically centimetres or metres). Your DXF drawing may use a different unit. The dialog lets you set:
- PlanExpo unit — the unit PlanExpo uses for shape coordinates (mm, cm, or m).
- Drawing unit — the unit your current PlanCAD document uses.
PlanCAD computes a scale factor (UNIT_TO_MM[peUnit] / UNIT_TO_MM[dxfUnit]) and applies it to every coordinate it converts.
Coordinates are also flipped on the Y axis when converting from PlanExpo space (origin top-left, Y down) to CAD space (origin bottom-left, Y up).
Floor Mapping
For advanced layouts where the PlanExpo SVG coordinate space does not align linearly with the DXF coordinate space, PlanCAD supports a floor mapping. A floor mapping defines the relationship between the PlanExpo floor's pixel rectangle (floorW, floorH) and the corresponding rectangle in your CAD drawing (svgX, svgY, svgW, svgH). When a mapping is active, all shape coordinates are transformed through it instead of the simpler offset + scale method.
Shape Types
PlanCAD imports three shape types from PlanExpo:
| PlanExpo type | Meaning |
|---|---|
Spot | An exhibitor stand |
ConstraintZone | A zone with placement restrictions |
AuthorizedZone | A zone where stands are permitted |
Shapes of type Obstacle and Marker are fetched but not included in the sync panel.
Each imported shape becomes a CAD entity — a rectangle if the shape has a simple rectangular geometry (x, y, width, height, angle), or a closed polyline if the shape has an explicit polygon point list.
The entity receives:
- A
standNumberproperty built from the shape'ssectorNameandsectorIndex(e.g."A12"). - An
autocadIdthat links the entity back to the PlanExpo shape ID, so future syncs can match them. - A layer color derived from the shape's PlanExpo label color (r, g, b).
The Sync Panel
Once connected to a floor, the PlanExpo Sync panel opens as a floating, draggable window over the canvas. It lists all shapes for the active floor, filtered by status.
Status tabs
| Status | Meaning |
|---|---|
| New | Shape exists in PlanExpo but has no matching entity in the drawing |
| Synced | Shape and entity match exactly (geometry and stand number) |
| Diff | Shape and entity differ (position, size, angle, or stand number) |
| Deleted | Shape was previously sent from PlanCAD (has an autocadId) but has been removed from the drawing |
By default the panel shows New, Diff, and Deleted items. Click a tab header to toggle it.
Importing shapes
- Import (single item): imports the PlanExpo shape as a new entity in the current layer.
- Import all new: imports every shape in the New tab in one operation.
When a shape is imported, its geometry is converted using the active offset, scale, and floor mapping.
Resolving differences
When a shape is in the Diff state, two actions are available:
- Accept PlanExpo: overwrites the CAD entity's geometry and stand number with the values from PlanExpo.
- Keep CAD: pushes the CAD entity's current geometry back to PlanExpo (see Exporting below).
Bulk operations
- Push all diffs: sends every CAD entity that differs from PlanExpo back to PlanExpo in one operation. PlanExpo is updated; the sync status becomes Synced.
- Delete from PE (single item): removes a shape from PlanExpo. Use this to clean up shapes that were created in PlanCAD and are no longer needed.
- Delete all from PE: removes all Deleted-status shapes from PlanExpo in one operation.
Navigating items
Clicking an item in the sync panel selects and zooms to the corresponding CAD entity. Hovering an item highlights the entity on the canvas without selecting it.
Exporting Layers to PlanExpo
PlanCAD can upload layers as background image data or as stand geometry to PlanExpo. The canUpload flag (set in the config.xml for the event) controls whether upload operations are available.
Entities are serialised to the PlanExpo geometry format (x, y, width, height, angle, and optionally a points array for polygons) before upload.
Stand Number Synchronisation
Stand numbers flow in both directions:
- From PlanExpo: the stand number is read from
sectorName + sectorIndexand stored on the entity'sstandNumberproperty. - From PlanCAD: when you push a diff or use "Push all diffs", the entity's
standNumberis sent to PlanExpo.
The geometry comparison also checks stand numbers: if the entity's standNumber does not match what PlanExpo has, the shape is classified as Diff, not Synced, even if the geometry is identical.
Bulk stand number push
To push stand numbers for all modified entities at once, click Push all diffs in the sync panel header. PlanCAD iterates through every Diff item and sends the CAD values to PlanExpo. Items that were only different in stand number (no geometry change) are included.
Exhibitor Services
PlanExpo tracks exhibitor service requirements — tables, chairs, lighting, electrical connections, and similar items ordered per stand. PlanCAD imports this data alongside the stand geometry.
How Services Are Imported
When a PlanExpo shape is imported or synced, any services attached to it in PlanExpo are stored on the CAD entity as a peServices array. Each entry contains:
- label — the service name (e.g. "Tables", "Chairs").
- quantity — the number ordered (e.g. 4).
Services are read-only in PlanCAD — they reflect what PlanExpo reports. To change service quantities, update them in PlanExpo and refresh the sync.
Viewing Services
Select a stand entity and open the Properties panel. If the stand has PlanExpo services, they are listed below the geometry fields.
Service Block Rules
Service block rules let you automatically generate and lay out block instances on the drawing based on PlanExpo service quantities. For example, you can define a rule that places a "Table" block for each table service ordered by an exhibitor, arranged in a grid inside or around the stand.
Opening the Dialog
Open Edit > Service Block Rules (or from the PlanExpo menu). The dialog lists all defined rules.
Creating a Rule
Click Add Rule and fill in:
| Field | Description |
|---|---|
| Service label | The PlanExpo service to match (e.g. "Tables"). Must match exactly. |
| Block | The block definition to instantiate for this service. Choose from the drawing's block library. |
| Transform | A JavaScript expression that receives q (the service quantity) and returns the number of blocks to generate. Default: return q. Example: return Math.ceil(q / 2) to place one block per two items. |
| Layout | How blocks are arranged: linear (single row) or grid (multiple columns). |
| Spacing X / Y | Distance between block instances in drawing units. |
| Columns | Number of columns (grid layout only). |
| Max count | Safety cap to prevent runaway generation (default 500). |
How Generation Works
When you click Regenerate All (or when a rule is added/updated), PlanCAD:
- Finds all stands that have a
standNumberandpeServicesmatching the rule's service label. - Evaluates the transform function to compute the target block count per stand.
- Creates or removes
block-insertentities to match the target count. - Positions the blocks relative to the stand center using the configured layout pattern.
Generated blocks carry metadata (generatedByRule, parentStandId) so they can be cleaned up or regenerated when rules change.
Editing and Deleting Rules
Click Edit on any rule to modify its parameters. Click Delete to remove it — all blocks generated by that rule are also removed from the drawing.
Refreshing
Click the Refresh button in the panel header to re-fetch the floor's shape data from PlanExpo and recompute all sync statuses. The plan data is cached per event; a refresh bypasses the cache for the current floor's shape data (spot assignments), but reuses the cached plan geometry unless you reconnect.
Disconnecting
Close the PlanExpo panel or use File > PlanExpo > Disconnect to clear the connection. The plan cache is cleared. Your CAD entities keep their autocadId properties, so reconnecting later will correctly match them to PlanExpo shapes.