Nucleoβ„’ XYZ+ Blade Generation System

Β© Camtek Software LLC

πŸ”§ Blade Edge Feature Recognition System

Technical Documentation for fxBladeEdgeFeatures.ovm

Version 2026Q1 | Last Updated: January 22, 2026 | SolidCut CAD 2025

1. System Overview

Purpose

The Blade Edge Feature Recognition System analyzes fixture blade geometry to identify and classify faces for gripper placement, plunger positioning, and other manufacturing operations. It uses a topology-based walk algorithm to traverse blade faces starting from the pocket floor.

Key Capabilities

Supported Blade Types

2. Architecture & Algorithm

Transform-First Approach

The system handles compound-angle blades using a transform-first methodology:

  1. Query Blade Geometry - Extract blade normal from largest planar faces
  2. Build Transform Matrix - Calculate rotation to align blade with Z-up orientation
  3. Transform Blade - Rotate blade so Z-axis points upward (simplified face detection)
  4. Detect Faces - Use topology walk on axis-aligned blade
  5. Store Results - Face IDs are valid in original coordinate system

Algorithm Flow

1
Find Pocket Floor - Identify lowest interior downward-facing face using Z-based detection
2
Detect Open Profile - Check if blade is open on left or right side (L-shaped vs U-channel)
3
Build Edge Map - Create edge-to-face adjacency mapping for topology traversal
4
Walk from Pocket Floor - Bi-directional walk exploring all adjacent faces
5
Classify & Select - Apply mode-specific filters to include/exclude faces
6
Store Results - Save selected face IDs to VDM for downstream processing

3. Detection Modes (14 Total)

Category: INSIDE (Pocket Area) - Modes 1-4

1. left-inside

Left pocket wall faces only. Walls that face left (NormX < -0.7) on the interior of the pocket.

2. right-inside

Right pocket wall faces only. Walls that face right (NormX > 0.7) on the interior of the pocket.

3. bottom-inside

Pocket floor faces only. Downward-facing faces (NormZ < -0.7) at the bottom of the pocket.

4. all-inside

All interior pocket surfaces - left walls, right walls, floor, and interior fillets/steps.

Category: OUTSIDE (Perimeter) - Modes 5-11

5. left-outside

Left exterior wall only. The outside face on the left edge of the blade.

6. right-outside

Right exterior wall only. The outside face on the right edge of the blade.

7. bottom-outside

Blade base (bottom) only. The upward-facing face at the base of the blade.

8. top-left

Top face on left arm only. The downward-facing top face on the left side.

9. top-right

Top face on right arm only. The downward-facing top face on the right side.

10. all-outside

All exterior surfaces including base, exterior walls, and top faces.

11. all-outside-except-base

Exterior walls and tops, but NOT the blade base. Useful for side-access operations.

Category: COMBINATION - Modes 12-14

12. all-no-topZFaces

Everything except top and thickness faces. Interior + exterior walls + base + floors.

⚠️ May miss some faces due to topology walk stopping at top-area fillets

13. all-everything

ALL faces including thickness faces. Complete blade surface selection.

14. all-everything-except-base

Everything EXCEPT upward-facing base faces. All walls, floors, fillets, tops.

4. Color Coding Reference

Color RGB Meaning
GREEN (0, 255, 0) Selected face - included in results
RED (255, 0, 0) Pocket floor (reference face) - always stays red for visual distinction
YELLOW (255, 255, 0) Top faces - reference, usually excluded
BLUE (0, 0, 255) Thickness faces - usually excluded
MAGENTA (255, 0, 255) Not selected for current mode
CYAN (0, 128, 255) Base faces - for all-everything mode
ORANGE (255, 128, 0) Wrong orientation - skipped
BROWN (128, 64, 0) Traversed but not selected

5. API & Parameters

Syntax

call fxBladeEdgeFeatures i_mode i_bladeBody w_radius w_interval w_clearance w_depthOffset $_zone

Parameters

Parameter Type Description
i_mode Integer Operation mode: i_EDGE_FEAT_GRIPPERS (1) or i_EDGE_FEAT_PLUNGERS (2)
i_bladeBody Integer Body number of the blade to analyze
w_radius Float Tool radius for gripper/plunger placement
w_interval Float Spacing interval between placements
w_clearance Float Clearance distance from blade edge
w_depthOffset Float Depth offset for tool positioning
$_zone String Zone selector (see modes above)

Return Value

Results are stored in VDM set i_VDM_BLADE_EDGE_FACES containing selected face IDs.

6. JSON Schema for Zone Configuration

Zone configuration is used for per-blade customization. For full JSON API documentation including blade creation parameters, see πŸ“‹ JSON Schema Configuration.

πŸ“‹ Schema Reference: See JSON Schema Reference β†’ Zone Configuration for the complete schema definition including zone modes, tool types, and parameter options.

7. Mode Flag Reference

Internal flags control face selection behavior for each mode:

Mode wantLeft wantRight wantBottom wantLeftOut wantRightOut wantBottomOut includeTop includeOut
left-insideβœ“
right-insideβœ“
bottom-insideβœ“
all-insideβœ“βœ“βœ“
left-outsideβœ“βœ“
right-outsideβœ“βœ“
bottom-outsideβœ“βœ“
all-outsideβœ“βœ“βœ“βœ“βœ“
all-outside-except-baseβœ“βœ“βœ“βœ“
all-no-topZFacesβœ“βœ“βœ“βœ“βœ“βœ“βœ“
all-everythingβœ“βœ“βœ“βœ“βœ“βœ“βœ“βœ“
all-everything-except-baseβœ“βœ“βœ“βœ“βœ“βœ“βœ“

8. Topology Walk Algorithm

Priority-Based Face Selection

When walking from one face to the next, the algorithm uses priority selection:

  1. Priority 1: Matching Wall - Face with NormX matching walk direction
  2. Priority 2: Fillet/Arc - Face with entity class 4002 (cylindrical)
  3. Priority 3: Any Unvisited - Any adjacent face not yet visited

Walk Termination Conditions

Face Classification Logic

'*** Face Classification by Normal Direction
if abs( w_faceNormX ) > 0.7 then
   '*** Wall face (left or right facing)
   if w_faceNormX < -0.7 then
      '*** Left-facing wall
   else
      '*** Right-facing wall
   end if
else if w_faceNormZ < -0.7 then
   '*** Downward-facing = Floor or Top surface
   if w_faceZ < w_midZ then
      '*** Interior floor
   else
      '*** Top face
   end if
else if w_faceNormZ > 0.7 then
   '*** Upward-facing = Base face
else if abs( w_faceNormY ) > 0.7 then
   '*** Thickness face (front/back of blade)
end if

9. Troubleshooting & Known Limitations

⚠️ all-no-topZFaces May Miss Some Exterior Faces

Due to the topology walk algorithm, when i_includeTop=FALSE, the walk stops at top-area fillets. Faces geometrically "beyond" those fillets may not be reached. This is expected behavior based on the blade's specific topology.

Workaround: Use all-everything-except-base instead, which includes top faces and thus can traverse to all areas.

Open Profile Detection

L-shaped blades (open on one side) are automatically detected. The walk starts only from the side that has an interior wall.

Common Issues

Issue Possible Cause Solution
No faces selected Blade not properly oriented Check blade normal calculation
Missing interior walls Pocket floor not detected Verify blade has interior pocket geometry
Wrong faces selected Incorrect mode specified Review mode flag settings
Walk stops early Thickness face encountered Expected behavior - check blade geometry

10. Testing Procedures

Test Macro

call fxTestBladeEdgeModes i_bladeBody

Runs all 14 modes sequentially with visual verification pauses.

Verification Checklist

Test Blade Geometry

Use a U-channel blade with compound angle for comprehensive testing. Key faces to verify:

11. Clamp Apparatus Edge Features (Side Plates & Bend-Tab T-Plates)

Purpose

Two new edge feature types for mounting clamping devices to blade faces. These provide downward clamping force to hold parts during cutting. Both types use the face detection modes above to determine placement surfaces.

Feature Type Registry

Type IDNameConstantDescription
7Side Plate (Gusset)i_EDGE_FEAT_SIDE_PLATEClip-together flat pieces with triangular gusset braces
8Bend-Tab T-Platei_EDGE_FEAT_BEND_TABSingle-piece bent clamp shelf, self-locking, 3-bend design

11.1 Variant A: Side Plate with Gusset (Clip-Together)

Multiple flat laser-cut pieces that slot together and bolt to the blade face. Triangular gusset braces provide structural rigidity. Best for heavy clamping loads, thick materials, and permanent fixtures.

  • 3-5 parts per station (plate + gussets + fasteners)
  • Any material thickness
  • What you model IS the DXF — no unfold calculation needed
  • Each piece independently replaceable

2019 Prototype β€” Side Plate Clamp Stations (SolidCut CAD)

2019 Side plate clamp prototype - top-down isometric view showing blade with gusset clamp stations
Top-down isometric: Blade with side plate clamp stations at both ends. Triangular gusset braces, flat shelves with bolt holes, vertical through-slots in blade walls.
2019 Side plate clamp prototype - front isometric view showing 4 clamp stations along blade
Front isometric: Four clamp stations along front face plus end gussets. Shelves mount flush to blade inside walls. Note compound S-curve profile transitions between heights.

Historical Context (2019 Development)

These screenshots from the original 2019 SolidCut development show the side plate concept with triangular gusset braces already modeled as 3D solid geometry. Key observations from this prototype:

  • Gusset braces are triangular plates slotted into the blade wall — self-locating via tab-and-slot
  • Flat shelves extend outward from the blade face with multiple bolt-hole patterns
  • Clamp stations placed at varying heights along the blade profile
  • End stations use larger gussets for additional rigidity at blade terminations
  • Compound blade profile (S-curve transitions) demonstrates real-world fixture geometry
  • Vertical through-slots in blade walls accept gusset tabs — cut during blade fabrication

This 2019 work forms the basis for Variant A in the current system. The new automation will generate these assemblies programmatically from face detection results, rather than manual placement.

11.2 Variant B: Bend-Tab T-Plate (3-Bend Self-Locking Clamp)

Key Innovation

A single flat laser-cut blank (double-T shape) that bends at three scored lines and enters the blade twice — through a top mortise and back through a lower ratchet slot — creating a self-locking clip secured with a pin.

Concept Drawing (Rev G)

Bend-Tab T-Plate Rev G - 3 Views: Assembled ZX profile, bent '7' profile, and flat blank

Assembled ZX Profile (the “7” Shape) — ASCII Reference

      BACK            β”‚BLADEβ”‚         FRONT
                      β”‚     β”‚
 stop ════════════════β•ͺ═════β•ͺ═╗
 (wide)               β”‚ mor β”‚ β•‘ BEND 1 (+10Β° shown, could be -10Β°)
                      β”‚ tiseβ”‚  β•²
                      β”‚     β”‚   ╲═══════════╗ ← shelf (~15mm span)
                      β”‚     β”‚               β•‘   clamp on top
                      β”‚     β”‚               β•‘
                      β”‚     β”‚               β•‘ BEND 2 (βˆ’135Β°)
                      β”‚     β”‚              β•±
                      β”‚     β”‚            β•±
                      β”‚     β”‚          β•±   leg
                      β”‚     β”‚        β•±
                      β”‚     β”‚      β•±
                      β”‚     β”‚    β•±
          pin ○───────β•ͺ─■■■─β•ͺ══╝ BEND 3 β†’ tab thru this slot
                      │─────│
                      │─────│  ← more ratchet slots
                      │─────│    (pick higher = shelf higher)
                      │─────│    (pick lower = shelf lower)
                      β”‚     β”‚

Material Path Through Blade

  1. Back stop sits against back face (wider than mortise, prevents pull-through)
  2. Through top mortise — passes through blade
  3. Exits front face — BEND 1 tilts shelf up or down (±10-15°)
  4. Shelf extends ~15mm out from front face — clamp mounts here
  5. BEND 2 at shelf tip — the big −135° kick, leg angles back toward blade
  6. Leg runs back toward blade at ~45° from vertical
  7. BEND 3 at leg bottom — tab goes horizontal, through chosen ratchet slot
  8. Tab exits back side — secured with pin through hole in tab

Three Bends

BendLocationAnglePurpose
1Just past front blade face±10-15°Shelf tilt (up or down)
2Shelf tip (end of ~15mm span)−135°Leg kick-back toward blade
3Bottom of leg (near blade face)CalculatedTab horizontal through ratchet slot

Four Degrees of Adjustability

ControlHowRange
Shelf tiltBend 1 angle±10-15° from horizontal
Shelf spanFixed by blank geometryDesigned per application
Leg angleBend 2 (always ~−135°)Fixed by score line position
Height on bladeWhich ratchet slot tab entersDiscrete steps (e.g. 5mm)

Blade Modifications Required

  1. Top mortise slot — horizontal through-slot for shelf to pass through
  2. Ratchet slot column — multiple through-slots below mortise for height adjustment
  3. Pin hole — for locking tab on back side

Bend-Tab Clamp — CAD Model

Bend-tab clamp isometric view showing shelf angled upward at approximately 45 degrees from blade surface
Isometric View: Bend-tab clamp inserted through blade. The shelf portion (white) angles upward at ~45° from the blade face to create the clamping surface. Pin hole visible at top for securing. Pink back stop plate sits behind blade, wider than the through-slot to prevent pull-through. The small radii at the blade intersection mark the bend line position.
Bend-tab clamp front elevation showing clamp passing through blade with retaining wings and corner reliefs
Front Elevation: Clamp passes through blade (grey). The inner slot and small corner radii at the blade face are where the bend occurs — material folds upward here to form the angled shelf. Pin hole at top center. Corner reliefs (semicircular cutouts) at the slot/blade intersections prevent stress concentration. Back stop plate visible below blade.

Note: The isometric view does not clearly show the bend angle — the shelf nominally angles upward at ~45° (or as specified by bendAngle1_tilt) to provide a horizontal or near-horizontal clamping surface for the workpiece. The bend occurs at the small radii / inner slot visible in the front elevation where the clamp exits the blade face.

Bend-Tab Clamp — CAD Model

Bend-tab clamp isometric view showing shelf angled upward at approximately 45 degrees from blade surface
Isometric View: Bend-tab clamp inserted through blade. The shelf portion (white) angles upward at ~45° from the blade face to create the clamping surface. Pin hole visible at top for securing. Pink back stop plate sits behind blade, wider than the through-slot to prevent pull-through. The small radii at the blade intersection mark the bend line position.
Bend-tab clamp front elevation showing clamp passing through blade with retaining wings and corner reliefs
Front Elevation: Clamp passes through blade (grey). The inner slot and small corner radii at the blade face are where the bend occurs — material folds upward here to form the angled shelf. Pin hole at top center. Corner reliefs (semicircular cutouts) at the slot/blade intersections prevent stress concentration. Back stop plate visible below blade.

Note: The isometric view does not clearly show the bend angle — the shelf nominally angles upward at ~45° (or as specified by bendAngle1_tilt) to provide a horizontal or near-horizontal clamping surface for the workpiece. The bend occurs at the small radii / inner slot visible in the front elevation where the clamp exits the blade face.

Material Gauge Limits

16ga (1.5mm) to 12ga (2.5mm) only. Must be hand-bendable. For thicker material, use Variant A (clip-together gusset).

Sweet spot: 14ga (2.0mm) — good balance of strength and bendability.

Bend Allowance (Shared with Zigzag Blades)

BA = Ο€ Γ— (R + K Γ— T) Γ— (ΞΈ / 180)

Where:
  R = inside bend radius (mm)
  K = K-factor (0.33 air bend, 0.50 bottoming)
  T = material thickness (mm)
  ΞΈ = bend angle (degrees)

Example: 14ga steel (2mm), R=1.5mm, K=0.4
  Bend 1 (10Β°):  BA = Ο€ Γ— 2.1 Γ— 0.056 = 0.37mm
  Bend 2 (135Β°): BA = Ο€ Γ— 2.1 Γ— 0.750 = 4.95mm
  Bend 3 (~45Β°): BA = Ο€ Γ— 2.1 Γ— 0.250 = 1.65mm

Ratchet Slot Reachability

Not every ratchet slot is reachable at every tilt angle. The combination of bend 1 angle, shelf span, leg length, and bend 2 angle determines which slot the tab can reach. The system must validate reachability and warn if the chosen slot is unreachable.

Z_tab = Z_mortise - shelfSpan Γ— sin(tilt) - legLength Γ— cos(kick_effective)
Valid slot = closest ratchet slot to Z_tab within Β± (spacing / 2)

11.3 Comparison Table

AspectVariant A (Gusset/Clip)Variant B (Bend-Tab)
Parts count3-5 per station1 (single blank)
Blade modificationsMultiple slots + additions1 mortise + ratchet slots
Tilt adjustmentFixed at fabricationBend 1 angle (±10-15°)
Height adjustmentNoneRatchet slot selection
RemovalDifficult (bolted)Pull pin, slide out
StrengthHigher (triangulated)Lower (bent sheet)
CostHigherMuch lower
Gauge rangeAny thickness16-12ga only
Software complexityLow (flat = DXF)Moderate (shared parallel-bend engine)

11.4 JSON Configuration

πŸ“‹ Schema Reference: See JSON Schema Reference β†’ Clamp Shelf Library for the complete Bend-Tab T-Plate schema including defaults, placements, and parameter overrides.

11.5 Macro Architecture

Shared Parallel-Bend Engine

Both Variant B (bend-tab clamps) and zigzag blades use the same fxParallelBend engine. The geometry is always N rectangular segments joined at N-1 parallel bend lines, all perpendicular to the base. The 3D solid is built by extruding each rectangle (SLD BLO), rotating to the bend angle, and unioning all pieces. The flat pattern is the same rectangles laid inline with BA deductions at each joint, stored as a named figure/kurve associated with the solid body.

fxParallelBend.ovm               ← SHARED ENGINE (clamps + zigzag blades)
  β”œβ”€β”€ fxPB_Build3D                 N segments β†’ BLO + rotate + UNI β†’ solid
  β”œβ”€β”€ fxPB_BuildFlat               BA-deducted flat pattern β†’ figure/kurve
  └── fxPB_ExportDXF               Layers: outline, scores, holes

fxEdgeFeat_Dispatch              ← Main edge feature dispatcher
  β”œβ”€β”€ type 1-6                   ← Existing features (grippers, plungers, etc.)
  β”œβ”€β”€ type 7 β†’ fxSidePlate       ← Variant A (clip-together gusset)
  β”‚   β”œβ”€β”€ fxSP_BuildLocalCS
  β”‚   β”œβ”€β”€ fxSP_PlateProfile
  β”‚   β”œβ”€β”€ fxSP_GussetProfile
  β”‚   β”œβ”€β”€ fxSP_Slots + Fasteners
  β”‚   └── fxSP_Transform + Boolean
  └── type 8 β†’ fxBendTab         ← Variant B (3-bend T-plate)
      β”œβ”€β”€ fxBT_PrepSegments        4 segments, 3 angles β†’ arrays
      β”œβ”€β”€ call fxPB_Build3D        β†’ i_clampBody (3D solid)
      β”œβ”€β”€ call fxPB_BuildFlat      β†’ k(n) flat pattern figure
      β”œβ”€β”€ fxBT_AddShelfHoles       Drill into 3D + mark on flat
      β”œβ”€β”€ fxBT_BuildMortiseSlot    (subtract from blade)
      β”œβ”€β”€ fxBT_BuildRatchetSlots   (column of height-adjust slots)
      └── fxBT_TransformToWorld

fxZigzagBlade.ovm (future)       ← Same shared engine, different inputs
  β”œβ”€β”€ fxZZ_PrepSegments            N segments, N-1 angles β†’ arrays
  β”œβ”€β”€ call fxPB_Build3D            β†’ i_zigzagBody (3D solid)
  └── call fxPB_BuildFlat          β†’ k(n) flat pattern figure