Super Girt Tool (SGT)
The Super Girt Tool automates the placement of horizontal girts and opening framing (headers, sills, and jambs) on foundation walls. Instead of manually placing each structural member one at a time, SGT lets you configure an entire wall's worth of girts in one operation.
When to Use It
Use the Super Girt Tool when you need to:
- Add horizontal girt members to a foundation wall at regular spacing
- Frame out openings (doors, windows, penetrations) with headers, sills, and jambs
- Place multiple girt rows at once instead of one-by-one
- Ensure consistent spacing and alignment across a wall
- Edit or update previously placed girt systems
Common scenarios:
| Scenario | SGT Helps By... |
|---|---|
| New foundation wall with multiple window openings | Auto-detecting openings and framing them |
| Girts at 5'-0" vertical spacing | Pre-seeding rows at correct intervals |
| Mixed girt sizes at different elevations | Configuring each row independently |
| Updating girt types after initial placement | Editing the existing system in place |
Quick Start
Basic workflow in 4 steps:
- Launch - Click "Super Girt Tool" from the DB Tools ribbon tab
- Select Wall - Pick the foundation wall or linked wall you want to frame
- Configure - Adjust girt elevations, types, and opening framing as needed
- Place - Click "Place" to create all the structural members
That's it for basic use. The tool handles the technical details of rotation, justification, and positioning automatically.
The SGT Window
When you launch SGT and select a wall, the main window appears with these sections:
Top Bar
| Control | Purpose |
|---|---|
| Offset | Distance from the wall face to place girts (0'-0" means directly on the target layer) |
| Layer | Which wall layer to align girts to (for compound walls with multiple layers) |
Girt Elevations Section
This is where you configure your horizontal girts. Each row represents one girt at a specific elevation.
| Column | What It Does |
|---|---|
| Elevation | Height above the base reference (editable) |
| Girt Type | Family and type to use (e.g., "C Shapes : C10X15.3") |
| Rotation | Cross-section rotation (0, 90, 180, or 270 degrees) |
| Y-Just | Lateral positioning (Left, Center, Right, Origin) |
| Z-Just | Vertical positioning (Top, Middle, Bottom, Origin) |
| Flip | Flip Facing (mirror the member orientation) if needed |
| Left Extent | Where the girt starts - Full Length or at a grid line |
| Right Extent | Where the girt ends - Full Length or at a grid line |
Add Row: Type an elevation in the "Add" field and click "Add" to create a new girt row.
Segmented girts: Auto-segmented girts show a chevron in the first column. Click it to open the Segment Flyout, where you can edit Type/Rotation/Y/Z/Flip (and delete) per segment. Selecting a segment in the flyout highlights it in the preview so it’s clear which segment you’re editing. The flyout opens to the right of the chevron and centers vertically in the window; resizing primarily expands the Type field. The background behind the flyout is lightly dimmed so the preview remains visible.
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:470
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:1910
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:1996
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml.cs:790
Source: src/Tools/Structural/SGT/Shell/ViewModels/GirtRowViewModel.cs:67
Openings Section
This section shows detected openings (in Linked mode) or manually added openings (in Foundation mode).
| Column | What It Does |
|---|---|
| Opening | Name/ID of the opening |
| Center Along | Horizontal position along the wall |
| Center Elevation | Vertical center of the opening |
| Width | Opening width |
| Height | Opening height |
| Left Jamb | Enable/disable left vertical framing |
| Right Jamb | Enable/disable right vertical framing |
| Header | Enable/disable top horizontal framing |
| Sill | Enable/disable bottom horizontal framing |
Use the chevron on each opening row to open the Segment Flyout for opening members. The flyout shows role-level fields (Type/Rotation/Y/Z/Flip) and (when segmented) per-segment child rows for that role. Selecting a segment highlights it in the preview. The flyout opens to the right of the chevron, centered vertically in the window, with the same resizing rules as the girt segment flyout.
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:760
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:1910
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:2048
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml.cs:790
Source: src/Tools/Structural/SGT/Shell/ViewModels/Panes/SegmentFlyoutViewModel.cs:14
Bulk Edit Flyout
Double-click a row in either grid to open the Bulk Edit flyout. The flyout is an in-window overlay (not a detached WPF Popup), so it stays bound to the SGT window during minimize/restore and does not float above other apps.
- Targets: Choose which member roles the bulk operation applies to (e.g. Girt, Left Jamb, Right Jamb, Header, Sill).
- Flip Facing: Tri-state; indeterminate means “don’t apply Flip” for this bulk operation.
- Apply (N):
Nis the number of active fields that will be applied (Type/Rotation/Y/Z/Flip).
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:1410
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:1414
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml.cs:697
Source: src/Tools/Structural/SGT/Shell/ViewModels/Panes/BulkEditPaneViewModel.cs:772
Preview Panel (Right Side)
Shows a live preview of what will be placed:
- Elevation - Front view showing girts and openings
- Section - Cross-section view showing member profiles
- 3D - Interactive 3D view you can orbit and zoom
The Role Palette shows what each color represents:
- Blue = Girts
- Green = Headers
- Orange = Sills
- Purple = Left Jambs
- Cyan = Right Jambs
Preview controls (mode selector, zoom-to-fit, reset view) are overlaid in the top-right of the preview. In elevation/section mode, the legend shows segment types and role colors. In 3D, switching into the preview automatically jumps to the stable exterior “home” camera, and Reset view returns to that same camera (3/4 view + slight downward pitch), including for mirrored/rotated links. Wheel zoom now uses a looser near/far clamp (close inspection without an abrupt hard wall), and camera constraints use a relaxed leash that settles after interaction. Pan/orbit always stop on mouse-up and also cancel if the window deactivates.
3D click-to-inspect: Click any element in the 3D preview to select it (highlights in gold) and display a tooltip showing the role and section name. Selection commits on mouse-up when the gesture was a click (not a drag-pan). Clicking a wall layer shows a tooltip with layer info without clearing the current selection. Clicking empty space clears the selection and hides the tooltip. When a specific segment is selected, sibling segments from the same member are shown with a mild dim while unrelated elements are fully dimmed.
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml:1051
Source: src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml.cs:790
Source: src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.AnalysisAndHydration.cs:228
Source: src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.Navigation3D.cs:16
Source: src/Tools/Common/UI/Navigation/HelixRevitNavigation.cs:19
Source: src/Tools/Common/UI/Navigation/HelixRevitNavigation.cs:47
Source: src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.Core.cs:680
Preview editing notes:
- Drag/snap edits from elevation preview handles (girt extents/segments and jamb/header/sill extents) now participate in the SGT window's Undo/Redo buttons.
- Drag/snap edits are association-locked: handles snap only to valid associations (other elements, grids, or wall edges). They do not create arbitrary free-along points.
- A drag only commits when you are inside snap threshold on an accepted target; until then, preview border/guide feedback stays in the invalid state.
- Snap guides now render continuously while dragging: dim bands for available targets plus an active guide line (cyan when valid, red when invalid).
- Opening geometry is not draggable in preview: opening rectangles/edges do not expose drag/snap handles.
- For segmented opening members, jamb/header/sill endpoint handles are created per segment; dragging one endpoint updates that specific segment's extent association.
- For bisected girts, only the true outer endpoints move member extents (first-left/start and last-right/end). Other segment endpoints edit opening-edge gaps.
- Interior bisected endpoints commit by opening-edge identity (opening key + edge side), so mirrored/rotated links do not move the opposite endpoint.
- When a girt endpoint is snapped to a new association, any explicit gap override for the touched endpoint/edge is cleared so geometry-aware defaults apply for the new association.
- When you merge adjacent girt segments, any opening-member extents that targeted either segment are automatically re-targeted to the merged segment key, so snap-to-girt semantics remain stable after merges.
- If re-segmentation recomputation yields fewer than 2 segments, SGT collapses the segment group back into a single standalone row and shows a banner summarizing how many groups were collapsed.
- If geometry-aware gap computation fails (missing profile or transform failure), SGT reports an error. Re-run Analyze to refresh warmup data.
- Gap override fields reject
NaN/Infinityvalues (negative values are allowed); invalid overrides surface as plan validation failures before placement. - Rows intentionally anchored to opposite edges of the same opening remain placeable as opening-internal spans (they are not rejected as zero-span subtraction artifacts).
- Opening-edge snaps are available against all eligible opening edges in the active preview, not only the currently selected opening row.
- Grid markers in elevation preview now use a white bubble (white fill, black outline) with centered black label text for dark-theme readability.
- When multiple handles overlap, press Tab to cycle candidates; Enter confirms the highlighted handle and Esc cancels.
- Right-click on a segmented opening member now opens a segment-specific context menu (delete that segment only). Row-level delete actions appear only when you open the row menu itself.
- Deleting the last segment of a single opening role removes that role; the opening row itself remains until all roles for that opening are removed.
Source:
src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.DomainIntegration.cs:130
Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.DomainIntegration.cs:681
Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.DomainIntegration.cs:958
Source:src/Tools/Structural/SGT/Features/Preview/Snapping/ElevationSnapService.cs:46
Source:src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.Snapping.cs:359
Source:src/Tools/Structural/SGT/Shell/UI/Rendering/PreviewRenderer.cs:577
Source:src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.CanvasInput.cs:980
Source:src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.Handles.cs:395
Source:src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.Handles.cs:524
Source:src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.CanvasInput.cs:1472
Source:src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.CanvasInput.cs:1961
Source:src/Tools/Structural/SGT/Shell/ViewModels/Panes/OpeningsPaneViewModel.cs:394Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.DomainIntegration.cs:1908
Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.CoreAndEditing.cs:1536
Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.CoreAndEditing.cs:1209
Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.CoreAndEditing.cs:2899
Source:src/Tools/Structural/SGT/Domain/Plan.cs:271
Debug Log Volume (2026-02-09)
When Debug mode is enabled, SGT now favors summary diagnostics over per-probe noise:
- Step 1/2/3 preflight summaries report total/success/failure counts.
- Step 2 opening detection/merge logs are summarized, with only small opening samples.
- Orientation logs keep concise per-role summaries in Debug; deep probe diagnostics moved to Trace.
This keeps long SGT sessions readable while preserving deep diagnostics when Trace logging is enabled.
Source:
src/Tools/Structural/SGT/Features/Placement/Steps/PlanBuilder.Step1Calibrate.cs:151
Source:src/Tools/Structural/SGT/Features/Placement/PlanBuilder.Helpers.cs:565
Source:src/Tools/Structural/SGT/Features/Placement/Steps/PlanBuilder.Step2Analyze.cs:310
Source:src/Tools/Structural/SGT/Features/Placement/Steps/PlanBuilder.Step2Analyze.cs:384
Source:src/Tools/Structural/SGT/Features/Placement/Steps/PlanBuilder.Step3Warm.cs:481
Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:828
Bottom Bar
| Button | Action |
|---|---|
| Cancel | Close without placing anything |
| Place | Create all configured members in Revit |
| Update | (Edit mode) Update existing members |
| Remove | (Edit mode) Delete the entire girt system |
Step-by-Step Workflows
Creating a New Girt Plan
Launch the tool
- Go to the DB Tools ribbon tab
- Click "Super Girt Tool"
Select your wall
- A prompt appears asking you to select a wall
- Click on a foundation wall or linked wall
- The tool analyzes the wall and populates the window
Review auto-seeded girts
- SGT automatically creates girt rows at approximately 5'-0" spacing
- Review the elevations and adjust as needed
- Change girt types if you need different sizes at certain elevations
Configure openings (if any)
- Linked walls: Openings are auto-detected
- Foundation walls: Click "Add Opening" to manually define openings
- Check/uncheck the boxes for which framing members you want
Preview your layout
- Switch between Elevation, Section, and 3D views
- Verify everything looks correct before placing
Place the girts
- Click "Place"
- The tool creates all members in Revit
Adjusting Girt Elevations
To change an existing row's elevation:
- Click in the Elevation cell for that row
- Type the new elevation (e.g., "7'-6"")
- Press Enter - the preview updates automatically
To add a new girt at a specific elevation:
- Find the "Add" field at the bottom of the Girt Elevations section
- Type your elevation (e.g., "12'-0"")
- Click "Add"
- A new row appears with default settings
To remove a girt row:
- Select the row
- Press Delete (or right-click and choose Remove)
Working with Grid Extents
If your project has grids that intersect the wall, you can limit girts to specific grid-to-grid spans:
- Look at the "Left Extent" and "Right Extent" columns
- By default, both show "Full Length" (wall end to wall end)
- Click the dropdown to see available grid lines
- Select a grid to start or end the girt at that location
Example: A wall runs from Grid A to Grid D, but you only want girts between Grid B and Grid C:
- Set Left Extent to "Grid B"
- Set Right Extent to "Grid C"
Configuring Opening Framing
For each opening, you control which framing members are created:
| Member | When to Use |
|---|---|
| Header | Almost always - provides support above the opening |
| Sill | Usually for windows; often omitted for doors at grade |
| Left/Right Jambs | Usually both enabled; disable if opening is at wall end |
To customize an opening's framing:
- Find the opening in the Openings section
- Check/uncheck the boxes for Header, Sill, Left Jamb, Right Jamb
- The preview updates to show your changes
Editing an Existing Girt System
If you've already placed girts using SGT, you can edit them:
- Select any girt from the system in Revit
- The "Modify - Structural Framing" tab appears
- Click "Edit SGT Wall" (only visible when SGT members are selected)
- The SGT window opens with your existing configuration
- Make changes as needed
- Click "Update" to apply changes, or "Remove" to delete everything
During edit/update, SGT now follows this behavior:
- Reconciliation actions (Sync / Move to resolve / Convert to Manual / Delete / Skip Role) are applied from the current detected wall openings, so the UI refreshes against live host conditions before you continue editing.
- Update tries to move existing members in place first. If any move fails, SGT shows a warning prompt that lets you retry by deleting and recreating affected members using the same data.
Source:
src/Tools/Structural/SGT/Shell/Services/HostChangeReconciliationService.cs:398
Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.CommandsAndBulk.cs:440
Preview/Placed Alignment Notes
Recent parity fixes align preview and placement behavior for linked walls and opening framing:
Preview visuals (text/lineweights/preview styling) are normalized to a fixed visual scale (matching the “good HiDPI” look). Interaction hit-testing (snap thresholds, hit radii) remains DPI-scaled.
Section preview renders compound wall layers as labeled thickness bands, and strongly highlights the selected depth-plane layer.
3D preview renders compound wall layers as wireframe-like context geometry: very low wall fill opacity with selected-layer emphasis.
3D preview uses brighter crease outlines (cyan-gray wall edges, luminous steel edges) and a stronger 4-light rig so concavities stay readable in dark theme.
3D preview draws thin wireframe opening extents for all detected openings (subtle and non-distracting).
The default 3D floor plane is more transparent and rendered as transparent geometry so members below/within it remain visible.
3D click-to-inspect now resolves on mouse-up (click-only, not pan-drags), and navigation cancels if capture is lost or the window deactivates.
Opening extents in linked mode now map with frame-direction inversion detection so preview/placement use the same wall direction convention.
3D preview now uses the same depth-plane offset helper as placement.
Opening-edge trimming now applies gap-only cutbacks in both preview segmentation and final placement, removing oversized girt-to-jamb gaps; geometry-aware bisection gaps use calibrated profile transforms so cutbacks align with placed output for nested families.
Preview now uses calibrated orientation metadata to decide whether Y or Z justification controls flange/web offset, reducing jamb orientation/depth mismatch between preview and placed elements.
Preview profile transforms now run with the same operation order as placement (
rotationthenFlip Facingthen justification), improving jamb rotation/depth parity in linked-wall previews.Opening members now resolve orientation semantics in role-first order (role metadata first, then type fallback), improving left/right/head/sill consistency for shared types.
3D opening members now use the same role-based projection contract as 2D previews, so head/sill/jamb profile orientation stays consistent across preview modes.
Elevation, Section, and 3D now all use one shared semantics helper: profile transforms preserve analyzer-resolved
yTargetsFlangefor all roles, and depth/secondary projection follows that analyzer mapping consistently for every role.3D debug logging now includes projection mapping for left/right jamb, header, and sill previews to make WW/WS mismatch diagnosis faster.
Horizontal members (girts/headers/sills) now keep their canonical warmup sign rules, while jamb preview and girt-to-jamb gap ordering use the selected per-rotation vertical calibration data for the current canonical rotation.
Preview now corrects secondary-axis direction when transform and projection semantics differ, so WW/WS walls render girts/headers/sills with the same up/down facing as placed members.
Opening-role elevation/3D preview now applies this semantics mapping deterministically (no centroid-based correction pass), so 0/180 or Flip changes update orientation without side-translation artifacts from heuristic post-correction.
Dragging a bisected girt interior endpoint now keeps endpoint ownership on the dragged side (no opening-edge side remap), so opposite-end movement is avoided.
Dragging a bisected girt interior endpoint to the opposite edge of the same opening now auto-joins into a single continuous girt by marking that opening as bypassed.
Snapping a girt endpoint directly to an opening edge for that same opening clears the bypass marker so normal opening-edge segmentation behavior is restored.
Analyze now supports rotated linked walls with role-aware probing: horizontal members stay on canonical quarter-turn probes, while jamb probing applies azimuth compensation internally; resulting row defaults remain canonical quarter-turn values.
Linked opening T mapping now follows detected frame direction swap directly, without an extra mirrored-link parity branch, to prevent mirrored+rotated opening side inversion.
Analyze now also handles mirrored-link orientation gating in Step 2 by applying reflection-aware flange seating side rules, preventing mirrored runs from failing all girt types during orientation detection.
Square HSS families now run through symmetric orientation seating (all non-endcap section faces), preventing false orientation rejection during Analyze.
Rectangular HSS role mapping is now explicit and calibration-backed: deep/shallow face sets are captured during calibration, then horizontal roles seat deep faces to the exterior plane while jamb roles seat deep faces to opening-edge planes.
Step 2 now re-fetches square-HSS non-endcap faces inside each Y/Z probe pass (after justification regenerate), preventing stale-candidate reuse that can make all Y/Z pairs evaluate identically.
Angle girts now use short-leg/long-leg semantics during orientation analysis (short leg seats assigned elevation, long leg seats exterior plane), and Z-girt validation enforces exterior flange down / interior flange up ordering.
Analyze now uses explicit shape/role web seating mode resolution in Step 2: open-section horizontal members use edge-contact web seating, while HSS and jamb paths retain full face-coplanar seating. This restores girt orientation viability without loosening closed-section checks.
Step 2 now logs per-pair
[SGT.Orientation.YZ.PairProbe]diagnostics in Debug output, and face lookup deduplicates by face id before seating comparisons.Step 2 analyzer diagnostics now explicitly reject non-finite (
NaN/Infinity) Y/Z candidates and reportcandidates,finiteCandidates, andrejectedNonFinitecounts when no valid pair is found, improving fatal-step root-cause triage in logs.Opening-role Analyze gating now anchors Head/Sill/Jamb web seating planes to the same structural target origin as exterior seating, preventing layer-offset origin drift from causing false
OpeningOrientationAllFailedfatals.Analyze temp probes now surface Revit blocking failures as explicit type warnings/failures (instead of silent probe success), so problematic families/types are clearly identified in preflight outcomes.
Post-Analyze refresh now runs as a deterministic two-pass UI dispatch (
LoadedthenBackground) only after successful Analyze hydration; failed/canceled runs skip that extra refresh burst.
If preview still appears wrong after editing row settings, re-run Analyze to refresh wall/opening direction context before placing.
Source:
src/Tools/Structural/SGT/Features/Placement/Steps/PlanBuilder.Step2Analyze.cs:200
Source:src/Tools/Structural/SGT/Features/Preview/Models/PreviewScene3DBuilder.cs:24
Source:src/Tools/Structural/SGT/Features/Placement/Orchestrator.cs:296
Source:src/Tools/Structural/SGT/Features/Placement/Writers/DomainWriter.MemberPlacement.cs:398
Source:src/Tools/Structural/SGT/Domain/ValueObjects/OrientationResult.cs:17
Source:src/Tools/Structural/SGT/Features/WallAnalysis/SymbolCalibrationService.cs:446
Source:src/Tools/Structural/SGT/Features/WallAnalysis/FamilyCalibrationData.cs:68
Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:583
Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:885
Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:292
Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:309
Source:src/Tools/Structural/SGT/Features/Preview/OrientationSemanticsHelper.cs:36
Source:src/Tools/Structural/SGT/Features/Preview/OrientationSemanticsHelper.cs:101Source:src/Tools/Structural/SGT/Shell/UI/Rendering/PreviewRenderer.cs:2278Source:src/Tools/Structural/SGT/Shell/UI/Rendering/PreviewRenderer.cs:1354Source:src/Tools/Structural/SGT/Features/Preview/Models/PreviewScene3DBuilder.cs:73Source:src/Tools/Structural/SGT/Features/Preview/Models/PreviewScene3DBuilder.cs:99Source:src/Tools/Structural/SGT/Features/Preview/PreviewVisualTokens.cs:1Source:src/Tools/Structural/SGT/Features/Preview/Models/PreviewScene3DBuilder.cs:55Source:src/Tools/Structural/SGT/Features/Preview/Models/PreviewScene3DBuilder.cs:63Source:src/Tools/Structural/SGT/Shell/UI/Rendering/Preview3DRenderer.cs:66Source:src/Tools/Structural/SGT/Shell/UI/Rendering/Preview3DRenderer.cs:176Source:src/Tools/Structural/SGT/Shell/UI/Rendering/Preview3DRenderer.cs:208Source:src/Tools/Structural/SGT/Shell/UI/Behaviors/PreviewPresenterBehavior.Navigation3D.cs:177Source:src/Tools/Structural/SGT/Shell/Views/ShellWindow.xaml.cs:184Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.CoreAndEditing.cs:1520Source:src/Tools/Structural/SGT/Features/Preview/OrientationSemanticsHelper.cs:95Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.DomainIntegration.cs:561Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.DomainIntegration.cs:1021Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.DomainIntegration.cs:1861Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.CoreAndEditing.cs:1565Source:src/Tools/Structural/SGT/Features/Extents/SegmentResolutionService.cs:39Source:src/Tools/Structural/SGT/Features/Placement/Orchestrator.cs:155Source:src/Tools/Structural/SGT/Features/WallAnalysis/SymbolCalibrationService.cs:400Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:523Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:1035Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:1406Source:src/Tools/Structural/SGT/Features/WallAnalysis/FaceSelectors.cs:20Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:832Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:902Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:1369Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:1384Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:1426Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAdapter.cs:423Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:170Source:src/Tools/Structural/SGT/Features/Orientation/OrientationAnalyzer.cs:539Source:src/Tools/Structural/SGT/Features/Placement/Steps/PlanBuilder.Step2Analyze.csSource:src/Tools/Structural/SGT/Features/Placement/TempTransaction.cs:38Source:src/Tools/Structural/SGT/Features/WallAnalysis/SymbolCalibrationService.cs:243Source:src/Tools/Structural/SGT/Features/Placement/Steps/PlanBuilder.Step3Warm.cs:443Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.AnalysisAndHydration.cs:115Source:src/Tools/Structural/SGT/Shell/ViewModels/ShellWindowViewModel.AnalysisAndHydration.cs:226
Settings Explained
Offset
The offset controls how far from the wall's target layer the girts are placed:
- 0'-0" = Girt exterior flange is directly on the target layer face
- Positive values = Girts are offset outward from the wall
- Negative values = Girts are offset inward into the wall
Layer (Compound Walls)
For walls with multiple layers (e.g., concrete + insulation + finish), the Layer dropdown lets you choose which layer surface the girts align to:
- The tool defaults to the most-exterior structural layer
- Change this if you need girts on a different layer face
Rotation
Rotation controls how the girt cross-section is oriented:
- 0 = Default orientation (web vertical, flanges horizontal)
- 90 = Rotated 90 degrees
- 180 = Flipped from default
- 270 = Rotated 270 degrees (same as -90)
Most C-channels and I-beams use 0 or 180 rotation for horizontal girts.
Y-Justification
Controls lateral positioning of the member:
- Left = Member shifted toward wall start
- Center = Member centered on the placement line
- Right = Member shifted toward wall end
- Origin = Uses the family's origin point
Z-Justification
Controls vertical positioning of the member:
- Top = Top of member at the elevation
- Middle = Center of member at the elevation
- Bottom = Bottom of member at the elevation
- Origin = Uses the family's origin point
Flip Facing
Mirrors the member using Revit Facing flip semantics. Useful when the auto-detected orientation isn't what you need. Flip Facing is enabled only when the selected type supports Revit facing flips (detected during Analyze).
Tips and Tricks
Keyboard Shortcuts
- Tab - Grid: move to next cell. Preview: cycle overlapping handles near the cursor (Shift+Tab reverses); otherwise Tab behaves normally.
- Enter - Confirm an edit and move down
- Delete - Remove selected row
- Escape - Cancel current edit
Efficient Workflows
Start with defaults, then refine
- Let SGT auto-seed the girt rows first
- Then adjust individual rows as needed
Use the preview constantly
- Switch to 3D view to check member orientations
- Elevation view shows the overall layout quickly
Work from bottom to top
- Configure lower girts first
- They're less likely to change if you add/remove upper girts
Batch similar changes
- If multiple rows need the same girt type, change them together
- Multi-select rows in the grid when possible
Performance Tips
- For large walls with many openings, the analysis step may take a moment
- The progress overlay shows which step is running
- Don't close the window during analysis - let it complete
Troubleshooting
"No structural framing families found"
Cause: Your project doesn't have any structural framing families loaded.
Fix: Load at least one structural framing family (like C Shapes or W Shapes) before using SGT.
Girts not appearing at expected location
Possible causes:
- Wrong wall layer selected
- Offset value is pushing girts off the visible area
- Rotation/justification settings are incorrect
Fix:
- Check the Layer dropdown - make sure you've selected the correct layer
- Verify the Offset is 0'-0" or a small value
- Try switching to 3D preview to see where members actually are
Preview shows nothing
Possible causes:
- No girt rows configured
- All opening checkboxes are unchecked
- Analysis failed silently
Fix:
- Make sure at least one girt row exists with a valid type selected
- Check that at least one opening role (Header/Sill/Jamb) is enabled
- Close and reopen the tool to re-run analysis
"Place" button is disabled
Cause: There's nothing to place - either no girt rows or all rows have invalid settings.
Fix:
- Add at least one girt row
- Make sure each row has a girt type selected
- Ensure elevations are valid numbers
Girts placed but openings not framed
Cause: Opening checkboxes were unchecked, or openings weren't detected.
Fix:
- In Edit mode, check the Openings section
- Enable the checkboxes for Header, Sill, Left Jamb, Right Jamb as needed
- Click Update
Members have wrong orientation
Cause: Auto-detected rotation/justification doesn't match your intent.
Fix:
- Try toggling the "Flip" checkbox for that row
- Change the Rotation value (try 0, 90, 180, 270)
- Adjust Y-Just and Z-Just if the member position is off
Note (2026-02-07):
- Preview also applies WW/WS secondary-axis parity correction in Elevation, Section, and 3D when transform/projection semantics differ for horizontal roles.
- If one wall direction looks correct but an orthogonal wall direction looks inverted in preview, rebuild via
bash build.sh BuildAllto ensure current preview binaries are loaded.
Can't edit existing SGT system
Cause: You may have selected non-SGT members, or members from a different system.
Fix:
- Make sure you select a member that was placed by SGT
- If you have multiple SGT systems on different walls, select from the correct wall
FAQ
Q: Can I use SGT on any wall type?
A: SGT works best on foundation walls and linked architectural walls. It's designed for walls where you need horizontal girts at regular intervals.
Q: What structural framing families are supported?
A: Any standard structural framing family should work, including:
- C Shapes (channels)
- MC Shapes (misc channels)
- HSS (hollow structural sections)
- Angles (girts only)
Z-shapes and angles are supported for girts only (not for opening framing).
Q: Can I have different girt types at different elevations?
A: Yes! Each row is independent. You can use C10X15.3 at 0'-0", C8X11.5 at 5'-0", etc.
Q: What happens if I change the wall after placing girts?
A: The girts don't automatically update. You'll need to use Edit mode to adjust or remove and re-place.
Q: Can I place girts on only part of a wall?
A: Yes, use the Left Extent and Right Extent options to limit girts to a portion of the wall length.
Q: Do girts automatically avoid openings?
A: Yes. When you place girts, they automatically segment around openings with proper gaps.
Q: What's the minimum girt length?
A: Girts must be at least 6" (0.5 ft) long. Shorter segments are rejected.
Q: Can I use SGT on curved walls?
A: SGT is designed for straight walls. Curved walls are not currently supported.
Q: How do I delete all SGT members from a wall?
A:
- Select any SGT member from that wall
- Click "Edit SGT Wall"
- Click "Remove"
This deletes the entire girt system for that wall.
Q: Why are some rotation/justification options grayed out?
A: Some combinations don't produce valid placements (member would be off the wall or incorrectly oriented). SGT disables invalid options automatically.