A Reddit thread on r/SolidWorks recently asked how to get the title block Description field to pull from the part’s custom properties automatically. The answers ranged from “use a macro” to “you need PDM” to “manually copy it every time.” No one mentioned $PRPSHEET.
This syntax has been in SolidWorks for well over a decade. It links a drawing annotation directly to a named custom property on the model, without any macro, without PDM, without add-ins. When the part’s Description property changes, the drawing title block updates on open. If you’re manually typing part numbers, descriptions, and materials into title blocks, or using a macro to copy properties from model to drawing, this is the feature you’re missing.
The Two Property Link Syntaxes
SolidWorks drawings use two property link syntaxes in annotations:
$PRP:"PropertyName" — reads a custom property from the drawing file itself. The drawing has its own file-level custom properties (File → Properties → Custom tab) and $PRP reads from those. This is useful for properties that belong to the drawing, not the model: revision, drawing number, approval status.
$PRPSHEET:"PropertyName" — reads a custom property from the model shown in a specific drawing view, as configured in Sheet Properties. This is the one that eliminates manual title block entry for part data.
The distinction matters. If you use $PRP:"Description" in a title block, you’ll get the drawing file’s Description property — which is often blank, because the description lives on the part, not the drawing. Switch to $PRPSHEET:"Description" and you get the part’s Description value.
Inserting a $PRPSHEET Annotation
There are two ways to insert this link into a title block.
Method 1: Link to Property dialog
This is the UI-driven path. Edit your sheet format (right-click the sheet background → Edit Sheet Format). Double-click an existing annotation to edit it, or insert a new Note. When the Note is active for editing, click the Link to Property button in the Note PropertyManager (it looks like a document with a chain link).
In the dialog that opens, change the Custom Property Value From dropdown from Current document to Model found here in view specified in Sheet Properties. Then pick the property name from the dropdown — it lists properties found in the referenced model. Click OK.
The annotation text changes to show the $PRPSHEET:"PropertyName" placeholder. When you exit the sheet format editor, it resolves to the actual property value.
Method 2: Direct text entry
Right-click any text annotation → Edit Text (or just double-click to enter editing mode). In the text field, type the syntax directly:
$PRPSHEET:"Description"
$PRPSHEET:"PartNo"
$PRPSHEET:"Material"
Use double quotes around the property name. The property name must match exactly — including capitalization — the name used in the model’s custom properties. Common mismatch: the model has "Description" but you typed "description". Property names in SolidWorks are case-insensitive when used in the standard custom property tab, but the $PRPSHEET syntax is case-sensitive. When in doubt, use Method 1 so SolidWorks populates the exact name from the dropdown.
Sheet Properties: Pointing $PRPSHEET at the Right Model
The $PRPSHEET link reads from whatever model is specified in Sheet Properties for that sheet. Getting this wrong is the most common source of unexpected blanks or wrong values.
To set it:
Right-click the sheet background — not a view, not an annotation — and choose Properties. Or right-click the sheet name in the FeatureManager and choose Properties. Either way gives you the Sheet Properties dialog. If you right-click on a view instead, you get the Drawing View Properties dialog, which is a different thing.
Find the field labelled Use custom property values from the model in: (exact label varies by version). It shows a dropdown or picker for a drawing view.
Select the view that contains the primary model. For a part drawing, this is typically your first view — the front or isometric view. For an assembly drawing where you want properties from a specific component, you’d select a view showing that component (though this gets complicated fast for assemblies — more on that below).
Once set, every $PRPSHEET annotation on that sheet reads from the selected view’s model.
Per-Sheet Configuration in Multi-Sheet Drawings
Each sheet in a multi-sheet drawing has its own Sheet Properties, independent of the others. This means:
- Sheet 1 (part overview) can pull from View 1 of Part A
- Sheet 2 (assembly context) can pull from a different view showing Assembly B
- Sheet 3 can pull from a third model entirely
This is intentional. A multi-sheet drawing can reference multiple models across sheets, with each sheet’s title block populated from its own reference view. You configure Sheet Properties per-sheet.
The gotcha is that when you add a new sheet (Insert → Sheet), the new sheet’s reference view is blank by default. Any $PRPSHEET annotations on that sheet will show nothing until you open Sheet Properties for the new sheet and assign a reference view.
Configuration-Specific Properties
SolidWorks custom properties exist at two levels: file-level (Custom tab) and configuration-level (Configuration Specific tab). If you store material or description on the configuration rather than the file, the behavior of $PRPSHEET changes.
$PRPSHEET reads the configuration that’s active in the referenced drawing view, not the model’s current active configuration. A drawing view has a displayed configuration — you set it in the Drawing View Properties dialog. So if your view displays the “Galvanized” configuration, $PRPSHEET:"Material" returns the Material value from the “Galvanized” configuration’s Configuration Specific properties.
This is actually the correct behavior for configuration-specific properties — the drawing view already knows which configuration it’s showing, so PRPSHEET respects it. But if you’re storing a property at the configuration level and the view is showing a configuration without that property, you’ll get a blank.
To explicitly reference a specific configuration’s property in an annotation:
$PRP@ConfigName:"PropertyName"
This variant (PRP, not PRPSHEET, with an @ suffix for config name) targets a named configuration’s property on the drawing file. For model configuration properties, the drawing view’s displayed configuration is the right lever — don’t fight it with explicit config references.
What You Cannot Do with $PRPSHEET
Read-only in the drawing. You can’t update a model custom property by editing a $PRPSHEET annotation in the drawing. The annotation displays the property value; it doesn’t provide a write-back path. To update the part’s Description, open the part and edit its properties there.
No live sync while the drawing is open. If you change the model’s custom property while the drawing is also open, the drawing annotation doesn’t refresh immediately. It updates on the next open-and-rebuild cycle, or when you manually rebuild the drawing. For teams where model properties change frequently, this is usually fine — the drawing is typically opened after a model update, not simultaneously.
Not a replacement for PDM data cards. PDM Professional uses its own PRPSHEET mapping for data card fields, which is a separate mechanism at the vault level. The title block $PRPSHEET and the PDM data card mapping can coexist and should — the title block annotation handles the drawing display, the data card handles the metadata in the vault.
Common Gotchas
Right-clicking on a view instead of the sheet. This is the most common mistake when trying to access Sheet Properties. If you right-click on a drawing view, you get the Drawing View Properties dialog (view-specific settings). If you right-click the blank sheet area between views, you get the Sheet Properties dialog (sheet-wide settings, including the PRPSHEET reference view). The difference between where you click is a few pixels but produces a completely different result.
Property name case sensitivity. As noted earlier, $PRPSHEET:"Description" and $PRPSHEET:"description" may not resolve to the same value depending on SolidWorks version. If your title block shows the literal text $PRPSHEET:"description" instead of resolving, a case mismatch or missing sheet reference view is the most likely cause.
Sheet format vs. sheet annotations. SolidWorks drawings have two layers: the sheet format (background template with title block, border, and standard annotations) and the sheet (where views and sheet-specific annotations live). $PRPSHEET works in both layers. If your title block is in the sheet format and you want it to pick up PRPSHEET values, that works — but the sheet format is shared across sheets, so a single format can drive all sheets with PRPSHEET resolving differently on each based on each sheet’s reference view configuration.
No Sheet Properties reference view set. If Sheet Properties has no reference view selected, $PRPSHEET annotations on that sheet return empty strings. This is the most common cause of a blank title block after copying a drawing template to a new project.
Connecting to Your Custom Property Workflow
The $PRPSHEET approach works best when custom properties are populated consistently across models. If some parts have Description and others have Desc or DESCRIPTION, the title block annotations will partially resolve. The property naming convention needs to be consistent across the team — that’s a template and standards problem, not a PRPSHEET problem.
For teams using SolidWorks Property Tab Builder to enforce property entry at part creation time, the custom property names in the template should match exactly what appears in $PRPSHEET annotations in the drawing template. Name the template fields once, match them in the drawing template once, and the two halves lock together automatically on every new part.
For BOM-level property management — where properties need to flow from part to assembly BOM to Excel — the same property names carry through. A property named Description in a part custom property appears in the BOM column named Description, exports to Excel with that column header, and displays in the drawing title block via $PRPSHEET:"Description". One naming decision drives the whole stack. See SolidWorks BOM to Excel for how the property-to-BOM mapping works on the export side.
Understanding how drawing files store their internal structure — and why SolidWorks separates drawing-file properties from model properties — is covered in detail in SolidWorks .slddrw drawing files internals. The same OLE structured storage model that makes .slddrw files hard to inspect externally is also why PRPSHEET exists as a runtime link rather than a static embedded value.