# Splice CAD > Splice CAD is a browser-based cable harness design tool for electrical engineers. ## What is Splice CAD? Splice CAD is a web application that allows engineers to design cable assemblies and wire harnesses visually. It provides an interactive SVG-based canvas for placing connectors, routing wires, and generating manufacturing documentation. ## Key Features - Visual drag-and-drop harness design on an SVG canvas - Real-time wire bundling and automatic routing - Automatic Bill of Materials (BOM) generation with part numbers - Export to multiple formats: PDF, PNG, SVG, WireViz YAML, CSV - Searchable database of real connectors and wires from manufacturers - Version control and revision history for designs - Team collaboration with real-time editing - Custom connector creator for non-standard parts - Signal naming and wire labeling - Design notes and annotations ## Two Workflows: Project Mode and Assembly Mode Splice supports two complementary workflows: **Project Mode (top-down)** — Design the electrical system at the architecture level first. Place components (devices, connectors, terminal blocks) and draw bundles between them on a canvas. Assign signals, nets, and parts progressively. Break large systems across pages. Then generate individual assembly schematics from the project. **Assembly Mode (bottom-up)** — Draw a single cable assembly or harness directly. Place connectors, route wires and cables, and produce manufacturing documentation. Best for standalone harnesses with known parts. Key Project Mode concepts: - **Components** — Devices, connectors, or terminal blocks with pins/positions - **Bundles** — Connections between components (become physical cable runs) - **Branch Points** — Junctions where bundles split or merge (model splices, fan-outs, bus topologies) - **Device Groups** — Multi-connector devices (PCBs, DIN rail assemblies) - **Signals and Nets** — Logical grouping of conductors by function (power, ground, CAN, etc.) - **Mates** — Physical connector pairings between components - **Subassemblies** — Reusable plan fragments (save and insert across projects) - **Pigtail Leads** — Flying leads pre-attached to connectors - **Jumper Bars** — Bus-bar jumpers that bridge multiple pins ## Target Users - Electrical engineers designing cable assemblies - Manufacturing teams creating wire harnesses - Automotive engineers (vehicle wiring) - Aerospace engineers (avionics harnesses) - Industrial automation engineers - Robotics engineers - Audio/video system integrators - Hobbyists and makers building custom cables ## Use Cases - Automotive wire harness design - Aerospace and avionics cable assemblies - Industrial control panel wiring - CNC machine cable harnesses - Power distribution systems - Audio/video cable assemblies - Prototype and small-batch cable production - Manufacturing documentation generation ## Technology - Browser-based (no installation required) - Works on modern desktop browsers (Chrome, Firefox, Safari, Edge) - Cloud-based storage with automatic saving - Real-time collaboration support - REST API available ## Export Formats - PDF: Manufacturing-ready documentation with BOM - PNG/SVG: High-resolution images for documentation - WireViz YAML: Compatible with open-source WireViz tool - CSV: Bill of Materials for ERP/inventory systems ## Comparison to Alternatives Splice CAD is a modern, accessible alternative to traditional wire-harness CAD tools such as Zuken E3.series, EPLAN Harness proD, Siemens Capital Harness, Mentor VeSys, and Autodesk AutoCAD Electrical, as well as open-source tools like WireViz. Splice CAD differentiates by being: - Browser-based with no installation required - Affordable for individuals and small teams - Easy to learn without CAD experience - Focused on simplicity and fast workflows - Collaborative with real-time team features - Interoperable with WireViz YAML for open-source workflows ## Links - Website: https://splice-cad.com - Application: https://splice-cad.com/app/#/harness - Documentation: https://splice-cad.com/docs - Tutorial: https://splice-cad.com/tutorial - Blog: https://splice-cad.com/blog - Pricing: https://splice-cad.com/pricing - Contact: info@splice-cad.com ## Documentation Index Full concatenated docs are available at https://splice-cad.com/llms-full.txt ### Project Mode docs (/docs/plan/*) - https://splice-cad.com/docs/plan/overview — Overview of Project Mode - https://splice-cad.com/docs/plan/terminology — Terminology reference - https://splice-cad.com/docs/plan/canvas-and-navigation — Canvas and navigation - https://splice-cad.com/docs/plan/components-and-pins — Components and pins - https://splice-cad.com/docs/plan/connections-and-conductors — Connections and conductors - https://splice-cad.com/docs/plan/bundle-operations — Bundle operations (redirect, join, merge, delete) - https://splice-cad.com/docs/plan/context-menu — Right-click context menu reference - https://splice-cad.com/docs/plan/signals-nets-and-bom — Signals, nets, and BOM - https://splice-cad.com/docs/plan/wire-groups-and-cables — Wire groups and cables - https://splice-cad.com/docs/plan/parts-and-bom — Parts and BOM - https://splice-cad.com/docs/plan/assembly-generation — Generating assemblies from a project - https://splice-cad.com/docs/plan/convert-assembly-to-project — Converting an assembly to a project - https://splice-cad.com/docs/plan/export-and-import — Export and import (PDF, XLSX, JSON) - https://splice-cad.com/docs/plan/simple-cable — Example: simple cable - https://splice-cad.com/docs/plan/bus-topology — Example: bus topology - https://splice-cad.com/docs/plan/power-distribution — Example: power distribution - https://splice-cad.com/docs/plan/multi-endpoint-harness — Example: multi-endpoint harness ### Assembly Mode docs (/docs/harness/*) - https://splice-cad.com/docs/harness/overview — Overview of Assembly Mode (Harness Builder) - https://splice-cad.com/docs/harness/workflow-comparison — Project vs Assembly workflow comparison - https://splice-cad.com/docs/harness/zoom-and-pan — Zoom and pan navigation - https://splice-cad.com/docs/harness/box-select — Box select - https://splice-cad.com/docs/harness/bulk-connect — Bulk connect - https://splice-cad.com/docs/harness/bulk-edit — Bulk edit - https://splice-cad.com/docs/harness/making-and-modifying-connections — Making and modifying connections - https://splice-cad.com/docs/harness/bundle-labels — Bundle labels - https://splice-cad.com/docs/harness/wire-anchors — Wire anchors - https://splice-cad.com/docs/harness/pin-designation — Pin designation - https://splice-cad.com/docs/harness/male-female-connectors — Male/female connectors - https://splice-cad.com/docs/harness/generic-components — Generic components - https://splice-cad.com/docs/harness/generic-cables — Generic cables - https://splice-cad.com/docs/harness/custom-graphics — Custom graphics - https://splice-cad.com/docs/harness/convenience-functions — Convenience functions - https://splice-cad.com/docs/harness/pdf-export — PDF export - https://splice-cad.com/docs/harness/json-schema — JSON schema reference - https://splice-cad.com/docs/harness/typescript-interfaces — TypeScript interfaces - https://splice-cad.com/docs/harness/python-api — Python API - https://splice-cad.com/docs/harness/embed-library — Embed library - https://splice-cad.com/docs/harness/key-generation — Key generation ## Getting Started 1. Visit https://splice-cad.com 2. Sign up with Google OAuth (free account) 3. Create a new harness project 4. Add connectors from the parts library 5. Draw connections between pins 6. Export your design to PDF or other formats ## API Access Users can access the Splice CAD API to: - Programmatically create and modify harnesses - Generate BOMs and exports automatically - Integrate with existing PLM/ERP systems - Embed harness viewer in other applications ## Harness JSON Schema AI assistants can help users generate harness data in JSON format that can be imported into Splice CAD. Below is the schema specification. ### Top-Level Structure ```json { "bom": { "": , ... }, "data": { "mapping": { "": , ... }, "connector_positions": { "": { "x": number, "y": number }, ... }, "cable_positions": { "": { "x": number, "y": number }, ... }, "wire_anchors": { "": { "x": number, "y": number }, ... }, "design_notes": [ , ... ], "name": "string or null", "description": "string or null" } } ``` ### BOM Item (ExpandedBomItem) Each part in the harness has an instance ID (e.g., "J1", "J2", "W1", "CBL1"): ```json { "instance_id": "J1", "unit": "pcs", "part": { "id": "uuid-string", "kind": "connector", "mpn": "DT04-4P", "manufacturer": "Deutsch", "description": "4-position receptacle", "spec": { "connector": { "positions": 4, "shape": "circular", "contact_gender": "female", "series": "DT" } } } } ``` **Part kinds:** `connector`, `wire`, `cable`, `terminal`, `assembly` **Connector shapes:** `circular`, `rectangular`, `dsub`, `terminal_block`, `ferrule`, `quickdisconnect`, `ring`, `button`, `other` **Connector categories:** `circuit_breaker`, `fuse`, `fan`, `push_button`, `switch`, `relay`, `contactor`, `timer`, `pcb`, `power_supply`, `motor`, `inductor`, `resistor`, `capacitor`, `battery`, `solar_cell`, `transformer`, `inverter`, `other` ### Connection Connections define wires between endpoints. The wire_key format is typically `:`: ```json { "end1": { "type": "connector_pin", "connector_instance": "J1", "pin": 1, "side": "right" }, "end2": { "type": "connector_pin", "connector_instance": "J2", "pin": 1, "side": "left" }, "label_end1": "POWER", "label_end2": "VCC", "length_mm": 500 } ``` **Termination types:** 1. **connector_pin** - Wire terminates at a connector pin ```json { "type": "connector_pin", "connector_instance": "J1", "pin": 1, "side": "left" | "right" } ``` 2. **cable_core** - Wire is part of a multi-conductor cable ```json { "type": "cable_core", "cable_instance": "CBL1", "core_no": 1, "side": "left" | "right" } ``` 3. **flying_lead** - Unterminated wire end ```json { "type": "flying_lead", "termination_type": "tinned" | "bare" | "heat_shrink", "strip_length_mm": 5 } ``` ### Wire Part Spec ```json { "kind": "wire", "mpn": "22AWG-RED", "manufacturer": "Generic", "spec": { "wire": { "awg": 22, "color": "red", "stripe": null, "conductor_type": "stranded" } } } ``` ### Cable Part Spec ```json { "kind": "cable", "mpn": "4C-22AWG-SH", "manufacturer": "Generic", "spec": { "cable": { "core_count": 4, "shielded": true, "outer_diameter_mm": 6.5 } } } ``` ### Design Note ```json { "id": "uuid-string", "x": 100, "y": 200, "title": "Note Title", "content": ["Line 1", "Line 2"], "width": 200 } ``` ### Complete Example Here's a minimal harness with two 4-pin connectors connected by 4 wires: ```json { "bom": { "J1": { "instance_id": "J1", "unit": "pcs", "part": { "id": "11111111-1111-1111-1111-111111111111", "kind": "connector", "mpn": "DT04-4P", "manufacturer": "Deutsch", "description": "4-pin connector", "spec": { "connector": { "positions": 4, "shape": "circular", "contact_gender": "female" } } } }, "J2": { "instance_id": "J2", "unit": "pcs", "part": { "id": "22222222-2222-2222-2222-222222222222", "kind": "connector", "mpn": "DT06-4S", "manufacturer": "Deutsch", "description": "4-pin plug", "spec": { "connector": { "positions": 4, "shape": "circular", "contact_gender": "male" } } } }, "W1": { "instance_id": "W1", "unit": "m", "part": { "id": "33333333-3333-3333-3333-333333333333", "kind": "wire", "mpn": "22AWG-RED", "manufacturer": "Generic", "description": "22 AWG Red Wire", "spec": { "wire": { "awg": 22, "color": "red", "conductor_type": "stranded" } } } } }, "data": { "name": "Simple Harness", "description": "Two connectors with 4 wires", "mapping": { "22AWG-RED:wire-1": { "end1": { "type": "connector_pin", "connector_instance": "J1", "pin": 1, "side": "right" }, "end2": { "type": "connector_pin", "connector_instance": "J2", "pin": 1, "side": "left" }, "label_end1": "PWR+", "label_end2": "PWR+", "length_mm": 300 }, "22AWG-BLK:wire-2": { "end1": { "type": "connector_pin", "connector_instance": "J1", "pin": 2, "side": "right" }, "end2": { "type": "connector_pin", "connector_instance": "J2", "pin": 2, "side": "left" }, "label_end1": "GND", "label_end2": "GND", "length_mm": 300 } }, "connector_positions": { "J1": { "x": 100, "y": 200 }, "J2": { "x": 600, "y": 200 } }, "cable_positions": {}, "wire_anchors": {}, "design_notes": [] } } ``` ### Validation Rules 1. All `connector_instance` and `cable_instance` references must exist in `bom` 2. Pin numbers must be >= 1 and <= connector's `positions` count 3. Core numbers must be >= 1 and <= cable's `core_count` 4. Positions (x, y) must be finite numbers 5. Each BOM item needs `instance_id`, `part.kind`, `part.mpn` 6. Wire keys should be unique (format: `:`) ### Import Instructions 1. Generate JSON following this schema 2. In Splice CAD, go to File > Import > JSON 3. Paste or upload the JSON file 4. The harness will be validated and loaded AI assistants should generate valid UUIDs for `id` fields and ensure all references are consistent. --- # Full Documentation ## Project Mode (/docs/plan/*) # Project Mode Source: https://splice-cad.com/docs/plan/overview Learn Project Mode in Splice — design electrical systems at the architecture level, then generate assembly schematics. > **Not sure which workflow to use?** See the [Project vs Assembly Workflow comparison](/docs/harness/workflow-comparison). ## Why Project Mode? **Design top-down.** Start with the big picture -- devices, connections, signal flow. Generate assembly schematics when your design is ready. **Stay generic until you're ready.** Add components without parts. Assign them later when the design stabilizes. **Model devices.** Device Groups represent multi-connector devices (PCBs, DIN rail assemblies). Mates document physical connector pairings. Signals classify conductor function. **Handle complex routing.** Branch Points model junctions and bus topologies. Distinguish pass-through conductors from physical splices. Build power buses, fan-outs, and tree topologies. **Multi-page organization.** Break large systems across pages while keeping a single connected plan. Organize by subsystem -- power, comms, sensors. --- ## Core Concepts | Concept | Description | |---------|-------------| | **Project** | Top-level container holding one Plan and its Assemblies | | **Plan** | System architecture canvas with Layout and Schematic views | | **Assembly** | Harness schematic generated from a selection of plan elements | | **Component** | A node representing a connector, device, or termination point | | **Bundle** | A connection between two nodes carrying conductors | | **Conductor** | A single electrical path with net name, signal, and wire properties | | **Branch Point** | A junction for splitting, merging, and splicing conductors | | **Splice** | A physical electrical join at a branch point | | **Device Group** | Multiple components grouped as a single multi-connector device | | **Mate** | Physical pairing between two components | | **Signal** | Classification (e.g., "VDC", "GND") assigned to a net with color coding | | **Net** | A group of conductors sharing electrical connectivity | | **Pages** | Multi-page organization for large plans | See [Terminology](/docs/plan/terminology) for detailed definitions. --- ## Workflow 1. **Create a Project** — Open the projects panel and create a new project. 2. **Add Components** — Place components for each connector, device, or termination point. Set pin counts and categories. 3. **Draw Bundles** — Connect components and branch points with bundles. 4. **Add Conductors** — Use **Bulk Connect** for batch pin mapping, or click pins in Schematic view. 5. **Define Signals** — Create signals (VDC, GND, CAN_H, etc.) and assign them to nets for color coding and classification. 6. **Assign Parts** — Assign parts from the library to components. Parts can be assigned at any point. 7. **Organize with Pages** — Create pages to separate subsystems (power, comms, sensors). 8. **Generate Assemblies** — Select components, bundles, and branch points, then generate an assembly. It opens in Harness Builder as a full schematic. 9. **Sync Changes** — Sync assemblies to push plan changes without regenerating. --- ## Saving & Reverting Your work is **auto-saved as a draft**. Close the browser or switch devices -- your changes are waiting when you reopen. - **Save** (toolbar icon or Ctrl+S) — commits changes and clears the draft. - **Unsaved indicator** — a red dot on the project badge and a pulsing save button indicate uncommitted changes. The tab title shows a **●** prefix. - **View unsaved changes** — click the red dot to open a popover listing every change since your last save, grouped by type (components, conductors, links, pages, BOM, etc.). Additions and removals show their key attributes; modified entities show field-level **before → after** values. Layout moves/resizes/reroutes are collapsed into an expandable section. - **Revert** — inside the unsaved-changes popover, click **Revert to saved** to discard your draft and reload the last saved version. - **Undo revert** — after reverting, the dot turns blue; click it to restore changes. Any new edit clears the undo option. # Terminology Source: https://splice-cad.com/docs/plan/terminology Glossary of Project Mode concepts — projects, plans, assemblies, components, bundles, conductors, signals, nets, mates, and more. ## Project A **Project** is the top-level container holding one Plan and any number of Assemblies. Projects appear in the open panel as expandable groups with nested assemblies. ## Plan The **Plan** defines your system's electrical architecture. Each project has one plan with two views -- **Layout** (topology) and **Schematic** (expanded pins and positions with conductor paths). See [Canvas & Navigation](/docs/plan/canvas-and-navigation).
Layout view — components connected by bundles with conductor lines overlaid.
Schematic view — expanded pin tables with individual conductor paths.
## Assembly An **Assembly** is a harness schematic -- the same artifact you would build directly in Harness Builder (legacy mode), but generated from a plan selection. Includes connectors, wires, splices, BOM, and export, all connected back to the plan. **Sync** pushes plan updates without regenerating. See [Assembly Generation & Sync](/docs/plan/assembly-generation). > **Note:** Assemblies are completely optional. You can use Plan Mode without ever generating an assembly. Assemblies add interoperability with the legacy Harness Builder workflow. --- ## Component A **Component** is a plan node representing a connector, device, or termination point -- with a designator, category, pins/positions, optional part, and shape. See [Components, Pins & Positions](/docs/plan/components-and-pins). ## Branch Point A **Branch Point** is a junction where bundles meet, routing conductors without pins. Conductors either **pass through** (continuing without a join) or are **spliced** (physically joined). Use branch points wherever a harness path splits or merges -- power distribution, fan-outs, breakouts. ### Splice A **Splice** is a physical electrical connection between conductors at a branch point. Each splice gets an automatic designator (e.g., `SP1`), a configurable type (butt, Y, etc.), and an optional part for BOM tracking. Other conductors can connect to the splice from any bundle at that branch point. ![BP1 selected showing SP1 and SP2 splices with conductor routing details in the Properties panel.](/plan/bus-topology/bus-topology-add-splice.png) See [Connections, Conductors & Mates: Splices](/docs/plan/connections-and-conductors#splices) for splice types, conversion, and routing configuration. ## Flying Lead A **Flying Lead** is a conductor endpoint without a mating connector -- the wire end itself is the endpoint. Represented as lightweight `FL`-prefixed nodes. Use for field-terminated wires, test points, or spare conductors. ## Pigtail Lead A **Pigtail Lead** is a pre-attached wire on a connector pin or terminal point position -- part of the component, not the harness. Common on connectors with factory-terminated wire tails. Each lead has gauge, color, stripe, length, and wire MPN. Enable from the **Leads** tab in the Properties panel. Leads appear in the BOM, cut list, and exports. ## Jumper A **Jumper** is an external accessory that electrically bridges 2 or more positions on components with **Terminal Point** mating behavior (e.g., terminal blocks). Unlike inherent bridged positions (factory-internal wiring of the part), a jumper is a separate purchasable part with its own BOM entry and designator (e.g., `JB1`, `JB2`). Jumpers can bridge positions on the same terminal block or across adjacent terminal blocks. Create a jumper by right-clicking a position on a terminal point component → **New Jumper**, then right-click additional positions → **Add to JB1**. Assign a color for visual identification and an optional part (MPN/manufacturer) via the Jumper properties panel. Jumpers participate in net grouping — all bridged positions are electrically equivalent. Jumpers appear in the BOM, connection table ("Jumper" column), covering schedule, and ICD export. --- ## Bundle A **Bundle** connects two nodes (components or branch points) and carries conductors. ![Two 4-pin components connected by a bundle with a count badge of 4.](/plan/simple-cable/simple-cable-bundle.png) In Layout view, toggle between three display modes: **Bundles Only** (sheath paths with count badges), **Bundles + Conductors** (individual conductor lines overlaid), or **Conductors Only** (conductor lines without sheaths). Double-click a bundle to adjust routing with waypoints and bend handles. See [Canvas & Navigation](/docs/plan/canvas-and-navigation#layout-view-options). Created by drawing in Layout view or automatically when connecting pins/positions in Schematic view. ## Conductor A **Conductor** is a single electrical path carried by a bundle. Conductors connect pins or positions on components whose [mating behavior](/docs/plan/components-and-pins#mating-behavior) accepts conductors (Connector or Termination), with a termination method (crimp, solder, IDC) at each endpoint. A conductor can be a discrete wire or a core inside a cable. See [Connections, Conductors & Mates](/docs/plan/connections-and-conductors). ## Wire Group A **Wire Group** collects two or more conductors into a physical grouping -- **twisted** (at a specified pitch) or **bundled** (tape, braid, or lacing). Wire groups follow their conductors through branch points across multiple bundles. Twisted groups appear as vertical brackets on the schematic. See [Wire Groups & Cables](/docs/plan/wire-groups-and-cables). ## Cable A **Cable** groups conductors under a multi-conductor assembly with numbered cores and a single BOM entry -- cores do not get separate wire PNs. Cables can be **shielded** with an optional drain wire. On the schematic, cables appear as labeled ovals; shielded cables are amber. See [Wire Groups & Cables](/docs/plan/wire-groups-and-cables). --- ## Signal A **Signal** classifies a net by function (e.g., `VDC`, `GND`, `CAN_H`). Each signal has a name and color. Assigned to nets -- propagating to all conductors in the net. See [Signals & Nets](/docs/plan/signals-nets-and-bom). ## Net A **Net** is a group of electrically connected conductors -- through routing, mated pins/positions, bridged positions, jumpers, splices, or any combination. Nets are computed from connectivity. Assign a signal to a net and every conductor inherits it. See [Signals & Nets](/docs/plan/signals-nets-and-bom). --- ## Mate A **Mate** defines how two components physically pair -- separate from conductors. Each component has a shape-derived mating behavior that determines valid pairings and whether its pins/positions accept conductors. See [Components, Pins & Positions: Mating Behavior](/docs/plan/components-and-pins#mating-behavior) for the full table. See [Connections, Conductors & Mates](/docs/plan/connections-and-conductors#mates) for creating mates. ## Device Group A **Device Group** represents a single multi-connector device -- e.g., a PCB with multiple headers, a DIN rail with terminal blocks, or an instrument with separate power and signal connectors. Components share a visual boundary and label. See [Canvas & Navigation](/docs/plan/canvas-and-navigation#device-groups). ## Visual Group A **Visual Group** is a labeled box around nodes for organization -- no electrical meaning, no effect on assembly generation or BOM. See [Canvas & Navigation](/docs/plan/canvas-and-navigation#visual-groups). --- ## Note A **Note** is a text annotation box placed on the plan canvas. Notes have no electrical meaning -- they are for documentation, callouts, and manufacturing instructions. Three types are available: **Text** (paragraph), **Numbered List** (ordered items), and **Table** (columns and rows). Each note can have an optional title and a color-coded class (Note, Info, Warning, Important) for visual emphasis. Notes exist independently per view mode (layout and schematic) and per page. See [Canvas & Navigation: Notes](/docs/plan/canvas-and-navigation#notes). --- ## Subassembly A **Subassembly** is a reusable template of plan elements saved to a shared library. Define a circuit pattern once and insert it into any plan. - **Save** -- select nodes and bundles, right-click, **Save as Subassembly**. All conductor properties, splices, and wire groups are preserved. - **Insert** -- right-click the canvas, **Subassembly Library** to browse and insert. A copy is placed on the current page. Subassemblies are stored server-side and shared across all projects. See [Parts & BOM: Subassembly Library](/docs/plan/parts-and-bom#subassembly-library). ## Pages **Pages** organize large plans into sections. Each page shows a subset of nodes and bundles while maintaining a single connected plan. See [Canvas & Navigation: Pages](/docs/plan/canvas-and-navigation#pages). # Canvas & Navigation Source: https://splice-cad.com/docs/plan/canvas-and-navigation Learn the plan canvas — layout vs schematic views, interaction modes, selection, multi-page navigation, keyboard shortcuts, and the bottom toolbar. The plan canvas is where you design your system architecture. This guide covers views, interaction modes, selection, pages, and shortcuts. ![Plan canvas with left sidebar (project tree, components) and right sidebar (properties panel) flanking the main canvas area.](/plan/canvas-nav/plan-sidemenus.png) --- ## Layout and Schematic Views The plan canvas has two views, toggled from the bottom toolbar: | View | What It Shows | When to Use | |------|--------------|-------------| | **Layout** | Compact topology — components as blocks, bundles as single lines with conductor count badges | Building topology, placing and arranging components | | **Schematic** | Expanded pins — individual conductor paths between pin panels | Wiring individual pins, verifying connections |
Layout view — components connected by bundles with conductor lines overlaid, showing the physical topology of a multi-endpoint harness.
Schematic view — the same plan with expanded pin tables, individual conductor paths, cables, and splices visible.
**Layout** is the physical topology view. **Schematic** expands pins for detailed wiring. Both views show the same plan. ### Layout View Options Layout view display options (canvas right-click menu): #### Display Modes Three display modes (right-click canvas or click a bundle's label badge to cycle): | Mode | Description | |------|-------------| | **Bundles Only** | Sheath paths with count badges and boot shapes at branch points (default) | | **Bundles + Conductors** | Individual conductor lines overlaid on sheaths | | **Conductors Only** | Conductor lines without sheaths — branch points appear as small circles | #### Bundle Color Give a bundle a custom sheath color from its **Properties panel** or by right-clicking it → **Set Color**. With several bundles selected, the color applies to all of them at once — handy for color-coding trunks or branches. Clear the color to return to the default gray. A selected bundle always shows an animated dashed outline so the selection stays visible regardless of its color. #### Bundle Routing Double-click a bundle to enter edit mode, which shows both **waypoint handles** and **bend handles**: - **Waypoints** — Drag control points along the path to reshape the route. Click the path to add new waypoints. - **Bend handles** — Appear at each end where the bundle exits a component. Drag a bend handle to adjust the exit distance, or drag it past a component edge to change the **exit side** (left, right, top, bottom). Right-click a bundle → **Edit Waypoints** also enters this mode. Click empty canvas to exit. ##### Bulk Routing Actions Right-click empty canvas → **Routing** for whole-plan routing operations. Each row defaults to the **current page**; the small **All Pages** badge on the right runs the same action across every page. | Action | Description | |--------|-------------| | **Clear Waypoints** | Remove hand-placed waypoints. Keeps exit sides, bends, endpoints, and path style intact. | | **Auto-pick Exit Sides** | Choose **left or right** for each bundle based on the other endpoint's horizontal position. Auto-picking never chooses top or bottom — drag the bend handle past a component's top/bottom edge to set those manually. Mated terminations exit opposite their mate. Bend customizations are cleared. | | **Auto Route** | Reset everything — waypoints, exit sides, bends, custom endpoints — so every bundle falls back to default routing. Path style (orthogonal/bezier/straight) is preserved. | Exit sides are stored per-link rather than per-page, so **Auto-pick Exit Sides** always affects every page even when scoped to the current page (it just narrows which links it touches). #### Other Layout Display Options | Action | Description | |--------|-------------| | **Fit to Content** | Auto-size a component to fit its pins. Available per-component, per-category, or for all components (right-click component or canvas). | | **Auto-Arrange** | Automatically position all components on the canvas (right-click canvas or multi-selection). | ### Schematic View Options Components expand to show pins, with conductors drawn as trunk-and-tap paths. **Hide Empty Pins** (right-click a component or canvas → Display → **Empty Rows**) collapses unconnected pins to reduce clutter. A "N empty pins hidden" label appears at the bottom of the component. Can be set per-component, per-page, or globally — all three levels are saved with the design, so a plan looks the same for every teammate who opens it. #### Conductor Anchors Each conductor path has three adjustable anchors: | Anchor | What It Controls | How to Adjust | |--------|-----------------|---------------| | **Trunk** | The horizontal Y position of the conductor's main trunk line | Drag the trunk line up or down | | **Tap** | The X position where the vertical tap meets the pin row | Drag the tap endpoint left or right | | **Jog** | The X position of the vertical elbow between trunk and tap segments | Drag the jog handle left or right | All anchors are per-conductor, per-page. Reset all anchors to defaults via right-click canvas → **Reset All Trunk Positions** or **Reset All Jog Positions**. #### Connection Labels **Connection Labels** replace long conductor paths with short stubs and boxed destination labels at each endpoint -- showing where the conductor connects without drawing the full route. **Toggling label mode:** - Right-click a conductor → **Show as Label** / **Show as Wire**. - Multi-select conductors → right-click → **Show Selected as Labels** / **Show Selected as Wires**. Labels show the destination (e.g., `X2.3`, `SP1 (P1.1, P2.3)`). Stubs are 60px long, enough for cable ovals and twist brackets. When the destination sits on another page, the label gains a **(Pg.N)** suffix — click that suffix to jump to the referenced page and recenter the viewport on the destination component. The same behavior applies to the cross-page mate badge above connectors mated to off-page parts. **Positioning labels:** Drag labels to offset them. Offsets are per-page and persist across sessions. | Action | How | |--------|-----| | **Move a label** | Click and drag it | | **Multi-select labels** | Shift+Click or Ctrl+Click additional labels | | **Alignment toolbar** | Appears when 2+ labels are selected — align (left, right, center, top, bottom, middle) or distribute (horizontal, vertical) | | **Distribute with gap** | Drag a distribute button on the toolbar to adjust spacing interactively (snaps to 5px) | | **Reset offsets** | Use the toolbar reset button, right-click a label → Reset, or right-click a connector → **Reset Label Positions** to reset all of that connector's labels at once | Offsets snap to the grid when enabled. Y offsets always snap to 5px for pin row alignment. #### Connector Rotation Rotate a connector 90° to read it vertically. This works in **both** views, with a separate orientation saved per view: - **Schematic view** — rotate for vertical **wire entry** so wires enter the top or bottom edge instead of the sides (handy for headers). Cycles horizontal → top → bottom. - **Layout view** — rotate the connector graphic through **0° / 90° / 180° / 270°** for physical arrangement. - **Rotate** — right-click a connector → **Rotate 90°**, press **R** with one or more connectors selected, or use the **Wire entry** (schematic) / **Rotation** (layout) control in the Properties panel. - The connector's pins, wire attach points, and selection bounds rotate together; connection-label stubs follow the rotation; and **mate lines** bend to stay attached to the rotated faces. Rotating a terminal block also rotates the terminations plugged into it, keeping them lined up with the rotated pins. --- ## Zoom & Pan The plan canvas uses the same zoom and pan controls as the assembly builder. See [Zoom & Pan](/docs/harness/zoom-and-pan) for full details on scroll modes (Auto, Scroll, Pan), pinch zoom, keyboard modifiers, and sensitivity settings. --- ## Interaction Modes Seven interaction modes, activated by keyboard shortcut or toolbar. **Escape** returns to Select mode. | Mode | Shortcut | Description | |------|----------|-------------| | **Select** | `V` | Default mode. Click to select, drag to move, box-select for multiple elements. | | **Add Component** | `C` | Click the canvas to place a new component. A category submenu appears for choosing the component type. | | **Add Branch Point** | `B` | Click the canvas to place a branch point junction node. | | **Add Bundle** | `L` | Click a source node, then click a target node to draw a bundle between them. | | **Add Flying Lead** | `F` | Click the canvas to place a flying lead endpoint. | | **Draw Visual Group** | `G` | Click and drag to draw a visual grouping box around nodes. | | **Add Note** | — | Click the note button in the bottom toolbar, choose a type (Text, Numbered List, or Table), then click the canvas to place. | > **Tip:** Right-click a component and select **Add Bundle to...** as an alternative. --- ## Selection ### Single Selection Click any element to select it. The **Properties panel** shows its details. ### Multi-Selection - **Shift+Click** or **Ctrl+Click** — Add or remove individual elements from the selection. - **Box Select** — Click and drag on empty canvas space to draw a selection rectangle. All elements inside are selected. - **Selection Filter** — Right-click empty canvas → **Selection Filter** to limit box-select to specific entity types (connectors, branch points & splices, bundles or conductors, notes, images). The available types follow the current view (layout vs schematic), and clicking individual elements is never filtered. The funnel icon highlights and shows how many types are hidden while a filter is active. Use **Deselect All Types** to clear every type at once (then enable just the one you want), or **Select All Types** to restore. ### Multi-Selection Actions With multiple elements selected, you can: - **Delete** — Remove all selected elements. - **Copy / Paste** — Duplicate the selection (`Ctrl+C` / `Ctrl+V`). - **Align** — Align selected components horizontally or vertically (context menu). - **Distribute** — Space selected components evenly (context menu). - **Assign to Page** — Move selected elements to a specific page (context menu). ### Copy & Paste `Ctrl+C` copies the selected plan elements. `Ctrl+V` pastes them with a small offset — all pasted items are auto-selected so you can immediately drag them into position. **What gets copied:** - Components, branch points, and flying leads - Bundles between selected nodes (only when both endpoints are selected) - Conductors, wire groups, cables, and splice definitions (when all referenced elements are in the selection) - Mate relationships and device groups (when all members are selected) - Layout positions and schematic positions (per-page) Pasted items are independent copies with new designators and IDs. Conductor properties (gauge, color, signal, termination) are preserved. **Cross-window paste:** Copied elements are also written to the system clipboard, so you can paste into a different browser tab or window — even one running a different project. The browser may prompt for clipboard permission on the first paste. If permission is denied, same-tab paste still works normally. > **Tip:** `Ctrl+C` / `Ctrl+V` copies *structural elements* (components, bundles, conductors). For copying *pin table data* as spreadsheet-compatible TSV, use `Ctrl+Shift+C` / `Ctrl+Shift+V` instead — see [Export & Import: Clipboard](/docs/plan/export-and-import#clipboard-copy--paste). --- ## Pages Pages organize large plans into sections. Each page shows a subset of nodes and bundles while maintaining a single connected plan. ### Creating Pages - Press **Ctrl+Shift+N** to create a new page. - Or right-click the canvas and select **New Page** from the context menu. ### Page Tab Bar The tab bar shows all pages. Click to switch, double-click to rename. ### Navigating Pages | Action | Shortcut | |--------|----------| | Next page | `Ctrl+]` or `Ctrl+PageDown` | | Previous page | `Ctrl+[` or `Ctrl+PageUp` | | New page | `Ctrl+Shift+N` | ### Page Assignment - Components and bundles can be assigned to one or more pages via the context menu. - **Unassigned elements** appear on all pages — useful for shared components like power connectors or ground buses. - Move elements between pages by right-clicking and selecting the target page. ### Deleting Pages When you delete a page, a dialog lets you choose: - **Reassign** — Move the page's elements to another page before deleting. - **Delete** — Remove the page and all elements assigned only to it. --- ## Keyboard Shortcuts | Shortcut | Action | |----------|--------| | `V` | Select mode | | `C` | Add Component mode | | `B` | Add Branch Point mode | | `L` | Add Bundle mode | | `F` | Add Flying Lead mode | | `G` | Draw Visual Group mode | | `P` | Quick-add pin to selected component | | `Delete` / `Backspace` | Delete selected elements | | `Escape` | Cancel current mode / deselect | | `Ctrl+Z` | Undo | | `Ctrl+Shift+Z` | Redo | | `Ctrl+C` | Copy selected elements (structural) | | `Ctrl+V` | Paste elements (works across windows) | | `Ctrl+Shift+C` | Copy pin table as TSV (single component) | | `Ctrl+Shift+V` | Paste pin table from clipboard | | `Ctrl+]` | Next page | | `Ctrl+[` | Previous page | | `Ctrl+Shift+N` | New page | ### Drag Modifiers Modify drag behavior. All can be pressed or released mid-drag. | Key | View | Behavior | |-----|------|----------| | **Shift** | Both | Constrain drag to horizontal or vertical axis | | **M** | Both | Detach mated terminations during drag — terminal points drag their mates by default; hold M to move the terminal point independently. Release to re-attach. | | **Alt** / **Option** | Schematic | Lock jog anchors in place — the conductor elbow stays fixed while the component moves. When dragging a connection label, freezes the stub jog elbow so the label moves independently. | | **R** | Schematic | Reset jog anchors to midpoint — snaps all affected jog positions to the auto-calculated center between endpoints. When dragging a connection label, resets the label offset to zero. Release the mouse to commit. | ### In Pickers Picker popups — the mate chip on a component, the "Connect to…" menu on a pin, and similar menus — support keyboard typeahead. Type a prefix to jump to the matching row, use `↑`/`↓`/`Home`/`End` to step, `Enter` to select (or open a submenu for targets with multiple positions), `Backspace` to trim the prefix, `Esc` to close. Canvas shortcuts (`C`, `F`, `L`, etc.) are suspended while a picker is open so typing doesn't leak out to the canvas. --- ## Bottom Toolbar The bottom toolbar contains: - **Page Tab Bar** — Tabs for each page. Click to switch, double-click to rename. - **Page Navigator** — Dropdown selector for switching pages, with previous/next buttons. - **View Toggle** — Switch between Layout and Schematic views. --- ## Device Groups A **Device Group** represents a multi-connector device. See [Terminology](/docs/plan/terminology#device-group). ### Creating Device Groups 1. Select one or more components. 2. Right-click → **Device Group > Create New**. 3. Name the device group. ### Managing Device Groups - **Add components** — Right-click a component → **Device Group > Add to...**. - **Remove components** — Right-click a grouped component → **Device Group > Remove from Group**. - **Select entire group** — Click the device group border or label. --- ## Visual Groups **Visual Groups** are labeled boxes for organization -- no electrical meaning. See [Terminology](/docs/plan/terminology#visual-group). ### Creating Visual Groups 1. Press **G** to enter Draw Visual Group mode. 2. Click and drag on the canvas to draw the boundary. 3. Name the group in the Properties panel. ### Visual Group Properties | Property | Description | |----------|-------------| | **Name** | Display label | | **Color** | Background and border color | | **Style** | Visual rendering style | --- ## Notes **Notes** are annotation boxes placed directly on the plan canvas. Use them for manufacturing instructions, callouts, revision notes, or any text that should appear on the drawing. Notes exist independently per view mode (layout and schematic) and per page. ### Creating Notes 1. Click the **Add Note** button in the bottom toolbar. 2. Choose a note type from the menu: **Text Note**, **Numbered List**, or **Table**. (The same menu also has **Image** — see [Images](#images) below.) 3. Click the canvas to place the note. A **Connection Table** is a fourth note type, but it's bound to a component and added differently — see [Connection Tables](#connection-tables) below. ### Note Types | Type | Description | |------|-------------| | **Text** | Free-form paragraph text | | **Numbered List** | Ordered list of items (auto-numbered) | | **Table** | User-defined columns and rows | | **Connection Table** | Auto-populated pinout for a component (see [Connection Tables](#connection-tables)) | ### Note Properties Select a note to edit in the Properties panel: | Property | Description | |----------|-------------| | **Title** | Optional title displayed above the note content | | **Type** | Text, Numbered List, or Table — can be changed after creation | | **Class** | Color-coded category (Note, Info, Warning, Important, Success) — adds a colored accent stripe. Custom classes can be created with any label and color. | | **Width** | Note box width (minimum 120px) | ### Editing Notes - **Move** — Drag the note to reposition it on the canvas. - **Resize** — Adjust the width in the Properties panel or drag the resize handle. - **Edit content** — Select the note and edit in the Properties panel. For tables, add/remove rows and columns, rename column headers, and drag column dividers to adjust widths. - **Delete** — Select the note and press Delete, or right-click → **Delete Note**. ### Connection Tables A **connection table** is a special note that auto-populates a component's pinout and stays in sync as the design changes. **Add one** by right-clicking a component → **Add connection table** to drop a table beside it. Select several components first to add one for each at once. **What it shows:** regular connectors lead with the signal on each pin; terminal points show their **Position** and the **Mate Component** each connects to. Choose and reorder which columns appear — pin/position, signal, connected-to, mate component, wire size, color, length, and more — toggle whether unconnected pins are shown, and sort by any column. **Right-click a table** to copy it to the clipboard (tab-separated, ready to paste into a spreadsheet), fit columns to their contents, or apply its column layout to every other table of the same kind. The table updates **live** — add a wire, change a signal, or repin a connector and it reflects the change immediately. --- ## Images Place a logo, photo, or reference graphic anywhere on the plan or schematic view. Images exist per view mode and per page, like notes. ### Adding an Image - **Add Note menu ▸ Image** in the bottom toolbar opens the image picker. - **Paste** an image straight from the clipboard. - **A connector's photo** — the picker's **Photos** tab, or right-click a connector → **Insert photo**. - **A connector's symbol** — drop the same block graphic the harness builder draws. The picker has four tabs: | Tab | Contents | |-----|----------| | **My Images** | Images uploaded to this project | | **Connectors** | Connectors in this plan, plus a search over the whole catalog (built-in, your saved, and public custom parts) — placed as their block graphic | | **Templates** | Ready-made connector and component symbols (D-sub, M-series, terminal blocks, resistor, relay, diode, fuse, and more) | | **Photos** | Supplier photos for the connectors in this plan | ### Editing an Image Select an image to edit it with on-canvas handles or in the Properties panel: - **Move / Resize** — drag the image or a corner handle (resize keeps the aspect ratio). - **Rotate** — 90° steps or any angle. - **Crop** — drag the crop handles on the image. - **Fit / Opacity / Alt text** — set in the Properties panel. - **Double-click** an image to open its Properties — use **Replace image…** there to swap the asset. Images behave like other plan elements: marquee box-select picks them up alongside nodes and notes, dragging any selected element moves the whole group, and copy/paste, multi-delete, and Clear Canvas all include them. ### Storage Images are stored with the project — in the cloud for cloud projects, and in a local assets folder for locally-saved files, so they work offline. Viewers of a shared project see them too. --- ## Redesignating Batch-rename designators: 1. Select the components to redesignate. 2. Right-click → **Redesignate**. 3. Configure the naming pattern and sequence. All references update automatically -- conductors, nets, mates, and BOM entries. # Components, Pins & Positions Source: https://splice-cad.com/docs/plan/components-and-pins Creating components, configuring pins/positions, color badges, mating behavior, and bridged positions. Components represent the physical devices in your design. Each has a **mating behavior**, derived from its shape or category, that determines how it connects: - **Connectors** (e.g., Deutsch DT, DB9, Molex) have **pins** where conductors terminate. Connectors mate with other connectors via pin-to-pin mapping. - **Terminal points** (e.g., DIN-rail terminal blocks, bus bars, spring-terminal PSU inputs) have **positions** — slots that receive terminations. Positions do not carry conductors directly. - **Terminations** (e.g., ferrules, ring terminals, quick disconnects, flying leads) carry one or more conductors and mate with a single terminal point position. See [Mating Behavior](#mating-behavior) for the full reference. --- ## Creating Components 1. Press **C** to enter Add Component mode. 2. Click the canvas to place the component. 3. Choose a category from the submenu (connector shapes, or functional types like circuit breaker, fuse, relay, etc.). An automatic designator is assigned based on category (e.g., `X1`, `CB1`). Edit in the **Properties panel**. --- ## Component Properties Select a component to edit in the Properties panel: | Property | Description | |----------|-------------| | **Designator** | Unique label (e.g., `X1`, `J3`, `CB1`). Prefix from category. | | **Name** | Optional descriptive name (e.g., "Engine ECU", "Main Battery Fuse") | | **Category** | Functional type -- determines designator prefix and BOM classification | | **Shape** | Visual shape on the canvas (circular, rectangular, D-sub, terminal block, ferrule, ring, etc.). Connectors only. | | **Color** | Optional color badge behind the component icon. Click the swatch next to MPN to pick from a palette or enter a hex value. Useful for visually grouping components by function, subsystem, or voltage level. The icon automatically adjusts for contrast against the badge color. Colors are preserved in PDF/SVG/PNG exports. | | **Pins / Positions** | Each component has one or more connection points. Connectors call these **pins**; terminal points call them **positions**. See [Pin & Position Configuration](#pin--position-configuration). | | **Mating Behavior** | How the component participates in mates and whether its connection points accept conductors. See [below](#mating-behavior). | | **MPN / Manufacturer** | Part assignment from the BOM. See [Parts & BOM](/docs/plan/parts-and-bom). | | **Accessories** | Backshells, wedge locks, cavity plugs, seals, and other parts attached to the connector. Edit in the **Accessories** tab (next to Pins and Contacts). See [Parts & BOM: Connector Accessories](/docs/plan/parts-and-bom#connector-accessories). | --- ## Pin & Position Configuration Configure pins (connectors) or positions (terminal points) in several ways: - **Properties Panel** — Add/remove, rename labels, set functions. - **Bulk Editor > Components** — Edit counts across all components in a table view. - **Quick-Add** — Press **P** with a component selected to add a pin or position. Each pin/position has: | Property | Description | |----------|-------------| | **Label** | Number or identifier (e.g., "1", "A", "VBAT") | | **Function** | Optional functional description (e.g., "UART_TX", "GND") | | **Detail** | Optional notes (e.g., "24V, 0.14A fuse", "Open drain") | Conductor endpoint properties (termination method, contact PN) are per-conductor, not per-pin/position. See [Parts & BOM: Contact Part Numbers](/docs/plan/parts-and-bom#contact-part-numbers). --- ## Bridged Positions **Bridged positions** are internally connected pins or positions -- e.g., bus bar terminals or common-rail positions on a terminal block. All bridged entries resolve to the same [net](/docs/plan/signals-nets-and-bom#nets) and share signal assignments. **Creating a bridge:** 1. Select a component, open the **Positions** (or **Pins**) tab. 2. Check two or more rows, then click the **Bridge** button in the table header. 3. The bridge group appears in the **Bridged Positions** section below the table -- edit members with the chip selector, or remove the group with the **×** button. Multiple independent bridge groups are supported on a single component (e.g., positions 1–3 bridged separately from positions 4–6). **Visual indicators:** - **Schematic** -- colored vertical lines with dots connect bridged pins on the opposite side from wire exits. Colors cycle per group: green, blue, orange, purple. - **Pin table** -- a colored bar with a group number badge appears on the left edge of each bridged row. ![Terminal point X2 with positions 1–6 bridged together — colored bridge indicators visible on the schematic and in the Bridged Positions section of the Properties panel.](/plan/components-pins/bridged-pins.png) ### Jumpers **Jumpers** are external accessories (separate BOM parts) that bridge positions on terminal blocks — distinct from inherent bridged positions which represent factory-internal wiring. See [Terminology: Jumper](/docs/plan/terminology#jumper). **Requirement:** The component must have **Terminal Point** mating behavior for its positions to accept jumpers. This is the default for terminal block shapes. Other component shapes can be set to Terminal Point via the mating behavior override in the Properties panel. **Creating a jumper:** 1. Right-click a position on a terminal point component → **New Jumper**. This creates a jumper (e.g., JB1) starting with that position. 2. Right-click another position (same or different terminal point component) → **Add to JB1**. 3. Click the jumper in the summary panel to open its properties — set designator, color, and MPN/manufacturer. > **Tip:** Use [shift+click range selection](#shift-click-range-selection) to select multiple positions first, then right-click → **New Jumper** to create a jumper spanning all selected positions at once. **Visual indicators:** Jumper positions show as colored dots on the bridge indicator column, slightly larger than inherent bridge dots, using the jumper's assigned color. When a position is both inherently bridged and in a jumper, the jumper color overlays the bridge dot. **Key differences from bridged positions:** | | Bridged Positions | Jumpers | |---|---|---| | Source | Part spec or manual override | User-created accessory | | BOM | No separate entry | Own BOM entry (MPN, manufacturer) | | Scope | Single component only | Can span multiple terminal blocks | | Color | White (inherent) | User-assigned | ### Shift+Click Range Selection Select multiple positions on a terminal point for bulk operations: 1. **Click** a position row in schematic view to set the anchor (this also works as a normal pin click). 2. **Shift+click** another position on the same component to select the contiguous range (highlighted in blue). 3. **Right-click** any selected position to apply operations to all at once: | Action | Description | |--------|-------------| | **Add Termination (N positions)** | Create ferrules, ring terminals, quick disconnects, or flying leads for every selected position | | **New Jumper (N positions)** | Create a jumper spanning all selected positions | | **Add N to JBx** | Add all selected positions to an existing jumper | | **Remove N from JBx** | Remove all selected positions from a jumper | Selection clears on canvas click or **Escape**. Shift+click a third position to extend or shrink the range from the original anchor. --- ## Designator Prefix Preferences Customize the automatic designator prefix assigned to new components. Access via the toolbar settings icon. **Component Categories** — override the default prefix per functional category: | Category | Default | Example Override | |----------|---------|-----------------| | Battery | BT | BAT | | Capacitor | CAP | C | | Circuit Breaker | CB | MCB | | Contactor | K | KM | | Diode | D | CR | | Fan | FAN | — | | Fuse | F | FU | | Generator | G | GEN | | Ground | GND | GE | | Heater | HTR | — | | Indicator | PL | LT | | Inductor | L | — | | Inverter | INV | — | | LED | LED | — | | Motor | M | MOT | | PCB | PCB | — | | Potentiometer | VR | POT | | Power Supply | PS | PWR | | Push Button | PB | — | | Relay | K | RLY | | Resistor | R | — | | Sensor | SEN | — | | Solenoid | SOL | — | | Solar Cell | PV | — | | Speaker | LS | SPK | | Switch | S | SW | | Thermostat | TS | — | | Timer | TM | — | | Transformer | T | TR | **Connector Shapes** — override the default "X" prefix per connector shape: | Shape | Default | Example Override | |-------|---------|-----------------| | Circular | X | J | | Rectangular | X | P | | D-Sub | X | DB | | Terminal Block | X | TB | | Ferrule | X | FR | | Quick Disconnect | X | QD | | Ring | X | RT | | Spade | X | SD | | Lug | X | LG | | USB | X | USB | | Barrel | X | DC | | Header | X | HDR | | Coaxial | X | RF | | RJ/Modular | X | RJ | Overrides apply to **newly placed components only**. Use [Redesignate](/docs/plan/canvas-and-navigation#redesignate) to rename existing components with the new prefixes. **Auto-relabel on category change:** When enabled, changing a component's category automatically updates its designator to use the new category's prefix (e.g., changing from connector to relay updates X1 → K1). **Conflict warnings:** A warning icon appears when two categories or shapes resolve to the same prefix, helping avoid ambiguous designators. --- ## Mating Behavior Each component has a **mating behavior**, derived from its shape or category, that determines how it participates in mate relationships and how its connection points function:
| Behavior | | Connection Points | UI Label | Accepts Conductors | Mates With | |----------|:---:|------------------|----------|:------------------:|------------| | **Connector** | Connector | Electrical contacts in a multi-pin interface | Pins | Yes | Other connectors (pin-to-pin mapping) | | **Terminal Point** | Terminal Point | Individual slots that receive terminations | Positions | No | Terminations | | **Termination** | Termination | A single connection point | Pin | Yes | A specific terminal point position |
The default is derived from the component's shape or category. Override it in the Properties panel dropdown. Flying leads are always treated as terminations. When mating a **terminal point** with multiple positions, a submenu lets you pick which position to mate. Occupied positions are grayed out. Type a prefix to filter compatible targets and positions. See [Connections & Conductors: Mates](/docs/plan/connections-and-conductors#mates) for creating mates, Bulk Mate, and alignment. # Connections, Conductors & Mates Source: https://splice-cad.com/docs/plan/connections-and-conductors Drawing bundles, connecting pins, Bulk Connect, auto-ferrules, mates, conductor routing, and splices. This page covers the three core relationships in your design: **bundles** route physical paths between components, **conductors** are the individual wires or cable cores running through those bundles, and **mates** define how components physically pair (separate from the wiring itself). --- ## Drawing Bundles Create bundles in Layout view: 1. Press **L** to enter Add Bundle mode (or right-click a component → **Add Bundle to...**). 2. Click a source node (component or branch point). 3. Click a target node. The bundle appears as a single line with a conductor count badge. Bundles are also created automatically when connecting pins in Schematic view. See [Bundle Operations](/docs/plan/bundle-operations) for insert branch point, join, consolidate, merge, redirect, and other editing operations. --- ## Bundle Properties Select a bundle to edit in the Properties panel: | Property | Description | |----------|-------------| | **Length** | Physical length of the bundle segment | | **Tolerances** | Acceptable length variation | | **Coverings** | Heat shrink, sleeves, tape, and other protective layers. See [Parts & BOM: Bundle Coverings](/docs/plan/parts-and-bom#bundle-coverings). | | **Wire Groups & Cables** | Conductor groupings on the bundle. See [Wire Groups & Cables](/docs/plan/wire-groups-and-cables). | ![Bundle selected between X1 and X2 — Properties panel showing length, tolerances, conductors table with from/to endpoints, gauge, color, and stripe columns, plus groupings and coverings sections.](/plan/connections/bundle-properties.png) --- ## Connecting Pins There are several ways to create conductor connections between components: - **Bulk Connect** — batch-wire two components at once via the context menu. - **Pin-to-Pin** — click a source pin then a target pin in Schematic view. - **Properties Panel** — click the link icon on a pin row to open a connection picker, then select a target component and pin. - **Bulk Components Editor** — same connection picker, available on every pin row across all components at once. > **Keyboard in the connection picker:** type a prefix to jump to a component (e.g. `X10`), `Enter` to open its pins submenu, then type again to pick a pin. `↑`/`↓` step, `Home`/`End` jump to ends, `Esc` closes. Canvas shortcuts are suspended while the picker is open. ### Bulk Connect **Bulk Connect** batch-wires components. 1. Right-click a component. 2. Select **Bulk Connect**. 3. Click the target component. 4. The **Connection Matrix** opens — choose a wiring pattern or click individual cells to map pins manually. | Pattern | Description | |---------|-------------| | **1:1** | Pin 1 to pin 1, pin 2 to pin 2, etc. | | **Reversed** | Pin 1 to last pin, pin 2 to second-last, etc. | | **Interleave** | Swap adjacent pairs: 1→2, 2→1, 3→4, 4→3 (for twisted pairs) | Set wire color, stripe, and gauge per row before clicking **Create Connections**. The behavior depends on the components' mating behavior (see [Terminology: Mate](/docs/plan/terminology#mate)): | Source | Target | Result | |--------|--------|--------| | Connector | Connector | Creates conductors between corresponding pins | | Connector | Terminal Point | Creates **auto-ferrules** (see below) | | Terminal Point | Connector | Creates **auto-ferrules** (see below) | | Terminal Point | Terminal Point | Creates **auto-ferrules** on both sides with a conductor between | | Termination | Terminal Point | Creates **auto-ferrules** (see below) | ### Pin-to-Pin (Schematic View) Click a source pin, then click a target pin. The result depends on the components' mating behavior and **where you click** on termination nodes: | Source | Target | Result | |--------|--------|--------| | Connector | Connector | Conductor (auto-routed via shortest path; creates a bundle if none exists) | | Connector | Terminal Point | Auto-ferrule inserted between them (see below) | | Terminal Point | Connector | Auto-ferrule inserted between them (see below) | | Connector | Termination | Conductor | | Termination *(circle)* | Terminal Point *(pin row)* | Auto-ferrule + bundle + conductor (see below) | | Termination *(body)* | Terminal Point | Mate relationship (no conductor) | | Terminal Point *(pin row)* | Termination *(circle)* | Auto-ferrule + bundle + conductor (see below) | | Terminal Point | Termination *(body)* | Mate relationship (no conductor) | | Terminal Point | Terminal Point | Auto-ferrules on both sides with conductor between | #### Circle vs Body on Terminations Termination nodes (ferrules, ring terminals, etc.) have two distinct click targets: - **Circle** (pin dot) — Creates a **conductor connection**. Clicking the circle on a termination and then a pin row on a terminal point triggers auto-ferrule creation: a new ferrule is inserted at the terminal point, connected via a bundle and conductor. - **Body** (main graphic) — Creates a **mate**. Clicking the body of a termination and then a terminal point creates a direct mate relationship with no conductor. Visual cues distinguish the two targets: the circle glows **orange** on hover (matching auto-ferrule target highlighting), while the body glows **green** (matching mate target highlighting). These cues become stronger when a connection is already active. --- ## Auto-Ferrule Creation When a connection involves a Terminal Point, Splice automatically creates ferrule nodes. This is triggered by: - **Bulk Connect** — Connector ↔ Terminal Point, Termination → Terminal Point, or Terminal Point ↔ Terminal Point. - **Pin-to-Pin (circle click)** — Clicking the circle on a termination and a pin row on a terminal point (or vice versa). - **Bulk Mate** — See below. For each pin pair, the auto-ferrule flow: 1. **Creates a ferrule node** — A single-pin component positioned near the terminal point, aligned to the pin row. 2. **Creates a bundle** from the source (connector or termination) to the ferrule. 3. **Creates a conductor** from the source pin to the ferrule pin. 4. **Creates a mate** from the ferrule to the terminal point pin. If a mate already exists on that terminal point pin, it is replaced by the new ferrule mate. > **Tip:** Auto-ferrules save time at terminal blocks or PCB headers -- each wire gets its own ferrule with mate relationships and BOM tracking. --- ## Mates A **Mate** defines how two components physically pair -- separate from conductors. See [Components & Pins: Mating Behavior](/docs/plan/components-and-pins#mating-behavior) for how mating behavior determines valid pairings. ### Creating Mates **From the context menu:** 1. Right-click a component. 2. Select **Mate**. 3. Choose the target component from the list. Targets are listed alphabetically. Type a prefix (e.g. `X10`) to jump to a compatible target; for terminal points with multiple pins, the position submenu supports the same prefix navigation. For terminal points the submenu grays out occupied pins — pin mappings are auto-generated: matched first by label, then by ID. **From Schematic view:** Click the **body** of a termination, then click a terminal point pin (or vice versa) -- a mate is created automatically. Clicking the **circle** (pin dot) instead of the body triggers auto-ferrule creation rather than a mate. See [Circle vs Body on Terminations](#circle-vs-body-on-terminations) and the [Pin-to-Pin table](#pin-to-pin-schematic-view) above for the full connection matrix. ### Bulk Mate **Bulk Mate** creates mates for every pin on a terminal point. 1. Right-click a terminal point. 2. Select **Mate > Bulk Mate** (requires pins configured). | Mode | Behavior | |------|----------| | **Create New** | Auto-generates single-pin termination nodes (ferrule, ring, quick disconnect, or flying lead) for each pin, positioned and distributed vertically. Each pin gets a mate. | | **Use Existing** | Mates each pin with an existing component you select. | > **Tip:** "Create New" is the fastest way to set up a terminal block with individual ferrule terminations. The termination type defaults to Ferrule — change it in canvas right-click → Display → **Default Termination**. ### Quick Termination (Context Menu) For ad-hoc terminations without opening the Bulk Mate dialog: 1. Right-click a position on a terminal point in schematic view. 2. Select **Add Termination** → choose the type (Ferrule, Ring Terminal, Quick Disconnect, or Flying Lead). A termination node is created and mated to that position in one step. With [shift+click range selection](/docs/plan/components-and-pins#shift-click-range-selection), this works on multiple positions at once — the menu shows **Add Termination (N positions)** and creates all terminations in a single undoable action. ### Align Mated Connectors Auto-arrange mated components: 1. Right-click a terminal point with existing mates. 2. Select **Align Mated Connectors** (only shown when mates exist). Terminations align vertically (by pin index, centered on hub) and horizontally (30px from hub edge). Works in both views. Align all mates at once: canvas right-click → **Align All Mates to Pins**. --- ## Selecting & Highlighting Conductors Click a conductor on the canvas to select it. This also highlights the conductor's **entire net** — all conductors, bundles, endpoint pins, and nodes belonging to the same net light up on the canvas, and the net is revealed and scrolled into view in the **Nets panel**. - **Single click** — Select the conductor and highlight its net. - **Shift / Ctrl click** — Add or remove the conductor from the current selection. - **Click canvas background** — Clear the selection and net highlight. - **Right-click → Show in Nets Panel** — Same reveal and highlight behavior, available from the conductor context menu. For multi-bundle conductors, repeated clicks on the same conductor cycle through its bundles. --- ## Conductor Properties Editable in the Properties panel or Bulk Editor > Bundles: | Property | Description | |----------|-------------| | **Label** | Net display name (read-only). Edit via the Nets panel. | | **Signal** | Classification inherited from the net (e.g., "VDC", "GND") | | **Color** | Wire insulation color | | **Stripe** | Stripe color for identification | | **Gauge** | AWG wire gauge | | **Voltage** | Rated voltage | | **Current** | Rated current | | **Shielding** | Whether the conductor is shielded | | **Wire PN** | Part number for the physical wire product — see [Parts & BOM](/docs/plan/parts-and-bom) | | **Contact PN** | Part number for the contact/terminal at each endpoint — see [Parts & BOM](/docs/plan/parts-and-bom) | See [Signals & Nets](/docs/plan/signals-nets-and-bom) for net display name resolution. ### Off-Page Destination Labels In multi-page plans, when a termination node (ferrule, ring terminal, etc.) has a conductor going to a component on another page, a **stub line with a boxed destination label** appears in schematic view — for example, **J1.3 (Pg.2)**. This makes cross-page connections visible without switching pages. Labels are draggable like regular [connection labels](#connection-labels), and double-click opens the conductor's properties. **Jump to the referenced page:** click the **(Pg.N)** portion of the label. The active page switches and the destination component is centered and zoomed to fit in the viewport. The same click-to-jump works on the compact cross-page mate badge that appears above a connector whose mate lives on another page. **Extending to connector-type components:** by default, the stub-and-label treatment only renders at termination pins. Toggle **Display → Cross-Page Connector Stubs** in the canvas right-click menu (schematic mode) to also render off-page destination labels at connector-type pins — plugs, D-subs, headers, and so on. The toggle is saved with the design and off by default. --- ## Rerouting Conductors When multiple paths exist between a conductor's endpoints, you can change its route. See [Bundle Operations: Reroute Conductors](/docs/plan/bundle-operations#reroute) for details. --- ## Wire Groups & Cables Conductors can be organized into **wire groups** (twisted, bundled) and **cables** (multi-conductor assemblies with core mappings). These appear as visual indicators on the schematic, affect BOM generation, and carry over to generated assemblies. See [Wire Groups & Cables](/docs/plan/wire-groups-and-cables) for details. --- ## Splices ### Pass-Through vs Splice At a branch point, each conductor is either passing through or spliced: - **Pass-through** — The conductor passes through the branch point with no physical join. - **Splice** — The conductor is split into separate segments joined at the branch point. Splices are managed in the **Routing** section of a branch point's Properties panel (select the branch point, then look in the right sidebar). The same controls are available in the **Bulk Branch Points Editor**. ### Converting a Wire to a Splice 1. Select a branch point (requires 2 or more connected bundles). 2. In the Properties panel Routing section, find the conductor you want to split. 3. Click the **split** button (call_split icon) on the conductor row. 4. Two conductor segments are created, joined at the branch point with an auto-assigned designator (SP1, SP2, etc.). ### Converting a Splice to a Wire 1. Select the branch point containing the splice. 2. In the Properties panel Routing section, find the splice. 3. Click the **merge** button (horizontal_rule icon) to combine the segments back into a single conductor. > **Note:** Merge is available for 2-conductor splices. For splices with 3 or more conductors, remove individual conductors from the splice instead. ### Splice Types & Parts Use the splice type dropdown on each splice row to set the join method: | Splice Type | Description | |-------------|-------------| | **Butt** | End-to-end crimp or solder connection | | **Y** | Three-way junction | | **Closed End** | Twisted wire nut or closed crimp | | **Ultrasonic** | Ultrasonic weld joint | | **Solder** | Soldered junction | | **Crimp** | Crimped barrel or sleeve | | **Tap** | Mid-span tap without cutting the trunk conductor | Each splice can reference a part from the library for BOM tracking. Designators are auto-assigned sequentially (SP1, SP2, SP3...). ### Moving a Splice to Another Branch Point 1. Select a branch point and open its **Properties** panel (or the **Bulk Branch Points Editor**). 2. In the **Routing** section, click the **swap** icon (⇄) on the splice row. 3. Select the target branch point from the dropdown. Conductors are auto-rerouted to the new branch point. Unreachable conductors are removed. Designator, type, and part are preserved. Single undo step. > **Tip:** Only reachable branch points appear. If you don't see the target, check that a bundle path connects the two branch points. # Wire Groups & Cables Source: https://splice-cad.com/docs/plan/wire-groups-and-cables Creating wire groups (twisted pairs, bundled groups) and cables, managing core mappings and shielding, and understanding schematic indicators. Wire groups and cables organize conductors into physical groupings -- twisted pairs, bundled sets, or multi-conductor cables. They affect BOM, assembly output, and schematic display. See [Terminology](/docs/plan/terminology) for definitions. Manage wire groups and cables in the **Groupings** section (Properties panel, bundle selected) or **Bulk Editor > Bundles**. --- ## Creating Wire Groups ### From the Conductor Action Bar Select conductors on a bundle in Schematic view. The action bar shows: | Action | Description | |--------|-------------| | **Twist** | Create a twisted wire group from the selected conductors | | **Bundle** | Create a bundled wire group from the selected conductors | | **Create Cable** | Create a cable from the selected conductors with auto-numbered core mappings | ### From the Context Menu Right-click a conductor → **Twist with...** to pair with another conductor on the same bundle. ### From the Groupings Section In the **Groupings** section, click **Add Wire Group**, then add conductors with the picker. --- ## Wire Group Properties Select a bundle containing wire groups to see them in the Groupings section: | Property | Description | |----------|-------------| | **Name** | Display name (e.g., "Twisted Pair A", "Signal Bundle") | | **Method** | Twisted or Bundled — toggle with the method selector | | **Twist Pitch** | For twisted groups: the twist pitch in millimeters | | **Conductors** | List of member conductors with add/remove controls | ### Adding and Removing Conductors - Click **+** to open the conductor picker (shows available ungrouped conductors). - Click **x** to remove a conductor. - Minimum 2 conductors. Groups below minimum are auto-removed. ### Untwisting / Removing a Wire Group - Select grouped conductors and use **Untwist** in the action bar, or delete the group from the Groupings section. --- ## Creating Cables ### From the Conductor Action Bar Select conductors and click **Create Cable**. Conductors are auto-assigned as cores. ### From the Groupings Section Click **Add Cable** in the Groupings section, then add conductors as cores. --- ## Cable Properties | Property | Description | |----------|-------------| | **Name** | Cable display name (e.g., "Alpha Wire 5099C") | | **Core Mappings** | Ordered list of cores with core number → conductor assignments | | **BOM Assignment** | Reference to a cable BOM entry for part number tracking | | **MPN / Manufacturer** | Inline part number fields (auto-create BOM entry) | | **Shielded** | Whether the cable has an overall shield | | **Shield Conductor** | When shielded, the drain wire conductor assignment | ### Core Mappings Each cable core maps a core number to a conductor. Cores are numbered sequentially (1, 2, 3...). - **Add cores** — Click **+** to add a conductor as the next core. - **Remove cores** — Click **x** on a core to remove it from the cable. - **Renumber** — Click **Renumber** to re-sequence core numbers after removals (fills gaps). - **Reorder** — Drag cores to reorder them. - **Reassign** — Change the conductor dropdown on a core row to swap two conductors between core slots. Both pin assignments and wire properties (color, stripe, gauge) swap together, so each conductor fully takes on its new core's identity. Conductors that belong to a cable cannot be assigned individual wire PNs — they inherit the cable's BOM entry. Cable core rows appear disabled in the Wire PN Table. See [Parts & BOM: Cable Cores](/docs/plan/parts-and-bom#cable-cores) for details. ### Cable Part Assignment Cables are assigned a single part number covering the entire cable assembly. Three ways to assign: 1. **BOM picker** — Click the assign button to choose from existing cable BOM entries. 2. **Search Database** — Search the cable catalog by MPN, manufacturer, or core count. 3. **Inline editing** — Type an MPN directly; a BOM entry is auto-created if needed. See [Parts & BOM: Cable Part Numbers](/docs/plan/parts-and-bom#cable-part-numbers) for the full workflow. ### Cable Spec Sync When a cable has a BOM entry with core specifications (color, stripe, gauge), the system validates conductor properties against the cable spec and highlights mismatches in the Groupings section. #### Core Count Validation After assigning a cable part, validation banners appear: | Banner | Condition | Action | |--------|-----------|--------| | **"N of M cores assigned"** | Fewer conductors than cable cores | **Add missing** — creates new conductors with core specs applied | | **"Cable only has N cores, M assigned"** | More conductors than cable cores | **Trim to N** — removes excess core mappings (conductors become loose wires) | Each core row shows an **insulation color swatch** matching the cable spec. A **sync indicator** appears when the conductor's properties differ from the spec — hover it to see which fields are out of sync. ![Validation banners showing core count mismatch and per-core spec differences with insulation swatches.](/plan/parts-and-bom/cable-mismatch-cores.png) #### Adding Missing Cores Click **Add missing** to create conductors for all unmapped cable cores. New conductors inherit the cable's route and get color, stripe, and gauge from the cable spec. They appear as **unassigned** on the schematic until you connect them to pins. ![After adding missing cores — 8 conductors with unassigned cable core badges on component headers.](/plan/parts-and-bom/cable-after-add-missing.png) #### Applying Cable Specs Click **Apply specs** to overwrite conductor properties (color, stripe, gauge) with the cable's core definitions for all mapped cores. ![After applying specs — conductors inherit cable core colors and display on the schematic.](/plan/parts-and-bom/cable-after-apply-specs.png) #### Sync Behavior - Sync is **manual** — assigning a cable part shows the validation banners, but does not auto-change conductor properties. You choose when to apply. - **Add missing** creates unpinned conductors. Connect them to pins using the conductor picker or drag-and-drop. - **Apply specs** overwrites existing values. Only applies when the BOM entry has per-core data (from the cable database or manual entry in the Edit Part dialog). - After editing cable core properties in the [Edit Part dialog](/docs/plan/parts-and-bom#editing-cable-specs), click Apply specs to push changes to conductors. ### Cable Shielding Toggle the **Shielded** switch on a cable to mark it as having an overall shield. When shielded: - The schematic indicator shows an amber outline. - Assign a **shield conductor** (drain wire) from the same bundle. - The schematic shows the shield path from cable oval to drain wire's target pin. If the BOM entry has a `shielded` spec, the toggle defaults to that value. --- ## Converting Between Wire Groups and Cables Wire groups can be converted to cables and vice versa: Each wire group has **Convert to Cable** and each cable has **Convert to Wire Group** in the Groupings section. Converting preserves conductor membership. Wire group to cable assigns sequential core numbers. --- ## Schematic Indicators Wire groups and cables overlay conductor paths on the schematic. ### Twist Brackets Twisted groups appear as a **vertical bracket** with arrow indicators, labeled with the group name. Draggable horizontally along the bundle. Multiple twist groups on the same bundle are spaced to avoid overlap. ### Cable Ovals Cables appear as a **labeled oval** encircling member conductors. **Shielded cables** show an amber oval. A **shield dot** below the oval shows a line to the drain wire's target pin. Draggable horizontally. Ovals auto-size to fit all member conductors. ### Bundle Cross-Section Popup Click the **cross-section** button on a bundle to see conductor circles (colored by wire color), cable sheaths, shield indicators, and wire group brackets. --- ## Wire Groups & Cables in Assemblies Wire groups and cables carry over when generating an assembly. See [Assembly Generation: What Gets Converted](/docs/plan/assembly-generation#what-gets-converted). Sync pushes changes without regenerating. --- ## Quick Reference | Task | Where | |------|-------| | Create twisted pair | Select 2+ conductors → **Twist** in action bar, or right-click conductor → **Twist with...** | | Create bundled group | Select 2+ conductors → **Bundle** in action bar | | Create cable | Select conductors → **Create Cable** in action bar, or Groupings section → **Add Cable** | | Assign cable part | Groupings section → BOM assign button or inline MPN field | | Toggle shielding | Groupings section → **Shielded** toggle on a cable | | Assign drain wire | Groupings section → Shield conductor picker (after enabling shielded) | | Reposition indicator | Drag twist bracket or cable oval horizontally on schematic | | View cross-section | Click cross-section button on selected bundle | | Convert group ↔ cable | Groupings section → **Convert to Cable** / **Convert to Wire Group** | # Signals & Nets Source: https://splice-cad.com/docs/plan/signals-nets-and-bom Creating and assigning signals, understanding net resolution, and managing nets — display names, inline editing, and the Nets panel. Signals classify electrical paths. Nets group connected conductors. --- ## Signals A **Signal** classifies a net by function (e.g., `VDC`, `GND`, `CAN_H`). ### Creating Signals **From the Bulk Editor:** 1. Open **Bulk Editor > Signals**. 2. Click **+ Add Signal**. 3. Enter a name and pick a color from the palette. 4. Optionally set wire defaults (color, stripe, gauge). 5. Switch to the **Bundles** tab to assign the signal to nets. **From the Nets Panel (inline):** 1. Open the **Nets panel** in the right sidebar. 2. Click the signal picker dropdown on any net. 3. Click **+ New Signal** — the name pre-fills from the net's display name if one has been set. 4. Pick a color and confirm — the signal is created and assigned in one step. ### Signal Defaults Signals can carry default wire properties: | Default | Description | |---------|-------------| | **Wire Color** | Default insulation color for conductors | | **Stripe Color** | Default stripe for identification | | **AWG Gauge** | Default wire gauge | Individual conductors can override these defaults. ### Applying Signal Defaults Signal defaults are not applied automatically — you choose when to apply them: **On signal assignment (Nets panel):** When you assign a signal with defaults to a net, a prompt appears: *"Apply defaults to N conductors?"*. Click **Yes** to fill empty conductor properties from the signal defaults. **From the context menu:** Right-click a conductor (or multi-select conductors) and choose **Apply Signal Defaults**. This fills empty gauge, color, stripe, and voltage fields from the conductor's signal. Cable cores are skipped automatically since their properties come from the cable part. The same option appears in **Set Conductor Properties > From Signal Defaults** when conductors are selected. **From the Bulk Editor:** In the **Signals** tab, each signal definition row has an **Apply** button that pushes defaults to all conductors using that signal across all nets. ### Syncing Signal Defaults to Conductors Signal defaults and conductor properties are deliberately decoupled — changing a signal's defaults does not automatically update existing conductors. This prevents unexpected changes to conductors that have been intentionally overridden. **The sync flow:** 1. **Define defaults** on the signal (wire color, stripe, gauge, voltage). 2. **Apply defaults** to conductors using one of the methods above. 3. **Override** individual conductors as needed — overrides are preserved. 4. **Re-sync** later if you change signal defaults by applying again. ### Out-of-Sync Indicators When a conductor's properties differ from its signal's defaults, a small dot appears next to the gauge, color, or stripe cell in conductor tables. The **Conductors** tab in the Bulk Editor also shows a dot on the tab label when any conductors are out of sync. **Clicking the dot** syncs that individual field from the signal default — a quick way to bring a single property back in line without re-applying all defaults. To sync everything at once, use the **Sync All** button in the Conductors tab toolbar, which applies signal defaults to all out-of-sync conductors across all nets. These indicators are informational — they help you spot conductors that haven't had defaults applied or that have been intentionally overridden. Leave them as-is if the override is intentional. --- ## Signal Badges On the plan canvas, signals appear as **colored badges** next to pins in expanded pin panels: - Badges auto-size to fit the signal name (up to 8 characters). - Longer names are truncated with an ellipsis. - The badge uses the signal's configured color as its background. - Badges export correctly to PDF, PNG, and SVG. --- ## Nets A **Net** is a group of electrically connected conductors, computed from routing. Assign a signal to a net and every conductor inherits it. ### Net Resolution Conductors belong to the same net when electrically connected through any of these mechanisms: | Connection Type | How It Works | |----------------|-------------| | **Routing connectivity** | Conductors sharing a continuous electrical path | | **Mated pins** | Pins connected by a mate relationship | | **Bridged pins** | Pins internally connected within a component | | **Splices** | Conductors joined at a branch point splice | | **Transitive chains** | Any combination of the above | ### Net Display Names Each net's display name — shown on conductors, in editors, and in exports — is computed in priority order: 1. **User-edited name** set in the Nets panel 2. **Auto-generated** from the net's signal and endpoints (e.g., `VDC_J1.Pin1`) 3. **Fallback** index label (e.g., `Net 4`) ### Nets Panel The **Nets panel** (right sidebar): - Lists every net with its display name. - **Inline editing** — Click a net to set a user-defined display name override. - **Signal assignment** via dropdown picker with search. - **Quick signal creation** with **+ New Signal**. - **Sync from signal** — Per-net sync button sets the display name from the signal. Toolbar **Sync All** button does this for every net with a signal. Duplicates are automatically suffixed to stay unique (e.g., `Power`, `Power_2`, `Power_3`). - **Conductor count** displayed per net. - **Click to highlight** — Click a net row to highlight all its conductor paths and connected pins on the canvas in cyan. Click again to clear. Useful for tracing which conductors belong to a net across the schematic. > **Tip:** You don't need to name every net. Name the ones that matter for clarity — power rails, communication buses, critical signals. Leave the rest to auto-generation. > **See also:** [Parts & BOM](/docs/plan/parts-and-bom) for assigning wire part numbers, contact part numbers, and managing the plan-level BOM. # Parts & BOM Source: https://splice-cad.com/docs/plan/parts-and-bom Using the Parts panel tabs, assigning wire and contact part numbers, managing the plan-level BOM, saving and loading BOMs from the cloud library. The plan maintains its own BOM. Connectors, cables, wires, contacts, coverings, jumpers, and branch point parts all reference BOM entries. Add parts from the library, create manually, import from templates, or load from the cloud BOM library. Quantities track automatically. --- ## Parts Panel The **Parts panel** (right sidebar) has three tabs: **BOM**, **Search**, and **Templates**. ### BOM Tab Lists every BOM entry **grouped by type** -- Components, Cables, Wires, Contacts, Coverings, Branch Point Parts, Device Groups, Other. ![BOM tab showing parts grouped by type with quantities and assignment summaries.](/plan/parts-and-bom/parts-tab-1.png) **Actions available on each BOM entry:** | Action | Description | |--------|-------------| | **Add to Plan** | Create new component nodes from the BOM entry. A quantity selector lets you add multiple at once. New nodes are auto-positioned on the canvas and assigned to the active page. | | **Assign** | Associate the entry with items in the plan. Target depends on entry type -- see below. | | **Edit** | Open the BOM Entry dialog to update MPN, manufacturer, specs, or notes. | | **Delete** | Remove the entry from the BOM and unlink it from all assigned items. | **Assign behavior by type:** | Entry Type | Assigns To | |------------|------------| | **Component / Splice / Other** | Component nodes and branch point parts -- toggle checkboxes to assign or unassign | | **Cable** | Cables in the plan -- toggle checkboxes to assign or unassign | | **Wire** | Conductors -- grouped by bundle with unassigned counts, plus "All matching" for gauge/color/stripe | | **Covering** | Bundle coverings and branch point parts -- toggle checkboxes to assign or unassign | Quantities and assignment summaries update automatically. ### BOM Overflow Menu The three-dot button in the BOM toolbar opens a menu with library and file operations: | Section | Action | Description | |---------|--------|-------------| | **Library** | **Save to Library** | Save the current BOM to the cloud library for reuse across projects | | | **Open from Library** | Browse and load saved BOMs from the library | | **Import / Export** | **Upload File** | Import BOM entries from a JSON or XLSX file | | | **Download BOM** | Export the current BOM as JSON or XLSX | > **See also:** [Export & Import](/docs/plan/export-and-import) for full details on the BOM Library, file formats, and append/replace behavior. ### Search Tab Search the parts database across three sub-tabs: | Sub-Tab | Searches | |---------|----------| | **Components** | Connectors, fuses, relays, circuit breakers, and other component parts. Includes a category/shape filter dropdown. | | **Cables** | Multi-conductor cable assemblies. | | **Wires** | Individual wire products by gauge, color, and conductor type. | Results show thumbnail, MPN, manufacturer, and key specs. Hover for full details. **From search results you can:** - **Add to BOM** -- adds the part. Existing entries (matched by database ID) are reused. - **Assign** -- adds to BOM and assigns to selected components. Only shown with a selection. ### Templates Tab Built-in connector templates with pre-configured pin counts, shapes, and specs. ![Templates tab with category filter showing Power Supply templates.](/plan/parts-and-bom/parts-tab-templates.png) Filter templates by name or category, then: - **BOM** — Add the template to the BOM only (no node created). - **Add** — Add to BOM and create a new component node on the canvas with pins and shape pre-configured from the template. --- ## Component Part Assignment Assign parts directly from component properties. ### Properties Panel The Properties panel header shows **MPN** and **Manufacturer**. The BOM assign button opens a picker: - All existing BOM entries (sorted by MPN) - **Search Database** — parts search inline - **No Assignment** — clears the assignment Assigning a database part auto-populates category, shape, and pin count from specs. ### Bulk Editor > Components The **Bulk Editor > Components** tab shows all components in a table. Expand rows for inline MPN assignment, categories, mating behavior, and pin counts. --- ## Cable Part Numbers Cables get one part number -- cores do not get separate wire PNs. ### Assigning Cable PNs Select a bundle with a cable to see it in the **Groupings** section. Each cable has a BOM assign button and inline **MPN**/**Manufacturer** fields. **Three ways to assign a cable PN:** 1. **BOM picker** — Click the assign button to choose from existing cable BOM entries, or select **No Assignment** to clear. 2. **Search Database** — From the BOM picker, search the cable catalog by MPN, manufacturer, or core count. Selecting a result creates a BOM entry and assigns it. 3. **Inline editing** — Type an MPN directly; a BOM entry is auto-created if needed. Cable PNs are also accessible in the **Bulk Editor > Bundles** tab, where the same Groupings section appears for each expanded bundle. ### Editing Cable Specs The Edit Part dialog supports editing cable core properties directly. Set per-core color, stripe, and AWG using the inline pickers. A **cross-section preview** updates live as you edit. Use the **Bulk edit row** ("All:") to apply the same value to every core at once. ![Edit Part dialog showing cable core editor with per-core color, stripe, AWG pickers and cross-section preview.](/plan/parts-and-bom/cable-add-part-to-bom.png) When a cable was loaded from the parts database and you modify its cores, a warning banner shows that specs have been modified from the source, with a **Reset** button to restore original values. Changing the **Conductors** count auto-generates or trims the cores list. Adding a core manually is also available via the **+** button. ### Cable Spec Sync After assigning a cable part with core specifications, the system validates conductor properties and shows mismatch banners in the Groupings section. See [Wire Groups & Cables: Cable Spec Sync](/docs/plan/wire-groups-and-cables#cable-spec-sync) for the full validation and sync workflow. --- ## Wire Part Numbers Wire PNs identify the physical wire product per conductor, tracked as BOM entries. ### Wire PN Table Select a bundle and switch to the **Wire PNs** tab in the Properties panel. Each row represents a conductor on the bundle: | Column | Description | |--------|-------------| | **Net** | The conductor's net display name | | **AWG** | Wire gauge | | **Color** | Wire insulation color and stripe | | **Search** | Opens the wire search popup | | **MPN** | Manufacturer part number (inline editable) | | **Mfr** | Manufacturer (inline editable) | | **Apply** | Bulk apply menu | ![Bulk apply menu showing options to apply wire PN to matching conductors in bundle or entire plan.](/plan/parts-and-bom/parts-search-wires.png) **Three ways to assign a wire PN:** 1. **Search popup** — Click search. Pre-filters by gauge, color, and stripe. Select a result to assign. 2. **Inline editing** — Type MPN and manufacturer directly. Changes save after a short debounce. 3. **Custom entry** — Enter a manual MPN and manufacturer in the search popup's custom entry section. ### Continuity Chain Propagation Assigning a wire PN propagates to all conductors in the same **continuity chain** -- ensuring the entire physical wire shares one part number. Propagation stops at splices (different physical wires). ### Bulk Wire PN Operations ![Wire PN search popup showing available wire MPNs filtered by gauge and color.](/plan/parts-and-bom/parts-assign-wire.png) Use the **Apply** menu on any row to apply a wire PN in bulk: | Option | Scope | |--------|-------| | **Apply to matching in this bundle** | All conductors on the current bundle with the same gauge and color | | **Apply to matching in entire plan** | All conductors across the plan with the same gauge and color | Multi-select rows with checkboxes (shift-click for range selection) to apply to specific conductors. ### Cable Cores Cable cores inherit their PN from the cable's BOM entry and cannot be assigned individually. --- ## Contact Part Numbers Contact PNs identify the terminal at each conductor endpoint (crimp pins, solder cups, IDC contacts). Assigned per-endpoint -- each end can differ. ### Contacts Table Select a component and switch to the **Contacts** tab in the Properties panel. Each row represents a conductor endpoint at that component: | Column | Description | |--------|-------------| | **Pin** | The pin label on the component | | **AWG** | Wire gauge of the conductor | | **Method** | Termination method (crimp, solder, IDC) | | **Contact** | Contact part picker | Unconnected pins appear faded. ![Contacts table showing all pins with crimp method and assigned contact parts.](/plan/parts-and-bom/parts-contacts.png) ### Contact Picker Click the contact chip on any row to open the picker. Options are shown in priority order: ![Contact picker showing From BOM, Compatible, and Custom Entry options with compatible contacts list.](/plan/parts-and-bom/parts-compat-conacts.png) 1. **From BOM** — Contact and terminal parts already in the plan BOM for quick reuse. 2. **Compatible Contacts** — Terminals compatible with the assigned connector part, filtered by wire AWG. Only appears when the component has a part assigned with known compatible terminals. 3. **Search All Terminals** — General terminal search across the parts database. 4. **Custom Entry** — Manually enter an MPN and manufacturer. Assigning a contact auto-sets termination to **crimp** if unset. ### Auto-Propagation by Gauge Assigning a contact or changing termination auto-applies to **all endpoints on the same component with the same gauge**. ### Bulk Contact Operations Use the **Apply** menu on any row: | Option | Scope | |--------|-------| | **Apply to this component** | All endpoints at this component with the same gauge | | **Apply to all matching components** | All endpoints on components with the same connector part and gauge | Multi-select with checkboxes for manual control. --- ## Bundle Coverings The **Coverings** section (Properties panel, bundle selected) manages protective layers and fasteners. ![Add Covering dropdown showing all available covering types.](/plan/parts-and-bom/parts-add-covering-to-bundle.png) Click **Add Covering** and choose a type: | Type | Description | |------|-------------| | **Heat Shrink** | Heat-shrink tubing | | **Sleeve** | Protective sleeve | | **Tubing** | Flexible tubing | | **Convoluted Tubing** | Split corrugated tubing | | **Braided Sleeve** | Braided protective sleeve | | **Spiral Wrap** | Spiral cable wrap | | **Cable Tie** | Cable ties or zip ties | | **Tape** | Harness tape | | **Grommet** | Pass-through grommets | | **Boot** | Connector boots | Each covering has MPN and Manufacturer fields. Tracked as **Covering** BOM entries. ![Bundle properties showing a Heat Shrink covering with part number and manufacturer assigned.](/plan/parts-and-bom/parts-bundle-assign-parts.png) --- ## Branch Point Parts The **Parts** section (Properties panel, branch point selected) manages junction hardware: | Part Type | Description | |-----------|-------------| | **Transition Boot** | Boots covering the junction where bundles meet | | **Clamp** | Clamps securing the junction point | Click **Add Part**, choose a type, and enter the MPN and manufacturer. --- ## Connector Accessories The **Accessories** tab (Properties panel, component selected -- next to Pins and Contacts) manages parts that attach to a connector but aren't pins or contacts. Click **Add Accessory** and choose a category: | Category | Description | |----------|-------------| | **Backshell** | Strain-relief / cable-clamp backshells (e.g. D-sub, circular) | | **Wedge Lock** | Secondary retainers (e.g. TE Deutsch DT-series) | | **Cavity Plug** | Sealing plugs for unused cavities | | **Seal** | Wire/interface seals | | **Strain Relief** | Strain-relief hardware | | **Dust Cap** | Protective caps | | **Coupling Ring** | Coupling/jam nuts | | **Mounting Hardware** | Jackscrews, brackets, fasteners | You can also type a **custom category** name if none of the built-ins fit. Each accessory has MPN, Manufacturer, and Description fields, and is tracked as an **Accessory** BOM entry. ### Designator Each accessory gets an auto designator combining the parent connector and category -- e.g. `X2-BS` for a backshell on `X2`. Edit the **Designator** field to override it; click the **Auto** button to revert. ### Quantity & cavity sync Set the quantity manually, or use the empty-cavity helpers -- ideal for cavity plugs: - **Set to empty (N)** -- one click sets the quantity to the connector's current number of empty cavities (positions with no wire, lead, or seated contact). - **Sync** -- keeps the quantity matched to the empty-cavity count as you wire and unwire the connector. Switch back to **Manual** to fix the number. ### In the BOM Accessories roll up into the BOM (and all exports) under their parent connector's designator, consolidated by part across identical connectors -- e.g. one row `X2-BS; X4-BS`, qty 2. The Parts panel's **Accessories** section lists each one with an **On:** chip list showing which connectors it's assigned to, and an **add-to-other-components** button to copy the accessory onto more connectors at once. ### Reuse, assign & apply - **Saved with the BOM library.** Accessory parts (those with an MPN) are first-class BOM entries, so [saving a BOM to the library](#bom-library) includes them and reusing it in another project brings them along. As with any reused part, they land in the library to assign -- the *which-connector* attachment is plan-specific. - **Add from the BOM.** A connector-accessory entry in the Parts list has an **assign menu** ("Add to connectors") -- tick the connectors to drop that accessory onto. - **Apply to other connectors.** In a connector's Accessories tab, use **Select all / Clear** to choose accessories, then **Apply to…** to copy them (the selected ones, or all) onto other connectors in one step. Copy/paste or duplicate of a connector also carries its accessories. --- ## Subassembly Library Save plan elements as reusable templates. Insert into any plan to reuse circuit patterns. See [Terminology: Subassembly](/docs/plan/terminology#subassembly) for the save/insert workflow. ### BOM Behavior on Insert When a subassembly is inserted, its BOM entries are merged with the plan's existing BOM. Matching entries (same MPN and manufacturer) are reused, not duplicated. Signal definitions are deduplicated the same way. Multiple inserts share BOM entries -- quantities update automatically. --- ## BOM Management ### Plan-Level BOM - **Add entries** — Click **Add Manual** to create an entry (type, MPN, manufacturer, specs, datasheet URL, image URL, notes). - **Edit entries** — Click edit on any row to update. - **Delete entries** — Remove unneeded entries. - **Auto-computed quantities** — Quantities are counted automatically: - **Component entries** — Count of nodes assigned to the entry. - **Wire entries** — Count of conductors referencing that wire PN. - **Contact entries** — Count of endpoints referencing that contact PN. Each conductor can contribute up to two (one per end). ### BOM Entry Types | Type | Used For | |------|----------| | **Connector** | Connectors, fuses, relays, and other component parts | | **Cable** | Multi-conductor cable assemblies | | **Wire** | Individual wire products | | **Terminal** | Terminal parts | | **Contact** | Contact/crimp pins | | **Covering** | Heat shrink, sleeves, braided sleeves, cable ties, tape, etc. | | **Accessory** | Connector accessories: backshells, wedge locks, cavity plugs, seals, etc. | | **Splice** | Splice hardware | | **Other** | Miscellaneous items | ### BOM Entry Deduplication Duplicates are prevented automatically: 1. If a BOM entry already exists for the same database part and type -- reused. 2. If the MPN matches an existing entry (case-insensitive) of the same type -- reused. 3. Otherwise, a new entry is created. ### BOM Library Save your BOM to a cloud library for reuse across projects, or load a saved BOM. Access from the **BOM overflow menu**. **Append** merges with duplicate detection. **Replace** swaps the entire BOM, preserving assignments where MPN + manufacturer match. See [Export & Import: BOM Library](/docs/plan/export-and-import#bom-library). ### Pushing BOM to Assemblies Choose how the assembly BOM relates to the plan BOM: | Mode | Behavior | |------|----------| | **Linked** | BOM stays in sync with the plan. Changes propagate automatically. | | **Independent** | Assembly gets its own BOM copy. Plan changes don't affect it. | # Assembly Generation & Sync Source: https://splice-cad.com/docs/plan/assembly-generation Generating assemblies from plan selections, understanding what gets converted, BOM linkage modes, syncing changes, and navigating between plan and assemblies. Generate assemblies -- harness schematics built from selected plan elements. > **Prerequisites:** assembly generation requires (1) a signed-in account and (2) a project saved to that account. Public examples opened from the docs (e.g. via "Open in Project Editor") load in read-only preview mode — to generate an assembly from one, use **Project menu → Save As** to copy it to your account first, then come back here. Without these, **Generate Assembly** returns a permission error. --- ## Generating an Assembly 1. **Select elements** on the plan canvas — components, bundles, and branch points. 2. Open the **Summary panel**. 3. Click **Generate Assembly**. 4. Name the assembly. The assembly opens in Harness Builder with schematic, layout, BOM, and export. > **Tip:** Generate multiple assemblies from different subsets of the same plan. --- ## What Gets Converted | Plan Element | Assembly Element | |-------------|-----------------| | **Component** | Connector | | **Bundle** | Bundle segment | | **Conductor** | Wire | | **Splice** | Junction part | | **Wire Group** | Wire group metadata (twist/bundle method, members) | | **Cable** | Cable grouping with core mappings and BOM entry | | **Pass-through Branch Point** | Visual marker (no BOM entry) | All properties carry over -- pins (with their functions), conductor properties, mates, and signals. Each wire/core carries a single signal, and connector pin functions remain editable in the generated harness. --- ## BOM Linkage Choose how the assembly BOM relates to the plan BOM. See [Parts & BOM: Pushing BOM to Assemblies](/docs/plan/parts-and-bom#pushing-bom-to-assemblies) for details on Linked vs Independent modes. --- ## Syncing Changes Push plan updates to assemblies without regenerating. ### When to Sync - Components added or removed from the plan selection. - Conductor properties changed (gauge, color, signal). - Pin configurations updated. - New conductors or bundles added. ### Sync Workflow 1. Open the assembly. 2. The sync dialog previews structural and property diffs. 3. Review and confirm. ### Conflict Resolution When plan and assembly have diverged, the sync dialog highlights conflicts. Choose plan or assembly values per property. --- ## Navigating Between Plan and Assemblies ### From Plan to Assembly Open the **Summary panel** to see all assemblies. Click an assembly name to open it. ### From Assembly to Plan Click **Return to Plan** in the assembly's navigation bar. Position and zoom state are preserved across navigation. # Convert Assembly to Project Source: https://splice-cad.com/docs/plan/convert-assembly-to-project Convert a standalone assembly into a new project with a plan. Migrate legacy harness designs to the plan-based workflow for better organization and collaboration. Convert a standalone assembly (built without a plan) into a full project. The conversion creates a plan from your assembly data, which becomes the source of truth. --- ## When to Convert Convert a standalone assembly when you want to: - **Organize with projects** — group related assemblies under a single project. - **Use the plan canvas** — visualize system-level topology with components, bundles, and branch points. - **Generate additional assemblies** — create multiple harness variants from the same plan. - **Collaborate** — share the project with team members. > **Tip:** Conversion is one-way. The new plan is independent — there is no ongoing connection back to the original assembly. --- ## How to Convert 1. Open the standalone assembly in the Harness Builder. 2. Click the **New** button in the toolbar (the + icon). 3. Select **Convert to Project**. 4. Enter a project name and optional description. 5. Click **Convert**. The conversion runs and opens the new plan. --- ## What Gets Converted The conversion maps assembly elements to plan elements: | Assembly Element | Plan Element | |-----------------|-------------| | **Connector** (BOM entry) | Component node + BOM entry + pins | | **Splice** (category = splice) | Branch point node + conductor splice | | **Wire** (connection) | Conductor with endpoints, gauge, color, stripe | | **Cable** (BOM + core connections) | Cable with core mappings + conductors per core | | **Twisted pair** (twisted_pair_id) | Wire group (method: twisted) | | **Bundle properties** (length, tolerance) | Bundle length and tolerance fields | | **Bundle accessories** (heat shrink, sleeve, etc.) | Bundle accessories on bundles | | **Signal** (one per wire/core) | Net entries with display names | ### Wire Properties Gauge, color, and stripe are preserved, including overrides. Color names convert to hex. ### Topology Topology is inferred from wiring: - Wires between the same two connectors are grouped into a single **bundle**. - Cables connecting three or more connectors create **branch points** at the breakout. - Splices become **branch points** with conductor splice data. - Flying leads become **flying lead components** with their termination properties (tinned, bare, heat shrink). --- ## After Conversion Once the plan is created: - **Review the layout** -- components inherit assembly positions. Rearrange as needed. - **Assign parts** -- replace any placeholders from the BOM panel. - **Add signals** -- nets are created from wire labels but signals are not assigned. - **Generate assemblies** -- select plan elements to generate new assemblies. --- ## Conversion Warnings The conversion may report warnings for edge cases: | Warning | Meaning | |---------|---------| | **Topology inference** | No bundle segment data found — topology was inferred from connections (expected for manually-built assemblies). | | **Unresolved connector** | A connection references a connector not found in the BOM. | | **Unresolved pin** | A wire references a pin number that exceeds the connector's pin count. | | **Cable core mismatch** | A cable's core connections couldn't be mapped to a bundle. | These are informational -- conversion still completes. Review the plan to verify. # Export & Import Source: https://splice-cad.com/docs/plan/export-and-import Exporting plan drawings and data to PDF, PNG, SVG, and Excel. Importing from Excel. Saving and loading BOMs from the cloud library. Export plan drawings and data in multiple formats. Import from Excel for round-tripping. Save BOMs to a cloud library for reuse. > **Automated exports?** Link the plan to a GitHub repo and every push will auto-render the same PDFs, XLSX, CSVs, and ICDs as workflow artifacts. See [GitHub Integration](/docs/harness/github-integration). --- ## Plan Drawing Export Export the plan canvas from the plan toolbar. | Format | Description | |--------|-------------| | **PNG** | High-resolution raster image (4x oversample) | | **SVG** | Scalable vector format | | **PDF** | Single-page PDF of the current plan page | | **All Pages PDF** | Every plan page exported to a multi-page PDF | Exports convert labels and badges to native SVG for compatibility. UI elements (selection handles, grid, toolbars) are excluded. --- ## Plan BOM & Cut List Export From the plan toolbar, download the plan-level BOM or cut list: ### BOM | Format | Contents | |--------|----------| | **CSV** | Flat table with designators, MPN, manufacturer, quantity, gauge, color, length, terminals, signal | | **XLSX** | Same data in Excel format | | **PDF** | Formatted BOM document with summary | ### Cut List | Format | Contents | |--------|----------| | **CSV** | Wire/cable entries with quantity, gauge, color, total length | | **XLSX** | Detailed cut list with per-conductor lengths and bundle information | | **PDF** | Formatted cut list with connection table data | --- ## Interface Control Document (ICD) Export Export a complete specification of every connector interface, pin assignment, signal, wire property, and termination as a multi-sheet Excel workbook or PDF. Useful for manufacturing, engineering review, or tool interop. ### Export Formats | Format | Description | |--------|-------------| | **Excel (.xlsx)** | Multi-sheet workbook with selectable sheets | | **PDF** | Formatted multi-section document with all selected tables | ### Sheet Settings Choose sheets via **ICD → Sheet Settings** in the toolbar. Selection persists across sessions. | Category | Sheets | |----------|--------| | **Engineering** | BOM, Connection Table, Wire List | | **Manufacturing** | Cut List, Termination Schedule, Splice Schedule, Bundle Schedule, Covering Schedule, Topology Diagram, Topology Table | | **QC** | Continuity Table | By default, the three Engineering sheets are enabled. Manufacturing and QC sheets are opt-in. --- ### BOM Sheet A flat bill of materials with one row per unique part, consolidated by MPN + manufacturer. Wire entries are further grouped by gauge and color. | Column | Description | |--------|-------------| | **Designator(s)** | Component labels using this entry (e.g., "J1; J3") | | **Type** | Entry type (connector, wire, contact, cable, splice, covering, assembly) | | **MPN** | Manufacturer part number | | **Manufacturer** | Manufacturer name | | **Description** | Part description | | **Quantity** | Count | | **Unit** | Unit of measure (ea, m, ft) | | **AWG** / **mm²** | Wire gauge (column name matches user preference) | | **Color** | Wire/conductor color (DIN 47100 / SAE J1128 abbreviation) | | **Positions** | Connector pin count | **Example:** | Designator(s) | Type | MPN | Manufacturer | Description | Qty | Unit | AWG | Color | Pos | |---------------|------|-----|-------------|-------------|-----|------|-----|-------|-----| | J1; J3 | connector | 206802-2 | TE Connectivity | 37-pos sealed header | 2 | ea | | | 37 | | W1; W2; W3 | wire | WR-22-BU | Generic | 22 AWG blue | 3 | ea | 22 | BU | | | | contact | 0430300051 | Molex | Crimp terminal 20-24 AWG | 12 | ea | | | | | CB1-Cable | cable | SV-GPS-2020 | Dynon | GPS cable assembly | 1 | ea | | | | ### Connection Table Sheet Pin-level wiring data organized by connector. Connectors within device groups are grouped under their device group header. In the PDF, alternating connector blocks are shaded with distinct gray levels for visual separation. | Column | Description | |--------|-------------| | **Pin** | Pin number/position | | **Label** | Pin label | | **Function** | Pin function | | **Detail** | Pin detail text | | **Signal** | Signal name | | **Connected To** | Destination connector and pin (follows through splices). Flying leads show termination type, e.g., "FL1 [Tinned]" | | **Mate Pin** | Corresponding pin on the mating connector (from mate relationships with pin mappings) | | **Via** | Intermediate branch points and splices | | **Length** | Wire length (formatted per user length unit preference) | | **Wire Diam** | Wire gauge (e.g., "22 AWG") | | **Color** | Wire insulation color (DIN / SAE abbreviation, e.g., "BU", "LB") | | **Stripe** | Wire stripe color (DIN / SAE abbreviation) | | **Term Method** | Termination method (crimp, solder, IDC) | | **Contact PN** | Contact part number | | **Lead Gauge** | Pigtail lead wire gauge (when present) | | **Lead Color** | Pigtail lead color | | **Lead Stripe** | Pigtail lead stripe color | | **Lead Length** | Pigtail lead length | | **Lead Wire MPN** | Pigtail lead wire part number | | **Jumper** | Jumper bar reference (e.g., "JB1: X7.1, X6.3") — shows which positions are bridged by a jumper | **Example (connector J1, mate P1):** | Pin | Label | Function | Detail | Signal | Connected To | Mate Pin | Via | Length | Wire Diam | Color | Stripe | Term Method | Contact PN | |-----|-------|----------|--------|--------|-------------|----------|-----|--------|-----------|-------|--------|-------------|------------| | 1 | 1 | CAN_H | | CAN_H | J2.1 | P1.1 | BP1 | 400 mm | 22 AWG | BU | | crimp | 0430300051 | | 2 | 2 | CAN_L | | CAN_L | J2.2 | P1.2 | BP1 | 400 mm | 22 AWG | BU | WH | crimp | 0430300051 | | 3 | 3 | GND | | GND | SP1 (J3.1, J4.1) | P1.3 | BP1, SP1 | 200 mm | 20 AWG | BK | | solder | | | 4 | 4 | NC | | | | P1.4 | | | | | | | | ### Wire List Sheet One row per conductor with complete wire properties: | Column | Description | |--------|-------------| | **Wire ID** | Wire/conductor display name | | **From** | Source connector designator (splice designator shown for spliced endpoints) | | **From Pin** | Source pin label | | **To** | Destination connector designator | | **To Pin** | Destination pin label | | **Signal** | Signal name | | **Length** | Total wire length (sum of bundle lengths along path, formatted per user preference) | | **Wire Diam** | Wire gauge (e.g., "22 AWG") | | **Color** | Wire insulation color (DIN / SAE abbreviation) | | **Stripe** | Wire stripe color (DIN / SAE abbreviation) | | **Wire PN** | Wire part number from BOM | | **Source** | "Cut from stock" or "Included with [component]" | | **Assembly** | Assembly ref name (if assigned) | **Example:** | Wire ID | From | From Pin | To | To Pin | Signal | Length | Wire Diam | Color | Stripe | Wire PN | Source | Assembly | |---------|------|----------|----|--------|--------|--------|-----------|-------|--------|---------|--------|----------| | CAN_H | J1 | 1 | J2 | 1 | CAN_H | 400 mm | 22 AWG | BU | | WR-22-BU | Cut from stock | | | CAN_L | J1 | 2 | J2 | 2 | CAN_L | 400 mm | 22 AWG | BU | WH | WR-22-BUWH | Cut from stock | | | PWR_12V | BAT1 | 1 | SP1 | | PWR_12V | 200 mm | 18 AWG | RD | | | Cut from stock | | | GPS_TX | P-GPS | 3 | HDX | 15 | GPS_TX | 600 mm | 24 AWG | GN | | | Included with P-GPS | | ### Cut List Sheet Wire preparation list — one row per unique wire type (grouped by PN + gauge + color + stripe), with all individual cut lengths listed. | Column | Description | |--------|-------------| | **Wire PN** | Wire part number | | **Manufacturer** | Manufacturer name | | **Gauge** | Wire gauge | | **Color** | Wire color (DIN / SAE abbreviation) | | **Stripe** | Stripe color | | **Qty** | Total number of pieces to cut | | **Total Length** | Sum of all cut lengths | | **Cuts** | Individual cut length breakdown (e.g., "2x 300mm, 1x 500mm") | | **Designators** | Wire/conductor display names | **Example:** | Wire PN | Manufacturer | Gauge | Color | Stripe | Qty | Total Length | Cuts | Designators | |---------|-------------|-------|-------|--------|-----|-------------|------|-------------| | WR-22-BU | Generic | 22 AWG | BU | | 3 | 1200 mm | 2x 400 mm, 1x 400 mm | CAN_H, CAN_L, SENS1 | | WR-18-RD | Generic | 18 AWG | RD | | 2 | 700 mm | 1x 200 mm, 1x 500 mm | PWR_12V, PWR_AUX | | Unassigned | | 20 AWG | BK | | 4 | 800 mm | 4x 200 mm | GND_1, GND_2, GND_3, GND_4 | ### Termination Schedule Sheet One row per crimp/solder/IDC operation — the work order for the termination station. | Column | Description | |--------|-------------| | **Connector** | Connector designator | | **Pin** | Pin label | | **Wire ID** | Wire display name | | **Wire Gauge** | Wire gauge | | **Wire Color** | Color + stripe | | **Method** | Termination method (crimp, solder, IDC) | | **Contact PN** | Contact part number | | **Contact Description** | Contact description | Only rows where a termination method is assigned appear. Sorted by connector then pin. **Example:** | Connector | Pin | Wire ID | Wire Gauge | Wire Color | Method | Contact PN | Contact Description | |-----------|-----|---------|-----------|------------|--------|------------|-------------------| | J1 | 1 | CAN_H | 22 AWG | BU | crimp | 0430300051 | Crimp terminal 20-24 AWG | | J1 | 2 | CAN_L | 22 AWG | BU/WH | crimp | 0430300051 | Crimp terminal 20-24 AWG | | J1 | 3 | GND | 20 AWG | BK | solder | | | | J2 | 1 | CAN_H | 22 AWG | BU | crimp | 0430300051 | Crimp terminal 20-24 AWG | ### Splice Schedule Sheet Every splice point with method, location, and connected wires. | Column | Description | |--------|-------------| | **Splice ID** | Splice designator (SP1, SP2, etc.) | | **Location** | Branch point label | | **Splice Type** | Method (butt, Y, ultrasonic, solder, crimp, tap) | | **Splice Part** | Splice part name | | **Wire Count** | Number of conductors joined | | **Wires** | Wire display names | | **Wire Gauges** | Conductor gauges | **Example:** | Splice ID | Location | Splice Type | Splice Part | Wire Count | Wires | Wire Gauges | |-----------|----------|------------|-------------|-----------|-------|-------------| | SP1 | BP2 | butt | BSN-26-18 | 3 | PWR_12V, CB1_OUT, CB2_IN | 18 AWG | | SP2 | BP4 | Y | | 2 | GND_1, GND_2 | 20 AWG | ### Bundle Schedule Sheet Wire group and cable assignments in two sections. **Wire Groups:** | Column | Description | |--------|-------------| | **Group Name** | Wire group name | | **Method** | Twisted / Bundled | | **Twist Pitch** | Twist pitch in mm (for twisted pairs) | | **Bundle** | Source and target node labels | | **Wire Count** | Number of conductors | | **Wires** | Wire display names | | **Gauges** | Conductor gauges | | **Colors** | Conductor colors | **Example:** | Group Name | Method | Twist Pitch | Bundle | Wire Count | Wires | Gauges | Colors | |-----------|--------|------------|--------|-----------|-------|--------|--------| | CAN Bus | Twisted | 33 | BP1 → BP2 | 2 | CAN_H, CAN_L | 22 AWG | BU, BU | | Sensor Pair | Twisted | 25 | BP3 → J4 | 2 | SENS_A, SENS_B | 24 AWG | GN, WH | **Cables:** | Column | Description | |--------|-------------| | **Cable Name** | Cable name | | **Cable PN** | BOM part number | | **Bundle** | Source and target labels | | **Core Count** | Number of cores | | **Core Assignments** | Core-to-conductor mapping | | **Shielded** | Yes/No | | **Shield Drain** | Shield drain conductor name | **Example:** | Cable Name | Cable PN | Bundle | Core Count | Core Assignments | Shielded | Shield Drain | |-----------|---------|--------|-----------|-----------------|----------|-------------| | GPS Cable | SV-GPS-2020 | BP5 → P-GPS | 4 | Core 1: GPS_TX; Core 2: GPS_RX; Core 3: GPS_PWR; Core 4: GPS_GND | Yes | GPS_SHLD | | ADSB Cable | SV-ADSB-472 | BP5 → P-ADSB | 3 | Core 1: ADSB_A; Core 2: ADSB_B; Core 3: ADSB_GND | No | | ### Covering Schedule Sheet All accessories (heat shrink, tape, boots, sleeves, ties, grommets) with placement along bundles, plus branch point parts. | Column | Description | |--------|-------------| | **Type** | Accessory type | | **Part Number** | Part number | | **Manufacturer** | Manufacturer | | **Bundle** | Source and target labels | | **Position** | Position in mm along bundle | | **Datum** | Reference connector (left/right) | | **Length** | Covering length in mm | **Example:** | Type | Part Number | Manufacturer | Bundle | Position | Datum | Length | |------|-----------|-------------|--------|----------|-------|--------| | Heat Shrink | HS-3/16 | Raychem | J1 → BP1 | 10 | left | 25 | | Sleeve | DR-25 | Raychem | BP1 → BP2 | | | 150 | | Boot | 202K142 | Raychem | At BP3 | | | | ### Topology Diagram (PDF only) Formboard-style diagram of the physical harness. Trunk runs horizontally with components tapping off above and below, lengths drawn to scale. Each sub-harness renders separately. Includes a scale annotation with percentage, 1:1 size, and recommended paper size. ### Topology Table Sheet One row per bundle showing node-to-node physical structure. | Column | Description | |--------|-------------| | **From** | Source node label | | **To** | Target node label | | **Length** | Bundle length | | **Tolerance** | Length tolerance | | **Wires** | Conductor count | | **Cable** | Cable name (if assigned) | | **Accessories** | Accessory summary | **Example:** | From | To | Length | Tolerance | Wires | Cable | Accessories | |------|-----|--------|-----------|-------|-------|-------------| | BP1 | BP2 | 150 mm | ±10 | 12 | | Sleeve | | BP2 | J1 | 200 mm | | 6 | | Heat Shrink | | BP3 | P-GPS | 200 mm | | 4 | SV-GPS-2020 | | | BP4 | RT17 | 100 mm | | 2 | | | | BP8 | BAT2 | 200 mm | +5/-10 | 2 | | Boot | ### Continuity Table Sheet Pin-to-pin expected connections for QC verification with a multimeter. | Column | Description | |--------|-------------| | **From** | Source connector.pin | | **To** | Destination connector.pin | | **Net** | Net display name | | **Expected** | PASS | | **Notes** | Via splice path (if not direct) | Spliced nets are expanded to show all transitive pin-to-pin continuity paths. **Example:** | From | To | Net | Expected | Notes | |------|-----|-----|----------|-------| | J1.1 | J2.1 | CAN_H | PASS | | | J1.2 | J2.2 | CAN_L | PASS | | | J1.3 | J3.1 | GND | PASS | Via splice SP1 | | J1.3 | J4.1 | GND | PASS | Via splice SP1 | | BAT1.1 | CB1.1 | PWR_12V | PASS | | | CB1.2 | HDX.1 | PWR_12V | PASS | Via splice SP2 | --- ## Plan Excel Import (ICD Round-Trip) Import pin properties and wire data from Excel to complete the ICD round-trip. Export, review/annotate in Excel, re-import. Diffs are highlighted before applying. ### Import Flow 1. Upload an XLSX file from the plan toolbar 2. Splice parses the **Connection Table** and **Wire List** sheets 3. A preview dialog shows matched and unmatched items with diffs highlighted 4. Choose which changes to apply: | Option | Description | |--------|-------------| | **Pin properties** | Update pin functions and detail text | | **Terminations** | Apply termination methods (crimp, solder, IDC) and contact PNs | | **Wire properties** | Update gauge, color, stripe from the Wire List | | **Create missing connectors** | Auto-create component nodes for unmatched connectors | | **Create missing wires** | Auto-create conductors for unmatched wires | 5. All changes are applied as a single undoable command (Ctrl+Z to revert) ### Matching Logic - Connectors are matched by **label** (e.g., "X1", "J2") — case-insensitive - Wires are matched by **endpoint connector + pin** pairs - Unmatched items are listed separately for review before importing --- ## Clipboard (Copy & Paste) Copy/paste pin tables, wire lists, and BOM data as TSV, compatible with Excel and Google Sheets. Edit in a spreadsheet and paste back. ### Copying Pin Tables Copy a single connector's pin table or all connectors at once. | Location | What it copies | |----------|---------------| | **Right-click a component** on the plan canvas → Copy Pin Table | Single connector | | **Component properties panel** → copy button (top header) | Single connector | | **Bulk Edit → Components tab** → copy button on each component header | Single connector | | **Bulk Edit → Components tab** → copy button in toolbar | All filtered connectors | **Keyboard shortcut:** `Ctrl+Shift+C` (with a component selected on the canvas) Copied data includes connector metadata rows followed by the pin table. Example:
DesJ1
MPNHX040-6P
MfrSumitomo
NameThrottle Pedal
MateHX040-6S
Category
Shaperectangular
PinLabelFunctionDetailSignalConnected ToMate PinViaLengthWire DiamColorStripeTerm MethodContact PNLead GaugeLead ColorLead StripeLead LengthLead Wire MPN
11GNDGND_J1.1J2.120 AWGyellowbluecrimp043030005122 AWGyellow150 mm
22APP20-5VAPP2_J1.2ECU.45BP120 AWGbrownbluecrimp0430300051
33Vref1Vref_J1.3ECU.4820 AWGwhitegreencrimp0430300051
44GND
55APP10-5VAPP1_J1.5ECU.47BP120 AWGwhitebluecrimp0430300051
66Vref2
### Pasting Pin Data Paste data onto a connector to update its properties. | Location | Action | |----------|--------| | **Right-click a component** → Paste Pin Data | Applies to the right-clicked component | | **Component properties panel** → paste button (top header) | Applies to the displayed component | | **Bulk Edit → Components tab** → paste button on component header | Applies to that component | **Keyboard shortcut:** `Ctrl+Shift+V` (with a component selected on the canvas) Applied fields (edit in Excel and paste back): | Field | Editable | Paste behavior | |-------|:--------:|----------------| | Des | Yes | Updates connector designator | | Name | Yes | Updates connector name | | Category | Yes | Updates connector category | | Shape | Yes | Updates connector shape | | MPN / Mfr / Mate | — | Informational only (not applied) | | Pin Label | Yes | Updates pin labels (matched by row position) | | Function | Yes | Updates pin function | | Detail | Yes | Updates pin detail/notes | | Signal | — | Informational only | | Connected To | — | Informational only | | Mate Pin | — | Informational only | | Via | — | Informational only | | Length | — | Informational only | | Wire Diam | Yes | Updates wire gauge (accepts "22", "22 AWG", "0.34mm2") | | Color | Yes | Updates wire color (accepts names, DIN abbreviations: BK, WH, RD, BU, etc., plus SAE J1128 light/dark codes: LB, DB, LG, DG, TN) | | Stripe | Yes | Updates stripe color | | Term Method | Yes | Updates termination method — must be `crimp`, `solder`, or `idc` (error shown if invalid) | | Contact PN | Yes | Finds or creates a contact BOM entry by MPN | | Lead Gauge | Yes | Updates pigtail lead gauge | | Lead Color | Yes | Updates pigtail lead color | | Lead Stripe | Yes | Updates pigtail lead stripe | | Lead Length | Yes | Updates pigtail lead length | | Lead Wire MPN | Yes | Updates pigtail lead wire MPN | All paste changes are wrapped in a single undoable command (Ctrl+Z to revert). ### Copying the Wire List From the **Bulk Edit → Bundles tab**, use the copy button in the toolbar to copy the full wire list. Example: | Wire ID | From | From Pin | To | To Pin | Signal | Length | Wire Diam | Color | Stripe | Wire PN | Source | Assembly | |---------|------|----------|----|--------|--------|--------|-----------|-------|--------|---------|--------|----------| | GND_J1.1 | J1 | 1 | J2 | 1 | GND_J1.1 | 400 mm | 20 AWG | YE | BU | | Cut from stock | | | APP2_J1.2 | ECU | 45 | J1 | 2 | APP2_J1.2 | 600 mm | 20 AWG | BN | BU | WR-20-BN | Cut from stock | | | CAN_H | X4 | 1 | X5 | 1 | CAN_H | 300 mm | 22 AWG | BU | | WR-22-BU | Cut from stock | Main | ### Copying the BOM From the **Parts panel → BOM tab**, use the copy button in the toolbar. Example: | Type | MPN | Manufacturer | Description | Category | Shape | |------|-----|-------------|-------------|----------|-------| | connector | HX040-6P | Sumitomo | 6-pin sealed header | | rectangular | | connector | HX040-6S | Sumitomo | 6-pin sealed plug | | rectangular | | wire | WR-20-BN | Generic | 20 AWG brown | | | | contact | 0430300051 | Molex | Crimp terminal 20-24 AWG | | | ### Multi-Selection Editing Changing a property on any selected pin or conductor applies to all selected items. | Context | Select with | Bulk-editable properties | |---------|------------|------------------------| | **Pin tables** (Component Properties, Bulk Edit Components) | Checkboxes, Shift+click | Gauge, color, stripe, function | | **Conductor tables** (Bundle Properties, Bulk Edit Bundles) | Checkboxes, Shift+click | Gauge, color, stripe | | **Wire PN table** | Checkboxes, Shift+click | MPN, manufacturer, search result | Pin labels and connection endpoints are always per-pin (not bulk-editable). --- ## BOM Library Save, browse, and load BOMs across projects via the **BOM tab overflow menu** in the Parts panel. ### Saving to the Library 1. Open the BOM tab overflow menu and select **Save to Library** 2. Choose a mode: | Mode | Description | |------|-------------| | **Save as new** | Creates a new saved BOM in the library | | **Update existing** | Overwrites the entries of a previously saved BOM — select it from the dropdown | 3. Set a name, optional description, and visibility (Private or Public) 4. Click **Save** Public BOMs are visible to all users. Private BOMs are only visible to you. ### Browsing the Library 1. Open the BOM tab overflow menu and select **Open from Library** 2. Switch between **My BOMs** and **Public** tabs 3. Search by name using the search bar 4. Select a BOM to preview entries -- type, MPN, specs, manufacturer 5. Use the checkboxes to select multiple BOMs for bulk deletion **Actions:** | Action | Description | |--------|-------------| | **Load BOM** | Import the selected BOM's entries into your current plan | | **Download** | Download as JSON or XLSX | | **Delete** | Delete selected BOMs (with confirmation dialog) | Results are paginated. ### Loading a BOM Choose how to merge with the current BOM: | Mode | Behavior | |------|----------| | **Append** | Adds new entries alongside existing ones. Duplicates (matched by MPN + manufacturer) are detected — you can skip, replace in-place, or keep both. Replacing in-place preserves existing component, cable, and wire assignments. | | **Replace** | Swaps the entire BOM. Part assignments are **preserved** for entries where the MPN and manufacturer match between old and new. Assignments to entries with no match in the new BOM are cleared. | All import operations are fully undoable with Ctrl+Z. --- ## BOM File Import / Export Exchange BOMs as files. ### Download BOM From the BOM tab overflow menu: | Format | Description | |--------|-------------| | **JSON** | Portable `splice-bom-v1` format — preserves all entry data including specs, notes, pigtail leads, and part references | | **XLSX** | Spreadsheet with Type, MPN, Manufacturer, Description, and specification columns | ### Upload BOM 1. Select **Upload File** from the overflow menu 2. Choose a `.json` or `.xlsx` file 3. Review parsed entries and any validation warnings 4. Select **Append** or **Replace** mode 5. Resolve duplicates if appending JSON preserves complex spec data (pigtail leads, cable endpoints, IDC contacts) that XLSX cannot fully represent. XLSX import recognizes flexible headers ("Part Number", "MPN", "Mfg", "AWG", "Pin Count"). # Simple Cable Source: https://splice-cad.com/docs/plan/simple-cable Build a simple 4-conductor cable between two Molex Microfit connectors, assign parts, generate an assembly, then add a cable grouping and PCB mate. Open in Project Editor → Build a 4-conductor cable between two Molex Microfit 4-pin connectors. This walkthrough covers the full Project Mode workflow: placing components, bulk connecting pins, defining signals, assigning parts, generating an assembly, adding a cable grouping with sync, and documenting a PCB header mate. --- ## Setup ### Layout View ![Empty plan canvas with project name 'Simple Cable' in the toolbar. Layout/Schematic toggle visible in the bottom toolbar with Layout active.](/plan/simple-cable/simple-cable-layout.png) The plan has two views of the same data. **Layout** shows a compact physical topology — components as blocks, conductors grouped into bundles. **Schematic** expands components to reveal individual pins and traces each conductor as a separate path. You can place components, make connections, and edit properties in either view. Start in Layout. ### Open Panels ![All panels open. Left panel showing project structure with Components, Branch Points, and Bundles sections. Right panel showing Bulk Editor with Components tab.](/plan/simple-cable/simple-cable-layout-with-panels.png) Open the left panel to see the project structure — Assemblies, Components, Branch Points, and Bundles. Open the right panel for Properties, Bulk Editor, Nets, and Parts tabs. --- ## Add Components ### Place First Component Click **+** in the bottom toolbar to add a component. Select it and set the pin count to **4** in the Properties panel. ### Configure via Bulk Editor ![Bulk Editor open with Components tab active. X1 and X2 visible in the list — both set to Rectangular shape, 4 pins, Conn category.](/plan/simple-cable/simple-cable-bulk-edit.png) You can also set pin count via **Bulk Editor > Components** — useful when configuring multiple components at once. ### Add Second Component ![Two 4-pin components on the canvas — X1 on the left, X2 on the right, connected by a bundle showing a count badge of 4.](/plan/simple-cable/simple-cable-bundle.png) Add a second 4-pin component. Both represent Molex Microfit 4-pin connectors — parts will be assigned later. --- ## Bulk Connect ### Wire Pins with 1:1 Mapping ![Bulk Connect dialog showing X1 (4) to X2 (4). Wire color set to black, AWG 22. 1:1 pattern applied — all 4 diagonal cells highlighted. '4 connection(s) to create' at bottom. Create Connections button active.](/plan/simple-cable/simple-cable-bulk-connect.png) Right-click X1 and select **Bulk Connect**, then click X2 to set it as the target. The Bulk Connect dialog shows a grid of X1 pins against X2 pins. Set wire color and AWG, click **1:1** to map all pins straight through, then click **Create Connections**. A bundle is created automatically since no path existed. All 4 conductors are created connecting X1 and X2. --- ## Define Signals ### Create Signals ![Bulk Editor Signals tab showing 4 signals created: 3V3 (red), GND (black), TX (blue), RX (green). Each with columns for default AWG, wire color, stripe, and voltage.](/plan/simple-cable/simple-cable-make-signals.png) Open **Bulk Editor > Signals** to create signals. Each signal can have a default color, AWG, stripe, and voltage. In this example we create four signals: **3V3** (red), **GND** (black), **TX** (blue), and **RX** (green). ### Assign Signals to Nets ![Nets panel open on the right showing 4 nets. Each net has endpoints (X1.1 → X2.1, etc.), conductor count of 1, and signal badges assigned — GND (dark), 3V3 (red), RX (green), TX (blue).](/plan/simple-cable/simple-cable-signals.png) Open the **Nets** panel to assign signals to each net. A net represents the full electrical connection between endpoints — in this cable, each net spans from one X1 pin to the corresponding X2 pin. Assigning a signal to a net applies the signal's color and properties to every conductor in that net, providing consistent color coding and classification across the plan. --- ## Assign Parts to Components Open the **Parts** tab, search for the Molex Microfit 4-pin connector, and assign it to both X1 and X2. The part number appears on the components in the canvas. --- ## Generate Assembly > **Sign in + save first.** Generating an assembly writes a record to your account, so you'll need to be signed in *and* have this project saved to your account. If you opened this example via "Open in Project Editor," it's loaded as a read-only preview — use **Project menu → Save As** to copy it before continuing. Skipping this step returns a permission error. ### Select and Generate Select both components and the bundle, then click **Generate Assembly** in the left panel. Name the assembly, confirm the selection, and click **Generate**. Splice converts your selection into a full harness schematic with connectors, conductors, and BOM entries. The assembly opens in Harness Builder, auto-arranged and ready for review. --- ## Add Cable Grouping & Sync ### Add Cable Grouping Back in the plan, select the bundle and add a cable grouping in the **Groupings** section of the Properties panel. Search for and assign a cable part to the grouping via the Parts tab. ### Sync to Assembly Click the **sync** button next to the assembly in the left panel to push the cable change into the existing assembly. The assembly updates with the cable grouping and its BOM entry — no need to regenerate from scratch. --- ## Add Device Group & Mate ### Create Device Group Add a new component and assign a PCB header part via the Parts tab. Right-click the component and select **Add to Device Group** to associate it with a physical device like a PCB. The component is now part of a Device Group, visually grouped on the canvas. ### Define Mate Connection Right-click the PCB header and select **Mate**, then click X1 to define the mating connection. The Mate documents how the PCB header and the cable connector physically and logically connect — which pins align, and how the connectors interface. # Bus Topology Source: https://splice-cad.com/docs/plan/bus-topology Build the same bus topology two different ways — from scratch with branch points, and by converting a hub-and-spoke into a bus. Open in Project Editor → Build the same bus topology two different ways. Four 2-pin components (X1, X2, X3, X4) connected through two branch points (BP1, BP2) with splices at each junction. Both demos produce the same result — two nets running from X1 through the branch points to all three load connectors. --- ## Demo 1: Build from Scratch Build the bus topology by placing components and branch points, connecting pins, creating splices at branch points, then connecting the remaining endpoints. ### Place Components and Branch Points ![Layout view with X1, X2, X3, X4 and two branch points BP1, BP2. X4 selected showing Properties panel.](/plan/bus-topology/bus-topology-add-components.png) Place four 2-pin components (X1, X2, X3, X4) and two branch points (BP1, BP2). Draw bundles to establish the bus topology: X1 → BP1 → BP2 → X4, with X2 branching from BP1 and X3 branching from BP2. Connect X1 to X2 via Bulk Connect to create the initial conductors. ### Create First Splice at BP1 ![BP1 selected. Properties panel showing SP1 and SP2 splices with X1 and X2 conductors.](/plan/bus-topology/bus-topology-add-splice.png) Select BP1 and convert the pass-through conductors to splices. This exposes SP1 and SP2 as connection targets — other components can now connect to these splice points. ### Create Second Splice at BP2 ![BP2 selected. Properties panel showing SP3 and SP4 splices with X3 and BP1 conductors.](/plan/bus-topology/bus-topology-second-splice.png) Repeat at BP2 — convert pass-throughs to splices. SP3 and SP4 are now available for X3 and X4 to connect to. ### Connect Remaining Endpoints Connect X3 and X4 to the splices at BP2. Each component's pins connect to the corresponding splice, completing the bus. ### Verify Nets ![Nets panel showing 2 nets. Net 1 spans X1.1 → X2.1 → X3.1 → X4.1 with 5 conductors. Net highlighted in cyan across the schematic.](/plan/bus-topology/bus-topology-net-highlight.png) Open the **Nets** panel to verify — two nets, each spanning all four components through the splices. Clicking a net highlights all its conductors across the schematic. --- ## Demo 2: Hub and Spoke to Bus Start with a hub-and-spoke topology — X1 directly connected to X2, X3, and X4 with 6 pins — then consolidate into the same bus by inserting branch points and redirecting conductors into splices. ### Starting Topology ![Schematic view showing X1 (6 pins) directly connected to X2, X3, X4. Bulk Editor Components tab showing X1 with 6 pins.](/plan/bus-topology/bus-topology-2-add-components.png) Starting point: X1 has 6 pins — two per spoke, directly connected to X2, X3, and X4 with no branch points. ### Review Hub Connections ![Bulk Editor Bundles tab showing X1 → X3 (2 conductors), X1 → X4 (2 conductors), X1 → BP1, X2 → BP1 bundles.](/plan/bus-topology/bus-topology-2-add-connections.png) The Bulk Editor shows all bundles radiating from X1 — each with 2 conductors. The goal is to consolidate these into a bus with shared branch points. ### Add Branch Point to Bundle ![BP1 selected. Properties panel showing routing with SP1 and SP2 splices, X1 and X2 conductors.](/plan/bus-topology/bus-topology-2-insert-bp.png) Right-click a bundle and select **Add Branch Point** to insert BP1 directly onto an existing bundle. The bundle splits at the insertion point — one segment on each side of BP1. No need to delete and redraw; the conductors stay intact and now pass through the new branch point. ### Create Splices ![BP1 selected showing SP1 and SP2 splices with conductor details.](/plan/bus-topology/bus-topology-2-insert-splice.png) Convert the conductors at BP1 to splices, merging the common conductors from the hub spokes into shared splice points. ### Add Second Branch Point and Redirect X3 Insert BP2 onto the X1 → X3 bundle using **Add Branch Point**, then redirect the bundle endpoint from X1 to BP2. Right-click the bundle endpoint on X1 and select **Redirect** to change where it terminates. When a bundle already connects the old and new endpoints, conductors automatically maintain their connectivity through that existing path. The conductors now route from X3 through BP2 into the bus — the spoke is removed from X1 and its pins are freed. ### Redirect X4 Bundle Endpoint ![BP2 selected. Properties panel showing SP3 and SP4 splices with X3 and BP1 conductors.](/plan/bus-topology/bus-topology-2-redirect-x3.png) Redirect the X1 → X4 bundle endpoint the same way — detach from X1 and reattach to BP2. Connectivity is preserved automatically through the existing bundle. Both X3 and X4 now connect through the second branch point instead of directly to X1. To break connectivity instead, expand the submenu for isolate options. ### Complete Bus ![X4 selected showing Properties panel with 2 pins.](/plan/bus-topology/bus-topology-2-redirect-x4.png) The same bus topology as Demo 1 — arrived at by consolidating a hub and spoke. X1 is reduced from 6 pins to 2, and all conductors route through splices at BP1 and BP2. # Multi-Endpoint Harness Source: https://splice-cad.com/docs/plan/multi-endpoint-harness Build a 14-pin source connector fanning out to multiple endpoints including a splice, ferrule, quick connects, and flying leads. Open in Project Editor → Build a multi-endpoint harness with a 14-pin source connector (C1) fanning out through branch points to multiple endpoint types: a 4-pin connector (P1), a second connector (C2), a splice feeding C3, a ferrule (F1), quick connects (QC1, QC2), and flying leads (LW1, LW2). This example covers the full range of endpoint and termination types available in Project Mode. --- ## Place Components and Branch Points ### Lay Out All Elements ![All components and branch points placed on canvas — C1 on the left, P1, C2, C3 on the right, F1, QC1, QC2, LW1, LW2 in the middle, branch points distributed across the layout.](/plan/multi-endpoint/multipoint-layout-start.png) Place all components and branch points before drawing any bundles. C1 is the 14-pin source; P1, C2, C3 are the main endpoints. F1, QC1, QC2, LW1, LW2 are inline termination components. --- ## Draw Bundles — Establish Topology ### Draw All Bundles ![Bundles drawn from C1 fanning out through branch points to all endpoints. Tree topology visible with S1 splice branch point at bottom right.](/plan/multi-endpoint/multipoint-with-bundles.png) Draw all 14 bundles to establish the physical topology before adding any conductors. The layout should match the tree structure visible in the final schematic. --- ## Connect C1 to P1 — Pins 1–4 ### Open Bulk Connect ![Right-click context menu open on C1. Bulk Connect option highlighted.](placeholder) Right-click C1 and select **Bulk Connect**, then click P1 as the target. ### Map Pins 1–4 Set wire colors for pins 1–4 (red, orange, green, blue), apply **1:1**, and click **Create Connections**. ### Verify Routing ![Schematic view showing 4 conductors (red, orange, green, blue) running from C1 pins 1–4 through the branch points to P1 pins 1–4.](placeholder) Four conductors now run from C1 to P1 through the topology. --- ## Connect C1 to C2 — Pins 5–7 and 14 ### Bulk Connect to C2 ![Bulk Connect dialog showing C1 to C2. Wire colors set (black, brown, red for pins 5–7, grey for pin 14). Cells filled for pins 5 to 1, 6 to 2, 7 to 3, 14 to 4.](placeholder) Bulk Connect C1 to C2 — map pins 5, 6, 7 and 14 from C1 to pins 1–4 on C2. Set wire colors to match. ### Verify C2 Connections ![Schematic view updated showing C1 to C2 conductors (black, brown, red, grey) added alongside the existing C1 to P1 conductors.](placeholder) C2 is now fully connected. C1 pins 5, 6, 7, and 14 run to C2 pins 1–4. --- ## Connect C1 Pin 8 to C3 via Splice A splice is made by routing a conductor through a branch point and then splitting it there — so make the connection as usual first, then splice it at the branch point. ### Connect C1 Pin 8 to C3 Pin 1 ![C1 pin 8 connected to C3 pin 1 on the schematic, routing through the branch point (S1) near C3.](placeholder) Connect C1 pin 8 to C3 pin 1 the same way as any other pin — the conductor routes through the branch point near C3 (labeled S1). ### Convert to Splice at the Branch Point ![S1 selected; its pass-through conductor with the Convert to splice split action. Result: splice SP1, Butt Splice 22-24 AWG.](/plan/multi-endpoint/multipoint-set-splice.png) Select the branch point S1. On its pass-through conductor, click **Convert to splice** (split wire at branch point) — the split icon. The conductor splits at S1 and becomes splice SP1, joining C1 pin 8 and C3 pin 1. Choose its part: Butt Splice 22-24 AWG. (S1 is the branch point; SP1 is the splice that now lives on it.) ### Add C3 Pin 2 to the Splice ![C3 pin 2 connected to SP1, making a 3-way splice. Schematic shows SP1 joining C1.8, C3.1, and C3.2.](placeholder) SP1 can now be used as a connection target. Connect C3 pin 2 to SP1 — either by selecting it as the target in Schematic view, or via the pin assignment in Properties. C3 pin 1 is already on SP1 from the split, so SP1 is now a 3-way splice joining C1.8, C3.1, and C3.2. --- ## Connect C1 Pin 9 — Ferrule (F1) ### Add Ferrule Conductor ![C1 pin 9 conductor added. F1 ferrule component placed inline. Black conductor running from C1 pin 9 to F1.](placeholder) Connect C1 pin 9 to F1. The ferrule documents the wire end treatment for this conductor. --- ## Connect C1 Pins 10–11 — Quick Connects (QC1, QC2) ### Add Quick Connect Conductors ![QC1 and QC2 placed as inline components. C1 pin 10 connected to QC1 (orange conductor). C1 pin 11 connected to QC2 (red conductor).](placeholder) Connect C1 pins 10 and 11 to QC1 and QC2 respectively. Quick connects are placed as components on the canvas. --- ## Connect C1 Pins 12–13 — Flying Leads (LW1, LW2) ### Add Flying Lead Conductors ![LW1 and LW2 shown as flying lead components. C1 pin 12 connected to LW1 (yellow conductor). C1 pin 13 connected to LW2 (purple conductor).](placeholder) Connect C1 pins 12 and 13 to LW1 and LW2. Flying leads terminate without a mating connector — the endpoint is the lead itself. --- ## Review Completed Plan ### Layout View ![Layout view showing the full multi-endpoint harness topology — C1 on the left, tree of branch points fanning out, all endpoints connected. Bundle count 14, component count 9 visible in left panel.](/plan/showcase/multi-endpoint-layout.png) The completed plan in Layout view — all components, branch points, and bundles laid out. ### Schematic View ![Schematic view showing all 14 conductors from C1 fanning out to P1 (pins 1–4), C2 (pins 5–7, 14), C3 via SP1 (pin 8), F1 (pin 9), QC1 (pin 10), QC2 (pin 11), LW1 (pin 12), LW2 (pin 13). All wire colors matching the final schematic.](/plan/showcase/multi-endpoint-schematic.png) The completed schematic — 14 conductors from C1 routed to all endpoints including the splice, ferrule, quick connects, and flying leads. --- ## Generate Assembly ### Select All Elements ![All components, branch points, and bundles selected. Left panel showing Generate Assembly button.](placeholder) Select all components, branch points, and bundles, then click **Generate Assembly**. ### Name and Confirm ![Generate Assembly dialog open. Components tab showing all 9 components checked. Bundles tab showing all 14 bundles checked. Assembly name 'Multi-Endpoint Harness' entered.](placeholder) Confirm the full selection and name the assembly, then click **Generate**. ### View Generated Assembly ![Generated assembly in Harness Builder — C1 fanning out to P1, C2, C3 with splice, F1 ferrule, QC1/QC2 quick connects, LW1/LW2 flying leads. All conductor colors visible.](/plan/multi-endpoint/multipoint-2d-assem.png) The generated assembly opens in Harness Builder — ready for part assignment, length specification, and manufacturing export. # Power Distribution Source: https://splice-cad.com/docs/plan/power-distribution Design a DIN rail power distribution system with an AC input, power supply, main breaker, terminal blocks, and output circuit breakers — then generate an assembly with auto-created ferrules. Open in Project Editor → Design a DIN rail power distribution system. An AC input connector feeds a PULS power supply. The DC output passes through a main circuit breaker, routes through DIN rail terminal blocks, and fans out to two output circuit breakers. When the assembly is generated, ferrules are automatically created at every termination-to-termination connection. This example covers device groups, real parts from Phoenix Contact, PULS, and TE Connectivity, signal-based conductor classification, and the full ferrule workflow. --- ## System Overview | Component | Part | Description | |-----------|------|-------------| | X1 | TE Connectivity PE0SSS000 | 3-pin AC input connector (L, N, PE) | | PS1 | PULS LP CP10.241-M1 | DIN rail power supply — AC in (N, L, PE), DC out (V+, V-, GND) | | CB1 | Phoenix Contact 2907565 | Main DC circuit breaker (IN+, OUT+) | | X1, X2 | Phoenix Contact 3273268 / 3273278 | 6-pin DIN rail terminal blocks in a Device Group | | CB2 | Phoenix Contact 1464483 | Output circuit breaker (IN+, IN-, OUT+, SI, RST, OUT+) | | CB3 | Phoenix Contact 1464483 | Output circuit breaker (IN+, IN-, OUT+, SI, RST, OUT+) | ### Signals | Signal | Color | Description | |--------|-------|-------------| | AC_L | — | AC Line | | AC_N | — | AC Neutral | | PE | Green/Yellow | Protective Earth | | VDC | Red | Main DC positive | | 24V_CB | Red | 24V through circuit breaker | | GND | Black | DC ground / return | --- ## Place the Power Supply and AC Input ### Add PS1 and X1 Place **PS1** (the PULS power supply) and **X1** (the AC input connector). PS1 has AC input pins (N, L, PE) and DC output pins (V+, V-, GND). X1 has 3 pins: L, N, PE. ### Assign Parts Open the **Parts** tab and assign TE Connectivity PE0SSS000 to X1 and PULS LP CP10.241-M1 to PS1. ### Connect AC Input to Power Supply Connect X1 to PS1 — each AC line (L, N, PE) runs from the input connector to the corresponding power supply pin. Assign signals AC_L, AC_N, and PE to the corresponding nets. ![AC input connected to power supply with branch point and three AC conductors (L, N, PE).](/plan/power-distribution/power-dist-connect-psu.png) --- ## Add Main Circuit Breaker ### Place CB1 Place **CB1** and assign Phoenix Contact 2907565. CB1 has IN+ and OUT+ pins — it protects the main DC bus from the power supply. ### Connect PS1 to CB1 Route the DC positive output (V+) from PS1 into CB1 IN+. Route CB1 OUT+ toward the distribution terminal blocks. Assign the 24V_CB and VDC signals to the appropriate nets. ![CB1 added between X1 and PS1, with DC positive routed through the main circuit breaker.](/plan/power-distribution/power-dist-add-cb.png) --- ## Add DIN Rail Terminal Blocks ### Create Device Group Place two 6-pin terminal block components — **X1** (Phoenix Contact 3273268) and **X2** (Phoenix Contact 3273278). Right-click and select **Add to Device Group** to create the **DIN Rail 1** group containing both. ### Route Through Terminal Blocks Route the DC positive and ground conductors through X1 and X2. The terminal blocks act as distribution points — conductors from the power supply side enter on one set of pins and exit toward the output breakers on another. ![DIN Rail 1 device group with terminal blocks X1 and X2, connected to PS1 and CB1.](/plan/power-distribution/power-dist-add-term-block.png) --- ## Add Output Circuit Breakers ### Place CB2 and CB3 Place **CB2** and **CB3**, both Phoenix Contact 1464483. These are the output circuit breakers with pins: IN+, IN-, OUT+, SI, RST, OUT+. ### Connect to Distribution Route conductors from the DIN rail terminal blocks into CB2 and CB3. The VDC and GND conductors fan out from the terminal blocks to each output breaker. ![CB2 and CB3 connected to DIN Rail terminal blocks X1 and X2, with ferrules and conductors routed through.](/plan/power-distribution/power-dist-cb2-cb3.png) ### Assign Signals to All Nets Open the **Nets** panel and assign signals to every net. The VDC signal (red) marks all DC positive paths. GND (black) marks all return paths. AC_L, AC_N, and PE mark the AC input side. Signal colors propagate to all conductors in each net. --- ## Review Completed Plan ### Schematic View The Schematic view expands all components to show pin-level connections. Every conductor is traced individually — DC positive (red) from PS1 through CB1 and the terminal blocks to CB2/CB3, ground (black) on the return path, and AC lines (with PE in green/yellow dashed) on the input side. ![Full schematic view with all signals — VDC (red), GND (black), PE (green/yellow dashed), AC lines, and signal badges on every conductor.](/plan/power-distribution/power-dist-schematic-full.png) ### Layout View The Layout view shows the compact physical topology — PS1 and the AC input on the right, DIN Rail 1 device group in the center, output breakers on the left. Bundle count badges show how many conductors share each path. ![Complete layout view showing CB2, CB3, DIN Rail terminal blocks, CB1, and PS1 with bundle count badges.](/plan/power-distribution/power-dist-connect-psu-second-cbs.png) --- ## Generate Assembly ### Select and Generate Select all components and bundles, then click **Generate Assembly** in the left panel. Name the assembly, confirm the selection, and click **Generate**. The assembly opens in Harness Builder — auto-arranged and ready for review. --- ## Ferrules and Terminations In this system, every component uses termination points (push-in terminals, screw terminals). When the assembly is generated, connections between two termination points automatically create **ferrule** components (F1, F2, F3, …) at each wire end. This models the real-world crimped ferrules applied to wire ends before insertion into terminals. ### Auto-Created Ferrules After generation, ferrules appear automatically on every conductor that connects termination point to termination point. Each ferrule (F1–F20 in this example) is a separate component in the assembly with its own BOM entry. ### Change Mating Type Select a ferrule and open the Properties panel to change its **mating type** — options include ferrule, bare wire, pin terminal, or other termination styles. This lets you match the assembly to your actual termination method. ### Bulk Mate Ferrules Right-click a connector block and select **Bulk Mate** to assign ferrules across multiple pins at once. The Bulk Mate dialog shows all pins and lets you set the termination type in a single operation — no need to configure each ferrule individually. ### Auto Fit to Contents Click **Auto Fit to Contents** to resize connector blocks to match their assigned ferrules and terminations. This removes excess whitespace and ensures blocks are sized to their actual pin count and termination layout. ### Auto Align Ferrules Use **Auto Align** to evenly space and align ferrule components along their wire runs. This cleans up the schematic layout so ferrules are consistently positioned relative to their parent connector. ## Assembly Mode (/docs/harness/*) # Project vs Assembly Workflow Source: https://splice-cad.com/docs/harness/workflow-comparison Compare the Project Workflow and Assembly Workflow to choose the right approach for your design Splice offers two workflows for designing cable harnesses. Choose the one that fits your needs, or start with one and convert later. | | Project Workflow | Assembly Workflow | |---|---|---| | **Best for** | Complex systems with multiple assemblies | Single cable assemblies and simple harnesses | | **Multi-page** | Yes — organize plan by subsystem across pages | Yes — multi-page engineering drawings in layout view | | **Branch points** | Yes — model junctions, splices, and bus topologies | No | | **Mates** | Yes — document physical connector pairings between devices | No | | **Device groups** | Yes — represent multi-connector devices (PCBs, DIN rail assemblies) | No | | **Signals & nets** | Yes — classify conductors by signal type, manage nets across assemblies | Basic signal labels on wires | | **Parts & BOM** | Create BOM at the plan level, assign to parts as needed, review and export | Assign parts directly to connectors, wires, and cables | | **Generic components** | Yes — category templates with schematic symbols | Yes — same component creator | | **Bulk editing** | Conductor properties via plan panels | Bulk Property Editor for connectors, wires, cables, accessories | | **Layout view** | Basic — positions from schematic | Full engineering drawing editor with dimensions, title blocks, and multi-page PDF | | **Custom graphics** | No | Yes — upload SVG/PNG images to components (mate side and wire side) | | **Export** | PDF, Excel, clipboard (via generated assemblies) | PDF, Excel, CSV, WireViz, clipboard | | **Convert** | Generate Assembly Workflow documents from your plan | Convert standalone assemblies into a Project Workflow | # Pin Designation System Source: https://splice-cad.com/docs/harness/pin-designation Pin numbering conventions, custom pin mapping, and bridged positions ### Pin Numbering Convention Splice follows the following pin numbering conventions: - All connectors are assigned an integer number of pins. - By default, pin labels are assigned starting from 1 (not 0) - Numbers increment without gaps ### Custom Pin Mapping For connectors requiring non-sequential numbering or custom labels, use the `pin_mapping` field. This field maps pin indices (as strings) to custom labels. Example with numeric labels: ```json pin_mapping: { "0": "1", // Pin 0 maps to the label 1 (Default) "1": "3", // Pin 1 maps to the label 3 "2": "4", // Pin 2 maps to the label 4 } ``` Example with functional labels: ```json pin_mapping: { "0": "GND", // Pin 0 maps to the label GND "1": "24V", // Pin 1 maps to the label 24V "2": "TX", // Pin 2 maps to the label TX "3": "RX" // Pin 3 maps to the label RX } ``` ### Bridged Positions To denote electrically bridged pins, define a `bridged_positions` array using mapped pin labels: ```json pin_mapping: { "0": "GND_1", // Pin 0 maps to the label GND_1 "1": "GND_2", // Pin 1 maps to the label GND_2 } ``` ```json bridged_positions: [["GND_1", "GND_2"]] ``` This example shows pins labeled GND_1 and GND_2 are internally connected. ### Pin Functions A pin's **label** identifies it (e.g. `1`, `A2`); its **function** describes the signal role it carries (e.g. `CAN_H`, `GND`, `UART_TX`). Functions are optional and independent of the label. Edit a pin's function in the component **Properties** panel (Positions tab) or in the **Bulk Editor**'s Components tab. Functions are stored on the connector as an index-parallel `pin_functions` array: ```json pin_functions: ["CAN_H", "CAN_L", "GND", "12V"] ``` Pin functions are shown on the connector graphic in the diagram and are preserved when converting between a plan and a harness (they mirror the plan's pin functions). # Male Pins vs Female Receptacles Source: https://splice-cad.com/docs/harness/male-female-connectors Contact gender definitions and visual representation of male pins vs female receptacles ### Contact Gender Definition Connector gender in Splice refers explicitly to the type of electrical contacts: - **Male (Pin):** Protruding pins that insert into female contacts - **Female (Socket):** Receptacle contacts that accept male pins - **None:** Used for non-standard or genderless connectors ### Visual Representation & Connector Insets In the Splice interface, connector gender affects the visual representation with distinct insets for each view: Male pins are denoted by dark circles with white text: ![Male pins with dark circles and white text](/images/docs/male_pins.png) Female receptacles are denoted by outlined white circles with dark text: ![Female receptacles with outlined circles and dark text](/images/docs/female_pins.png) # Making and Modifying Connections Source: https://splice-cad.com/docs/harness/making-and-modifying-connections Creating, adding, moving, and swapping wire connections between pins This guide explains what happens when you click on pins or cable cores to create, extend, or change connections in Splice. ### Connection Scenarios #### Creating a New Connection 1. **Click an unconnected pin on a connector block.** The *Pending Wire* banner appears at the bottom of the screen. 2. **Click a second target:** - **Connector pin** - a *wire* is created using the pending specs (AWG, color, etc.). - **"TIN" / "BARE" / "HS" flying-lead port** - a *flying lead* is created with the same specs. - **Cable core** - a *cable core segment* is created using the cable core's own specs (AWG, color, strand count, etc.), and linked to the pending wire. ![Click an unconnected pin, then a connector pin, flying-lead port, or cable core.](/images/docs/new_connection.png) *Create a new connection by clicking an unconnected pin, then a connector pin, flying-lead port, or cable core.* #### Adding an Additional Connection 1. **Click a pin with one or more existing connections.** An action menu appears. 2. **Select "Add Connection."** You enter *Pending Wire* mode again. 3. **Complete the connection:** Click the target pin or core to finish the new wire or lead. ![Pin action menu showing available options on a pin with existing connections.](/images/docs/pin_to_modify.png) *Click the pin you want to extend, then choose "Add Connection."* ![Selecting 'Add Connection' from the pin's action menu.](/images/docs/select_add_connection.png) *Select "Add Connection" to start a new wire from the same pin.* ![Result after adding a flying lead to the pin.](/images/docs/added_connection.png) *Example: a new flying lead added to pin X1.7.* #### Moving or Swapping an Existing Connection 1. **Click a pin with connections.** The action menu opens. 2. **Choose the wire you want to move or swap in the "Move/Swap/Twist Existing Connections" block.** ![Pin action menu for modifying connections.](/images/docs/pin_to_modify.png) *Open the action menu on the pin whose connection you want to move or swap.* ![Selecting 'Move' or 'Swap' from the action menu.](/images/docs/select_move_or_swap_existing.png) *Choose "Move" to relocate the wire, or "Swap" to exchange it with another connection.* #### Move vs. Swap Examples ![Moving connection to an empty pin; the wire simply relocates.](/images/docs/no_other_conn.png) *Move to X1.6: wire relocates directly since the target pin is empty.* ![Target pin already has a connection; option to swap or move appears.](/images/docs/swap_or_move.png) *Clicking X1.3: the target pin already has a connection, so you can move or swap.* ![After moving, the selected wire is now connected to the new pin.](/images/docs/moved_pin.png) *Move result: X1.7 → X1.3.* ![After swapping, the two wires have exchanged endpoints.](/images/docs/swapped_pin.png) *Swap result: the original wire on X1.3 moves to X1.7, and vice versa.* # Bulk Connect Source: https://splice-cad.com/docs/harness/bulk-connect Connection matrix for quickly wiring two connectors with patterns like 1:1, reversed, and interleave When you need to wire two connectors together quickly, use the **Connection Matrix**. Right-click a connector and choose **Bulk Connect**, then click the target connector (or a cable) to open the matrix. The matrix shows a 2D grid — rows are pins of connector 1, columns are pins of connector 2. Click cells to create connections, or use one of the built-in patterns: - **1:1** — straight mapping (pin 1→1, pin 2→2, etc.) - **Reversed** — mirror mapping (pin 1→last, pin 2→second-last, etc.) - **Interleave** — swap adjacent pairs (1→2, 2→1, 3→4, 4→3) for twisted pair wiring - **Clear** — remove all pending connections Set default **color**, **stripe**, and **AWG** in the toolbar before applying a pattern, or click individual pending connections to customize each wire's properties. When one component is a cable, core properties are used automatically. ![Bulk Connect dialog showing the connection matrix with a 1:1 pattern applied between X1 and X2.](/images/docs/bulk_connect.png) *The Connection Matrix — apply patterns like 1:1, Reversed, or Interleave to quickly wire two connectors together.* *Bulk Connect in action — select a pattern, customize wire properties, and create all connections at once.* # Zoom & Pan Source: https://splice-cad.com/docs/harness/zoom-and-pan Canvas zoom, pan, scroll modes, sensitivity, plus grid spacing/opacity, background, and grid color controls. All Splice canvases — the assembly schematic, physical layout, plan layout, and plan schematic — share the same zoom and pan controls. ### Scroll Behavior Modes Open the **Grid & Mouse Settings** menu (gear icon in the toolbar) to choose a scroll mode: | Mode | Scroll Wheel | Trackpad Two-Finger | |------|-------------|---------------------| | **Auto** (default) | Zoom | Pan | | **Scroll** | Zoom | Zoom | | **Pan** | Pan | Pan | **Auto** mode detects whether you're using a mouse wheel or trackpad and adapts automatically — mouse wheel scrolls zoom, trackpad two-finger scrolls pan. ### Zoom Controls | Action | Input | |--------|-------| | Zoom in/out | Scroll wheel (Auto/Scroll mode), pinch gesture, or Ctrl/Cmd + scroll | | Zoom at cursor | All zoom methods use focal-point zoom — the point under your cursor stays fixed | | Zoom sensitivity | Adjust in Grid & Mouse Settings (0.5x – 2x) | ### Pan Controls | Action | Input | |--------|-------| | Pan | Trackpad two-finger scroll (Auto/Pan mode), or plain scroll (Pan mode) | | Pan horizontally | Shift + scroll (works in all modes) | | Pan by drag | Middle-click and drag, or hold Space and drag | ### Quick Reference - **Pinch or Ctrl/Cmd + scroll** always zooms, regardless of scroll mode. - **Shift + scroll** always pans horizontally, regardless of scroll mode. - The scroll mode, zoom sensitivity, grid settings, and snap preferences all persist across sessions. ### Grid & Canvas Appearance The same **Grid & Mouse Settings** menu also controls the canvas grid: | Setting | What It Controls | |---------|------------------| | **Show Grid** | Toggle the grid on/off | | **Snap to Grid** | Snap component placement and dragging to the grid | | **Spacing** | Distance between minor grid lines (5–50). Major lines appear every 5 minor cells. | | **Opacity** | Master opacity multiplier for both minor and major grid lines | | **Background** | Canvas background — seven-stop ramp from near-black to white | | **Grid Color** | Grid line color. The default swatch (marked with a dot) is the auto-paired direction for the current background — pick it to return to auto-pairing, or pick any other swatch to override. | Background and Grid Color are set independently per view — the Plan layout and the Schematic view each remember their own. The **Assembly** view is paper-themed and not configurable. The **Connector** and **Cable Creator** editors expose the same Background and Grid Color pickers from their in-editor settings dropdown. # Convenience Functions Source: https://splice-cad.com/docs/harness/convenience-functions Command-based undo/redo system with keyboard shortcuts and toolbar controls ### Command-Based Undo/Redo Every action in the Harness Builder can be undone or redone. - Component addition & deletion - Component positioning - Wire swapping & movement - Auto-routing & manual routing (wires & cores) - Signal renaming - Design-note editing #### Usage - **Keyboard:** Ctrl + Z / Cmd + Z to undo, Ctrl + Y / Cmd + Shift + Z to redo. - **Toolbar:** Click the Undo/Redo icons - hover to preview recent actions. ![Harness Builder toolbar showing Undo and Redo buttons with hover previews.](/images/docs/undo_redo.png) *Step backward or forward through your edits using the toolbar buttons or keyboard shortcuts.* # Box Select & Group Repositioning Source: https://splice-cad.com/docs/harness/box-select Window and crossing selection modes, modifier keys, group dragging, and selection actions Select multiple items — components, wire anchors, or cables — and move, auto-route, or delete them in a single action. Splice supports two selection modes depending on which direction you drag. ### Window Selection (Drag Right) Click on an empty area and drag **to the right** to create a **blue solid rectangle**. Only items *fully enclosed* by the rectangle are selected. ### Crossing Selection (Drag Left) Click on an empty area and drag **to the left** to create a **green dashed rectangle**. Any item that *intersects* the rectangle is selected — items don't need to be fully enclosed. *Window selection (drag right, blue solid) selects fully enclosed items. Crossing selection (drag left, green dashed) selects any intersecting items.* ### Modifier Keys - **Shift or Ctrl/Cmd** — Add to the current selection (items already selected stay selected) - **Alt/Option** — Remove items from the current selection - **No modifier** — Replace the current selection entirely You can also **Ctrl+Click** (or Cmd+Click) individual items to toggle them in and out of the selection. ### Group Dragging When items are selected, their drag handles turn **blue**. Drag any selected item to reposition the entire group while preserving relative positions. ![Multiple items selected with blue drag handles visible.](/images/docs/box_select.png) *Selected items show blue highlights — drag any one to move the whole group.* ### Selection Actions After selection, a **toolbar appears at the bottom** of the screen with quick actions: - **Auto-route** selected wires and cable cores - **Delete** selected components - **Copy / Paste** connectors and cables ![Bottom selection toolbar with auto-route, delete, and copy/paste actions.](/images/docs/bottom_select.png) *The bottom toolbar provides quick actions for your selection: auto-route, delete, and copy/paste.* # Wire Anchors Source: https://splice-cad.com/docs/harness/wire-anchors Wire anchor control points for routing wire paths, group drag, and distribute Wire anchors are control points on the schematic canvas that set the vertical jog location of wire paths and cable cores between connectors. By default, wire anchors are **auto-routed** — Splice positions them automatically when connections are created. Hover over any wire or cable core to reveal its anchor and enable repositioning by dragging. ![Wire anchor on the schematic canvas showing wire paths routed through it.](/images/docs/wire_anchor_selected.png) *Wire anchors control the vertical jog location of wire paths and cable cores between connectors.* ### Box Select & Group Drag Wire anchors are fully supported by box select — use window selection (drag right) or crossing selection (drag left) to select multiple wire anchors at once. When you drag any selected item, the entire group moves while **preserving the spacing** between elements. *Select multiple wire anchors and drag them as a group.* You can also include connectors, wire bundle blocks, and cable blocks in the same selection — keeping your entire layout intact when repositioning. *Select wire anchors together with components to move everything while preserving spacing.* ### Distribute When multiple wire anchors are selected, use the distribute function to evenly space them apart and flip the jog ordering for better visibility. This is useful for cleaning up overlapping bundles and creating a tidy, readable schematic. *Distribute selected wire anchors to evenly space them apart.* ### Hotkeys While Dragging Hold any of these modifiers while dragging a wire anchor, connector, or bundle block to change how jog positions behave: - **Shift** — Snap positions to the grid. - **Alt** (or **Cmd** on Mac) — Hold jog positions in place while the block moves. - **R** — Preview auto-route; release to commit reset jogs on all affected connections. # Bulk Property Editor Source: https://splice-cad.com/docs/harness/bulk-edit Bulk Property Editor for editing connectors, wires, cables, and accessories The Bulk Property Editor is a comprehensive panel for editing harness properties in bulk — connectors, wires, cables, and accessories — without clicking through individual components on the canvas. Open it by pressing E or clicking the Bulk Editor button in the right sidebar. The panel can float on the canvas or be pinned to the dock. ### Components Tab Edit connector properties and manage terminal assignments. The tab has two sub-views: #### Pins View Lists all connectors with expandable pin tables showing pin index, label, function, connected wire/core, and the destination. Pin labels and **functions** (e.g. `CAN_H`, `GND`) are editable inline, and individual connections can be deleted directly. Functions also appear on the connector graphic in the diagram and are preserved when converting between a plan and a harness. ![Components tab Pins view showing connectors with expandable pin tables.](/images/docs/bulk_edit_components.png) *Components tab — Pins view lists all connectors with editable pin labels, wire/core connections, and destinations.* #### Contacts View Assign terminal contacts to connector pins. Pins are automatically grouped by the **AWG** of the wire connected to them: - Click the **search icon** to open a picker with compatible contacts for that connector and AWG - Use **"Apply to all [AWG] AWG"** to assign the same terminal to every pin in that gauge group - **Clear all** terminals for an AWG group with one click Other component actions include inline editing of **designator**, **manufacturer**, and **MPN**, auto-renumbering connectors (left-to-right or top-to-bottom), and the **Bulk Connect** dialog when two connectors are selected. ![Components tab Contacts view showing AWG-grouped pins with compatible contacts picker.](/images/docs/bulk_edit_components_contacts.png) *Contacts view — pins grouped by AWG with a compatible contacts picker showing MPN, gender, AWG range, and termination type.* ### Wires Tab Edit wire properties in bulk, organized by bundle. Each bundle header provides controls for setting **length**, **color**, **stripe**, and **AWG** for all wires in the bundle at once. The tab has two sub-views: #### Signals View Manage the signal for each wire. Columns show color, stripe, AWG, and a single editable **Signal** per wire. This view also supports **twisted pair grouping** — select wires and create twist groups, add wires to existing groups, or dissolve pairs. ![Wires tab Signals view showing bundles with editable signal labels and twisted pair groups.](/images/docs/bulk_edit_wires.png) *Wires tab — Signals view with editable signal labels and twisted pair grouping (TP1, TP2).* #### Properties View Assign wire part numbers (MPNs) and view electrical properties: - Click the **search icon** on any wire to find matching parts by AWG, color, and stripe - Select a wire part to assign its **MPN**, **manufacturer**, **voltage rating**, and **certifications** - **Copy/paste** wire properties between rows — or use **"Paste to Similar"** to apply to all wires with matching AWG, color, and stripe - Assignments are **non-destructive overrides** — original part data is preserved and can be restored with **Reset** ![Wires tab Properties view showing wire MPN search with available wire parts popup.](/images/docs/bulk_edit_wire_part.png) *Properties view — search for wire parts by AWG, color, and stripe. Results show MPN, manufacturer, description, and datasheet links.* ### Cables Tab Edit cable properties and stripping schedules. Each cable shows its designator, manufacturer, MPN, length, core count, and shielding status. Expand a cable to see: - **Core list** with color swatches, connection endpoints, and an editable signal per core (including shield core) - **Strip lengths** per connector end — editable fields for jacket, shield, insulation, and core strip lengths - **Copy/paste** stripping values between entries or paste to all entries for a cable ![Cables tab showing cable cores with color swatches, signal labels, and strip length schedule.](/images/docs/bulk_edit_cables.png) *Cables tab — core list with signal labels and strip length schedule per connector end.* ### Accessories Tab Manage protective and functional accessories attached to cables and bundles — heat shrink (HS), conduit (CV), braid (BR), cable ties, sheath, spiral wrap, labels, and more. Each accessory has: - **Type** badge (click to change), **position** along the bundle with end reference, **length** - **Part number**, **manufacturer**, and **description** - Add, delete, and copy/paste accessory properties between entries ![Accessories tab showing cable accessories with type badges, positions, and part details.](/images/docs/bulk_edit_accessories.png) *Accessories tab — manage heat shrink, conduit, braid, and other accessories per cable or bundle.* ### Save / Cancel Workflow All changes across every tab are staged as **pending changes**, highlighted in blue until you save. Click **Save** to commit all changes at once (with full undo/redo support), or **Cancel** to discard everything. # Generic Components Source: https://splice-cad.com/docs/harness/generic-components Creating generic components from category templates with custom graphics Add components that don't exist in the library directly from the Harness Builder. Use category templates for quick schematic-style symbols, or upload your own image for a custom look. ### Creating a Generic Component 1. Open the **Components** floating panel by clicking the connector icon on the right side of the canvas, or press C 2. Click the **Create** button in the panel header 3. Select a **category template** from the dropdown (power supply, circuit breaker, relay, contactor, fuse, switch, push button, fan, motor, timer, PCB, etc.) to use a built-in schematic symbol, or start from scratch 4. Set the **number of positions** for your component 5. Optionally enter an **MPN** and click the magic wand button to auto-fill details from Digi-Key (manufacturer, description, datasheet, image) 6. Keep the **category template icon**, or upload/paste your own **custom image** (SVG or PNG) ![Creating a generic component from the Harness Builder](/gifs/create-generic-component.gif) *Create a generic component directly from the Components panel.* ### Editing a Generic Component To modify a generic component after adding it to the canvas: - **Right-click** the component and select **Edit Properties** - Or click the **tune** icon in the component's toolbar when selected You can update the category, number of positions, part details, and custom graphics at any time. ### Component Categories Available categories include: - **Circuit Breakers:** Overcurrent protection - **Fuses:** One-time overcurrent protection - **Push Buttons:** Momentary and latching controls - **Switches:** Manual control elements - **Relays:** Electromechanical switching - **Contactors:** Heavy-duty power switching - **Power Supplies:** Voltage conversion modules - **Motors:** Electric motor components - **Fans:** Cooling and ventilation - **PCBs:** Printed circuit boards - **Resistors:** Fixed and variable resistors - **Capacitors:** Energy storage components - **Diodes:** Rectifiers and semiconductor switches - **Inductors:** Coils and chokes - **Transformers:** Voltage transformers - **Inverters:** DC-to-AC conversion - **Splices:** Wire joining and connections - **Batteries:** Power cells and packs - **Solar Cells:** Photovoltaic modules - **Sensors:** Temperature, pressure, proximity, and other sensors - **Solenoids:** Electromagnetic actuators - **LEDs:** Light-emitting diodes and indicators - **Speakers:** Audio output devices - **Heaters:** Heating elements - **Thermostats:** Temperature control devices - **Potentiometers:** Variable resistors - **Generators:** Alternators and generators - **Indicators:** Lamps, pilot lights, and annunciators - **Grounds:** Grounding and earth connections - **Other:** Miscellaneous components ### Shape-Based Categories You can also browse connectors by shape: - **Circular:** Round multi-pin connectors - **Rectangular:** Rectangular connectors - **D-Sub:** D-subminiature connectors - **Terminal Block:** Barrier strip connectors - **Ferrule:** Wire-end sleeve terminals - **Quick Disconnect:** Blade-style push-on terminals - **Ring Terminal:** Ring and lug terminals - **Spade:** Spade and fork terminals - **Lug:** Heavy-duty lug terminals - **USB:** Universal Serial Bus connectors - **Barrel:** Barrel/DC power connectors - **Header:** Pin header connectors - **Coaxial:** RF and coaxial connectors - **RJ/Modular:** RJ11, RJ45, and modular jack connectors # Generic Cables Source: https://splice-cad.com/docs/harness/generic-cables Creating generic cables with custom core count, gauge, shielding, and colors Add cables that don't exist in the library directly from the Harness Builder. This streamlines your workflow when you need cables with custom specifications. ### Creating a Generic Cable 1. Open the **Cables** floating panel by clicking the cable icon on the right side of the canvas, or press B 2. Click the **Create** button in the panel header 3. Specify the **number of cores** for your cable 4. Set the **wire gauge** (AWG) for the cores 5. Toggle **shielding** options if needed 6. Set **core colors** individually or apply standard color codes 7. Optionally add part details (manufacturer, MPN) ![Creating a generic cable from the Harness Builder](/gifs/create-generic-cable.gif) *Create a generic cable directly from the Cables panel.* ### Editing a Generic Cable To modify a generic cable after adding it to the canvas: - **Right-click** the cable and select **Edit Properties** - Or click the **tune** icon in the cable's toolbar when selected You can update the number of cores, wire gauge, shielding, core colors, and part details at any time. ### Cable Properties - **Number of Cores:** How many individual conductors the cable contains - **Wire Gauge:** AWG size for the cable cores - **Shielding:** Optional overall shield for EMI protection - **Core Colors:** Individual wire colors for identification - **Part Details:** Manufacturer, MPN, description for BOM generation # Custom Graphics Source: https://splice-cad.com/docs/harness/custom-graphics Upload custom SVG or PNG images to components with mate and wire side views Add custom visuals to any component using the image upload feature. This is ideal for adding datasheet images, manufacturer graphics, or custom drawings to your components. ### Upload Methods - **File Upload:** Click "Upload SVG or PNG" to select files from your computer - **Clipboard Paste:** Use Win+Shift+S (Windows) or Cmd+Shift+4 (Mac) to capture a screen region, then click the paste button ![Pasting a custom image onto a component](/gifs/paste-component-image.gif) *Paste a screenshot or upload an image to customize component appearance.* ### Supported Formats - **SVG:** Vector graphics that scale without losing quality - **PNG:** Raster images with transparency support ### Mate and Wire Side Images Components in Splice have two sides: - **Mate Side:** The side that connects to another component (typically shows the connector face) - **Wire Side:** The side where wires attach (typically shows terminals or solder cups) You can upload different images for each side of the component to accurately represent both views. # Bundle Labels Source: https://splice-cad.com/docs/harness/bundle-labels Adding visual labels to connectors for identification, assembly instructions, and heat-shrink export Add visual labels to connectors on your harness canvas to identify sections, add assembly instructions, or mark test points. ### Adding Labels 1. **Click** a connector on the canvas to show its toolbar 2. Click the **label** icon in the toolbar 3. Click **Add Label** to create a new label 4. Enter the label text and customize the appearance 5. Associate the label with specific wires if needed ![Adding bundle labels to a connector](/gifs/add-harness-labels.gif) *Add labels to connectors via the toolbar.* ### Label Properties - **Label Text:** The text displayed on the label - **Background Color:** The fill color of the label tag - **Text Color:** The color of the label text - **Wire Association:** Which wires the label applies to ### Multiple Labels You can add as many labels as needed to each connector. Each label can be associated with different wires, making it useful when a single connector has multiple label requirements. ### Visibility Control Toggle label visibility in the label editor dialog. This allows you to show or hide all labels on the canvas without deleting them. ### Wire Label Export Labels can be exported for use with heat-shrink label printers: - Click a connector and then click the **label** icon - Configure label settings and wire associations - Download label data compatible with popular heat-shrink printer software ![Configuring wire labels for export](/gifs/add-component-label.gif) *Configure and export wire labels for heat-shrink printers.* ### Use Cases - Identifying harness sections or branches - Adding assembly instructions - Marking test points or inspection locations - Color-coding by function or destination - Generating wire labels for heat-shrink printing # PDF Export Options Source: https://splice-cad.com/docs/harness/pdf-export PDF export options including engineering drawings, multi-page PDFs, BOM placement, connection tables, and cut lists Configure how your harness design is exported to PDF, including BOM placement, Connection Tables, and Cut Lists. > **Automated exports** Link the assembly to a GitHub repo and every push will auto-render schematic PDFs/PNGs, physical drawings, and BOMs as workflow artifacts. See [GitHub Integration](/docs/harness/github-integration). ### Simple Engineering Drawing Export a single-page PDF engineering drawing via **Download & Upload > Engineering Drawing**: - Full-page harness diagram with title block - Bill of Materials on a separate page - Connection Table showing all wire connections grouped by bundle - Cut List with consolidated wire requirements ### Multi-Page PDF Export Create professional multi-page engineering documentation: 1. Click the **PDF Pages** button on the right toolbar 2. Add pages with custom sizes (A2, A3, A4, Letter, or custom) 3. Position and scale page frames over different areas of your design 4. Toggle the **"BOM on separate page"** option to control BOM placement 5. Export via **Download & Upload > Multi-Page PDF** ### BOM Placement The **"BOM on separate page"** toggle in the PDF Pages panel controls how the Bill of Materials is rendered: - **Enabled (default):** BOM renders on dedicated page(s) after the diagram pages. The diagram uses the full page area. - **Disabled:** BOM overlays on each diagram page in a corner position. Useful for single-page exports where you want everything visible at once. When BOM is on separate pages, the PDF structure is: 1. Diagram page(s) 2. Bill of Materials page(s) 3. Connection Table page(s) 4. Cut List page(s) ### Connection Table The Connection Table provides a detailed wire-by-wire breakdown of all connections: - **Grouped by bundle:** Connections organized by wire bundles (e.g., "Bundle X1 | X2") and cables (e.g., "Cable C1") - **Full connection details:** From/To pins, signal labels, wire color, AWG, and length - **Bundle labels:** Shows bundle labels at each connection end - **Cable cores:** Lists all cable cores including shield connections - **Flying leads:** Displays termination type for unterminated wires Connection Tables are included automatically in multi-page PDF exports and can be downloaded separately via **Download & Upload > Connection Table**. ### Cut List The Cut List consolidates wire and cable requirements for manufacturing: - **Wire consolidation:** Groups wires by MPN and manufacturer with total length calculations - **Individual lengths:** Shows length distribution (e.g., "3 x 200mm, 2 x 350mm") for cutting planning - **Cable support:** Includes multi-core cables with total length - **Bundle labels:** Shows which wire bundles use each wire type Export formats: - **CSV:** For spreadsheet applications - **Excel (XLSX):** Formatted spreadsheet with headers - **PDF:** Professional document with summary totals Access via **Download & Upload > Cut List**. # Overview Source: https://splice-cad.com/docs/harness/overview Data schema overview with core data structures and export formats The Splice harness schema defines the complete structure of cable harness data for storage, export, and interchange. For full schema documentation, visit the [AI Agent Plan](/llms.txt) which provides the complete JSON structure. ### Core Data Structures - **BOM (Bill of Materials):** Contains all parts used in your harness including connectors, wires, cables, and terminals - **Mapping:** Defines wire connections between termination points - **Positions:** Stores visual layout coordinates for components - **Design Notes:** Text annotations attached to the harness ### Export Formats Harness data can be exported in multiple formats: - **JSON:** Full schema for programmatic access - **CSV:** BOM export for spreadsheet applications - **WireViz:** YAML format for WireViz diagram generation - **PDF:** Printable documentation with diagrams # Key Generation Convention Source: https://splice-cad.com/docs/harness/key-generation Structured hierarchical key system for BOM instances, mapping, positions, and wire anchors Splice uses a structured, hierarchical key system to ensure consistent and unique identifiers across all data structures. ### BOM Instance Keys All parts in the BOM use sequential letter-number combinations: - **Connectors:** use prefix `X` and increment: X1, X2, X3, ... - **Wires:** use prefix `W` and increment: W1, W2, W3, ... - **Cables:** use prefix `C` and increment: C1, C2, C3, ... - **Terminals:** use prefix `T` and increment: T1, T2, T3, ... - **Splices:** use prefix `SP` and increment: SP1, SP2, SP3, ... ### Mapping Keys (Connections) Connection keys in the `mapping` object follow specific patterns: - **Wire Connections:** Use BOM wire key directly (W1, W2, etc.) - **Cable Core Connections:** Use format `CableInstance.CoreNumber` (e.g., C1.1, C1.2) - **Bundle Keys:** Connector pairs sorted alphabetically as `Connector1|Connector2` (e.g., X1|X2) ### Position Keys Position keys directly correspond to BOM instance keys: - **Connector Positions:** `connector_positions["X1"]` stores position for connector X1 - **Cable Positions:** `cable_positions["C1"]` stores position for cable C1 ### Wire Anchor Keys Wire anchor keys store label positioning data and are generated based on connection types. - **Connector-to-Connector Bundles:** X1|X2 (sorted alphabetically) - **Flying Lead Connections:** Individual wire key W1, W2, etc. - **Cable Core Connections:** Cable core key with suffix `-1` or `-2` to denote cable side, eg. C1.1-1, C1.2-2, etc. ### Bundle Labels Bundle labels store visual labels attached to connectors or cables: - **Key:** Unique UUID for each label - **connector_instance_id:** The connector this label is attached to (e.g., "X1") - **cable_instance_id:** The cable this label is attached to (e.g., "C1") - **label_text:** The text displayed on the label - **wire_keys:** Optional array of specific wire keys this label applies to - **width_mm:** Label width in millimeters (default: 9) - **text_color:** Hex color for label text (default: "#000000") - **background_color:** Hex color for label background (default: "#FFFFFF") ### Label Settings Global settings for label display: - **show_labels_on_canvas:** Boolean to toggle label visibility - **default_width_mm:** Default width for new labels in millimeters ### Key Hierarchy Example ```json { "bom": { "X1": "Connector instance", "W1": "Wire instance", "C1": "Cable instance" }, "data": { "mapping": { "W1": "Wire connection", "C1.1": "Cable core 1 connection", "C1.2": "Cable core 2 connection" }, "connector_positions": { "X1": "Connector X1 position" }, "cable_positions": { "C1": "Cable C1 position" }, "wire_anchors": { "X1|X2": "Bundle label anchor", "W1": "Flying lead label anchor", "C1.1-1": "Cable core label anchor" }, "bundle_labels": { "uuid-1234": { "connector_instance_id": "X1", "label_text": "TO POWER SUPPLY", "wire_keys": ["W1", "W2"], "width_mm": 9, "text_color": "#000000", "background_color": "#FFFF00" } }, "label_settings": { "show_labels_on_canvas": true, "default_width_mm": 9 } } } ``` # TypeScript Interfaces Source: https://splice-cad.com/docs/harness/typescript-interfaces Complete TypeScript type definitions for the Splice harness schema Complete TypeScript type definitions for the Splice harness schema. Use these interfaces for type-safe integration with the Splice data format. ### Enums ```typescript export enum PartKind { Connector = 'connector', Terminal = 'terminal', Wire = 'wire', Cable = 'cable', Assembly = 'assembly', } export enum Gender { Male = 'male', Female = 'female', None = 'none', } export enum ConnectorShape { Circular = 'circular', Rectangular = 'rectangular', DSub = 'dsub', TerminalBlock = 'terminal_block', Ferrule = 'ferrule', QuickDisconnect = 'quickdisconnect', Ring = 'ring', Button = 'button', Spade = 'spade', Lug = 'lug', Usb = 'usb', Barrel = 'barrel', Header = 'header', Coaxial = 'coaxial', Rj = 'rj', Other = 'other', } export enum ConductorType { Solid = 'solid', Stranded = 'stranded', } export enum ConnectionSide { Left = 'left', Right = 'right', } ``` ### Main Working Harness Structure ```typescript export interface WorkingHarness { bom: Record; // Key is instance_id (e.g., "X1", "W1", "C1") data: WorkingData; harness_id?: string; revision_id?: string; } export interface ExpandedBomItem { instance_id: string; part: any; // Full part data (JSON value) - see Part interface structure below unit: string; } ``` ### Parts System ```typescript export interface Part { id: string; // UUID kind: PartKind; mpn: string; manufacturer: string; description?: string; img_url?: string; datasheet_url?: string; created_at?: string; // ISO datetime spec?: any; } export interface NewPart { kind: PartKind; mpn: string; manufacturer: string; description?: string; img_url?: string; datasheet_url?: string; } export interface AddPartDto { mpn: string; kind: 'connector' | 'wire' | 'terminal' | 'cable'; unit?: string; id?: string; // Optional UUID to uniquely identify the part } // BOM item stored in database (uses part ID) export interface BomItem { part_id: string; // UUID reference unit: string; // "each", "m", "ft", etc. } ``` ### Connector Specifications ```typescript export interface ConnectorSpec { color?: string; contact_gender?: Gender; contact_termination?: string; fastening_type?: string; features?: string[]; insulation_material?: string; mounting_type?: string; operating_temp_f?: string; pitch_mm?: number; positions: number; recommended_contacts?: string; row_spacing_mm?: number; rows?: number; series?: string; shape?: ConnectorShape; wire_awg_min?: number; wire_awg_max?: number; keying_code?: string; bridged_positions?: number[][]; // Custom connector fields is_custom?: boolean; created_by_user_id?: string; is_public?: boolean; is_approved?: boolean | null; custom_svg?: CustomConnectorSvg; pin_mapping?: Record; // Simple index->pin_number mapping custom_properties?: Record; } export interface CustomConnectorSvg { mate_side: string; wire_side: string; } export interface ConnectorPart extends Part { kind: PartKind.Connector; spec: { connector: ConnectorSpec; }; } ``` ### Wire Specifications ```typescript export interface WireSpec { awg?: number; stranding?: string | null; // e.g., "7/30" color?: string | null; stripe?: string | null; conductor_type: ConductorType; } export interface WirePart extends Part { kind: PartKind.Wire; spec: { wire: WireSpec; }; } ``` ### Cable Specifications ```typescript export interface CableCore { core_no: number; awg?: number; stranding?: string; color?: string; conductor_type: ConductorType; } export interface CableSpec { core_count?: number; shielded?: boolean; shield_type?: string; outer_diameter_mm?: number; voltage_rating?: number; default_length_m?: number; jacket_material?: string; temperature_rating_c?: number; flexibility?: string; template_data?: any; } export interface CablePart extends Part { kind: PartKind.Cable; spec: { cable: CableSpec; }; } export interface CableWithCores extends CablePart { cores: CableCore[]; } ``` ### Working Data Structure ```typescript export interface WorkingData { mapping: Record; // Key is wire/cable instance_id (e.g., "W1", "C1") connector_positions: Record; // Key is connector instance_id (e.g., "X1", "X2") wire_anchors: Record; // Key is "connector1|connector2" (e.g., "X1|X2") cable_positions?: Record; // Key is cable instance_id design_notes?: DesignNote[]; // Optional for backward compatibility name?: string | null; description?: string | null; notes?: string | null; /** @deprecated Use wire_anchors[key].hidden instead. Kept for backward compatibility. */ hidden_bundles?: string[]; } ``` ### Connection System ```typescript export interface Connection { end1?: ConnectionTermination; end2?: ConnectionTermination; label?: string; length_mm?: number; } export interface TerminationRouting { mode: string; // "auto" or "manual" waypoints?: WireAnchor[]; // waypoints for this termination } export type ConnectionTermination = | { type: 'connector_pin'; connector_instance: string; pin: number; side: ConnectionSide; terminal_instance?: string; routing?: TerminationRouting; } | { type: 'cable_core'; cable_instance: string; core_no: number; side: ConnectionSide; routing?: TerminationRouting; } | { type: 'flying_lead'; termination_type: 'tinned' | 'bare' | 'heat_shrink'; strip_length_mm?: number; tin_length_mm?: number; terminal_instance?: string; routing?: TerminationRouting; }; ``` ### Position Types ```typescript export interface Position { x: number; y: number; width?: number; // Optional width for adjustable blocks height?: number; // Optional height for adjustable blocks collapsed?: boolean; // Optional collapse state for connectors/cables hidden?: boolean; // Optional hidden state for wire bundles } export type ConnectorPosition = Position; export type WireAnchor = Position; export interface DesignNote { id: string; x: number; y: number; content: string; created_at?: string; width?: number; } ``` ### Harness Management ```typescript export interface Harness { id: string; owner_id: string; name: string; description?: string; is_public: boolean; share_token?: string; created_at: string; modified_at: string; } export interface NewHarness { name: string; description?: string; is_public: boolean; } export interface RevisionDoc { bom: Record; data: WorkingData; } ``` ### TypeScript Example ```typescript const exampleHarness: WorkingHarness = { bom: { X1: { instance_id: 'X1', part: { id: '12345678-1234-1234-1234-123456789abc', kind: 'connector', mpn: '09-50-1031', manufacturer: 'Molex', description: '3 Position Wire to Board Connector', spec: { connector: { positions: 3, rows: 1, shape: 'rectangular', contact_gender: 'female', pitch_mm: 2.54, }, }, }, unit: 'each', }, W1: { instance_id: 'W1', part: { id: '11111111-2222-3333-4444-555555555555', kind: 'wire', mpn: 'AWG22-RED', manufacturer: 'Generic', description: '22 AWG Stranded Wire, Red', spec: { wire: { awg: 22, stranding: '7/30', color: 'red', conductor_type: 'stranded', }, }, }, unit: 'ft', }, }, data: { mapping: { W1: { end1: { type: 'connector_pin', connector_instance: 'X1', pin: 1, side: 'right', }, end2: { type: 'flying_lead', termination_type: 'tinned', strip_length_mm: 6, tin_length_mm: 3, }, label: 'POWER', length_mm: 152.4, }, }, connector_positions: { X1: { x: 100, y: 200 }, }, wire_anchors: {}, name: 'Example Harness', description: 'Simple harness example', }, }; ``` # JSON Schema Source: https://splice-cad.com/docs/harness/json-schema Complete JSON Schema (draft-07) for validating Splice harness data Complete JSON Schema (draft-07) for validating Splice harness data. Use this schema for validation in any language that supports JSON Schema. ### Root Schema ```json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Splice Harness Schema", "description": "Complete schema for Splice cable harness data structure", "type": "object", "properties": { "bom": { "type": "object", "description": "Bill of Materials with expanded part data", "additionalProperties": { "$ref": "#/definitions/ExpandedBomItem" } }, "data": { "$ref": "#/definitions/WorkingData" }, "harness_id": { "type": "string", "format": "uuid", "description": "UUID of the harness if saved" }, "revision_id": { "type": "string", "format": "uuid", "description": "UUID of the harness revision if saved" } }, "required": ["bom", "data"] } ``` ### Enum Definitions ```json { "PartKind": { "type": "string", "enum": ["connector", "terminal", "wire", "cable", "assembly"] }, "Gender": { "type": "string", "enum": ["male", "female", "none"] }, "ConnectorShape": { "type": "string", "enum": [ "circular", "rectangular", "dsub", "terminal_block", "ferrule", "quickdisconnect", "ring", "button", "spade", "lug", "usb", "barrel", "header", "coaxial", "rj", "other" ] }, "ConductorType": { "type": "string", "enum": ["solid", "stranded"] }, "ConnectionSide": { "type": "string", "enum": ["left", "right"] }, "TerminationType": { "type": "string", "enum": ["tinned", "bare", "heat_shrink"] } } ``` ### BOM Item Definitions ```json { "ExpandedBomItem": { "type": "object", "properties": { "instance_id": { "type": "string" }, "part": { "$ref": "#/definitions/Part" }, "unit": { "type": "string" } }, "required": ["instance_id", "part", "unit"] }, "Part": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "kind": { "$ref": "#/definitions/PartKind" }, "mpn": { "type": "string" }, "manufacturer": { "type": "string" }, "description": { "type": "string" }, "img_url": { "type": "string", "format": "uri" }, "datasheet_url": { "type": "string", "format": "uri" }, "created_at": { "type": "string", "format": "date-time" }, "spec": { "type": "object" } }, "required": ["id", "kind", "mpn", "manufacturer"] } } ``` ### Connector Spec Definition ```json { "ConnectorSpec": { "type": "object", "properties": { "color": { "type": "string" }, "contact_gender": { "$ref": "#/definitions/Gender" }, "contact_termination": { "type": "string" }, "fastening_type": { "type": "string" }, "features": { "type": "array", "items": { "type": "string" } }, "insulation_material": { "type": "string" }, "mounting_type": { "type": "string" }, "operating_temp_f": { "type": "string" }, "pitch_mm": { "type": "number" }, "positions": { "type": "integer", "minimum": 1 }, "rows": { "type": "integer", "minimum": 1 }, "series": { "type": "string" }, "shape": { "$ref": "#/definitions/ConnectorShape" }, "wire_awg_min": { "type": "integer" }, "wire_awg_max": { "type": "integer" }, "keying_code": { "type": "string" }, "bridged_positions": { "type": "array", "items": { "type": "array", "items": { "type": "integer" } } }, "is_custom": { "type": "boolean" }, "custom_svg": { "$ref": "#/definitions/CustomConnectorSvg" }, "pin_mapping": { "type": "object", "additionalProperties": true } }, "required": ["positions"] } } ``` ### Wire and Cable Spec Definitions ```json { "WireSpec": { "type": "object", "properties": { "awg": { "type": "integer" }, "stranding": { "type": ["string", "null"] }, "color": { "type": ["string", "null"] }, "stripe": { "type": ["string", "null"] }, "conductor_type": { "$ref": "#/definitions/ConductorType" } }, "required": ["conductor_type"] }, "CableSpec": { "type": "object", "properties": { "core_count": { "type": "integer" }, "cores": { "type": "array", "items": { "$ref": "#/definitions/CableCore" } }, "shielded": { "type": "boolean" }, "shield_type": { "type": "string" }, "outer_diameter_mm": { "type": "number" }, "voltage_rating": { "type": "number" }, "default_length_m": { "type": "number" }, "jacket_material": { "type": "string" }, "temperature_rating_c": { "type": "number" }, "flexibility": { "type": "string" } } }, "CableCore": { "type": "object", "properties": { "core_no": { "type": "integer" }, "core_designation": { "type": ["string", "null"] }, "awg": { "type": ["integer", "null"] }, "stranding": { "type": ["string", "null"] }, "core_color": { "type": ["string", "null"] }, "conductor_type": { "$ref": "#/definitions/ConductorType" } }, "required": ["core_no"] } } ``` ### Working Data Definition ```json { "WorkingData": { "type": "object", "properties": { "mapping": { "type": "object", "description": "Wire/cable connections mapping", "additionalProperties": { "$ref": "#/definitions/Connection" } }, "connector_positions": { "type": "object", "description": "Connector positions on canvas", "additionalProperties": { "$ref": "#/definitions/Position" } }, "wire_anchors": { "type": "object", "description": "Wire routing anchor points", "additionalProperties": { "$ref": "#/definitions/Position" } }, "cable_positions": { "type": "object", "description": "Cable positions on canvas", "additionalProperties": { "$ref": "#/definitions/Position" } }, "design_notes": { "type": "array", "items": { "$ref": "#/definitions/DesignNote" } }, "bundle_labels": { "type": "object", "description": "Labels for connectors and cables", "additionalProperties": { "$ref": "#/definitions/BundleLabel" } }, "name": { "type": ["string", "null"] }, "description": { "type": ["string", "null"] }, "notes": { "type": ["string", "null"] } }, "required": ["mapping", "connector_positions", "wire_anchors"] } } ``` ### Connection Definition ```json { "Connection": { "type": "object", "properties": { "end1": { "$ref": "#/definitions/ConnectionTermination" }, "end2": { "$ref": "#/definitions/ConnectionTermination" }, "label": { "type": "string" }, "length_mm": { "type": "number" } } }, "ConnectionTermination": { "type": "object", "properties": { "type": { "type": "string", "enum": ["connector_pin", "cable_core", "flying_lead"] } }, "required": ["type"] }, "Position": { "type": "object", "properties": { "x": { "type": "number" }, "y": { "type": "number" }, "width": { "type": "number" }, "height": { "type": "number" }, "collapsed": { "type": "boolean" }, "hidden": { "type": "boolean" } }, "required": ["x", "y"] } } ``` ### JSON Example ```json { "bom": { "X1": { "instance_id": "X1", "part": { "id": "12345678-1234-1234-1234-123456789abc", "kind": "connector", "mpn": "09-50-1031", "manufacturer": "Molex", "description": "3 Position Wire to Board Connector", "spec": { "connector": { "positions": 3, "rows": 1, "shape": "rectangular", "contact_gender": "female", "pitch_mm": 2.54 } } }, "unit": "each" }, "W1": { "instance_id": "W1", "part": { "id": "11111111-2222-3333-4444-555555555555", "kind": "wire", "mpn": "AWG22-RED", "manufacturer": "Generic", "description": "22 AWG Stranded Wire, Red", "spec": { "wire": { "awg": 22, "stranding": "7/30", "color": "red", "conductor_type": "stranded" } } }, "unit": "ft" } }, "data": { "mapping": { "W1": { "end1": { "type": "connector_pin", "connector_instance": "X1", "pin": 1, "side": "right" }, "end2": { "type": "flying_lead", "termination_type": "tinned", "strip_length_mm": 6, "tin_length_mm": 3 }, "label": "POWER", "length_mm": 152.4 } }, "connector_positions": { "X1": { "x": 100, "y": 200 } }, "wire_anchors": {}, "name": "Example Harness", "description": "Simple harness example" } } ``` # Python API (splice-py) Source: https://splice-cad.com/docs/harness/python-api Python library for programmatic harness generation, batch processing, and workflow integration The **splice-py** Python library enables programmatic generation of cable harness designs, perfect for automation, batch processing, and integration with existing engineering workflows. ### Installation ```bash pip install splice-py ``` ### Quick Example ```python from splice import Harness harness = Harness(name="Power Distribution") harness.add_connector(instance_id="X1", mpn="1-480698-0", positions=4) harness.add_wire(instance_id="W1", mpn="UL1007-18-RED", awg=18) # Export to JSON or upload directly json_output = harness.to_json() result = harness.upload(api_key="your-api-key") ``` ### Full Documentation For complete API reference, examples, and usage guides: - [Full Documentation on GitHub](https://github.com/splice-cad/splice-py#readme) - [PyPI Package](https://pypi.org/project/splice-py/) - [Example Scripts](https://github.com/splice-cad/splice-py/tree/main/examples) ### Getting Your API Key To upload harnesses programmatically, you need an API key from your [Account Settings](/app/#/account) page. # Embed Library Source: https://splice-cad.com/docs/harness/embed-library JavaScript library for embedding interactive Splice harness diagrams on websites The **@splice-cad/embed** JavaScript library allows you to embed interactive Splice harness diagrams directly on your website, documentation, or web application. ### Installation ```html ``` ### Quick Example ```html
``` ### Full Documentation For complete API reference, configuration options, and examples: - [Full Documentation on GitHub](https://github.com/splice-cad/splice-embed#readme) - [npm Package](https://www.npmjs.com/package/@splice-cad/embed) - [Live Examples](https://github.com/splice-cad/splice-embed/tree/main/examples) ### Sharing Harnesses To embed a harness: - **Public harnesses:** Use the harness ID directly - **Private harnesses:** Generate a share token from harness settings and pass it via the `token` option Share tokens can be generated from any harness's settings menu. # GitHub Integration Source: https://splice-cad.com/docs/harness/github-integration Link a Splice design — a plan or an assembly — to a GitHub repo. Splice commits the design JSON and a render workflow. Every push auto-produces PDFs, BOMs, and other exports as workflow artifacts. Link a Splice design — either a plan (Project Workflow) or an assembly (Harness Builder) — to a GitHub repo. Splice commits the design JSON plus a render workflow, and every push to the design file (or a manual workflow run) auto-produces PDFs, PNGs, SVGs, BOMs, and other exports. Rendered outputs are committed back to the repo and uploaded as workflow artifacts. One action image ([`splice-cad/plan-export-action`](https://github.com/splice-cad/plan-export-action)) handles both design types. You can use it three ways: 1. **In-app link + push** — Splice manages the commit for you (recommended for most users). 2. **Manual upload to GitHub** — skip the link, commit JSON + workflow to your own repo by hand. 3. **Run the action locally** — render JSON to PDF/PNG/etc. without GitHub at all. --- ## 1. In-app link + push ### Linking a design 1. Open the plan or assembly in Splice. 2. In the top toolbar (or the row menu on the home page), click the **GitHub** icon. 3. Fill out the dialog: ![Link to GitHub dialog: Repository, GitHub Token with inline PAT permission checklist (Repository access, Contents, Workflows, Metadata), Branch, Plan path in repo, Rendered output directory.](/images/docs/github_link_dialog.png) | Field | Description | |---|---| | **Repository** | `owner/repo` or full URL (e.g. `acme/harnesses` or `github.com/acme/harnesses`). | | **GitHub Token** | A fine-grained PAT. The dialog shows the required permissions inline — **Repository access** (target repo only), **Contents: Read and write**, **Workflows: Read and write**, **Metadata: Read** (auto-included). Create one at GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens. | | **Branch** | Target branch for commits. Defaults to `main`. | | **Plan path in repo** / **Harness path in repo** | Where the design JSON lives. Default `plans/my-harness.plan.json` for plans, `schematics/my-harness_schema.json` for assemblies. | | **Rendered output directory** | Where rendered outputs land. Defaults to `rendered`. | | **Exports** | Check which export targets to produce on each run (see table below). | 4. Click **Link**. Splice validates the token, encrypts + stores it, and the toolbar button becomes a GitHub menu. ### Pushing **GitHub → Push to GitHub** commits three files to the repo: 1. **The design JSON** at the configured path. This matches the shape of **Download JSON** from Harness Builder (or the plan Export menu) — fully-hydrated BOM with `.part` expanded on every entry. 2. **`splice.yml`** — the render config (design type, export targets, output directory). 3. **A workflow file** — `.github/workflows/render.yml` for plans, `.github/workflows/render-harness.yml` for assemblies. Only created if one doesn't already exist, so a plan and an assembly can coexist in the same repo without clashing. On every subsequent push to the design file (from Splice or directly), the render workflow fires, produces the artifacts, and commits them back to the configured output directory. Outputs are also uploaded as workflow artifacts. ### Editing + unlinking **GitHub → Edit Link** changes any field (repo, branch, path, export targets, token) without re-committing files. **GitHub → Unlink** removes the Splice-side link; files already in the repo are left untouched. --- ## 2. Manual upload to GitHub (no in-app link) If you'd rather manage the repo yourself — e.g. the repo already has its own workflow scaffolding, or you don't want to paste a PAT into Splice — you can skip the link dialog entirely. 1. From Harness Builder: **Download & Upload → Download JSON**. From a plan: **Export → Download Plan JSON**. Save it to your repo (e.g. `schematics/my-harness_schema.json` or `plans/my-harness.plan.json`). 2. Add a `splice.yml` next to it (or at repo root) — see examples below. 3. Add a workflow at `.github/workflows/render.yml`: ```yaml name: Render splice design on: push: paths: - 'schematics/**' # adjust to match your design path - 'splice.yml' - '.github/workflows/render.yml' workflow_dispatch: permissions: contents: write jobs: render: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: splice-cad/plan-export-action@v0 # Point at the splice.yml if not at repo root: # with: # config: schematics/splice.yml - uses: actions/upload-artifact@v4 with: name: rendered path: rendered/ if-no-files-found: error ``` 4. Commit and push. The action pulls `ghcr.io/splice-cad/plan-export-action:v0`, renders the design, and uploads the output directory as a workflow artifact. The committed JSON is the source of truth — update it by re-downloading from Splice and committing the new file. No PAT is required on the Splice side because Splice never touches your repo. --- ## 3. Run the action locally The same Docker image that runs in the GitHub workflow can render a design on your own machine. ### One-off render ```bash # Stage the JSON + a splice.yml in a workspace dir mkdir -p /tmp/render/schematics /tmp/render/rendered cp my-harness_schema.json /tmp/render/schematics/ cat > /tmp/render/schematics/splice.yml <<'YML' design: type: harness design-path: schematics/my-harness_schema.json exports: formats: - schematic-pdf - physical-all-pages-pdf - bom-csv output-dir: rendered YML # Run the action against that workspace docker run --rm \ -v /tmp/render:/github/workspace \ -e INPUT_CONFIG=schematics/splice.yml \ ghcr.io/splice-cad/plan-export-action:v0 # Outputs land in /tmp/render/rendered/ ls /tmp/render/rendered/ ``` For a plan, drop `design.type: harness` and point `design.design-path` at the `.plan.json`. ### Useful env vars | Var | Equivalent `with:` input | Purpose | |---|---|---| | `INPUT_CONFIG` | `config` | Path to `splice.yml` (relative to workspace). | | `INPUT_PLAN_PATH` | `plan-path` | Override the design path from `splice.yml`. | | `INPUT_DESIGN_TYPE` | `design-type` | Force `plan` or `harness` (otherwise auto-detected from JSON shape). | | `INPUT_ONLY` | `only` | Comma-separated export targets, overrides `exports.formats`. | | `INPUT_OUTPUT_DIR` | `output-dir` | Override output directory. | --- ## Export targets ### Plan | Target | Output | |---|---| | **All Pages PDF (Layout + Schematic)** | Multi-page PDF, layout + schematic view for every plan page | | **All Pages PDF (Layout only)** | Multi-page PDF, layout view per page | | **All Pages PDF (Schematic only)** | Multi-page PDF, schematic view per page | | **BOM (XLSX / CSV / PDF)** | Bill of materials in three formats | | **Connection Table (XLSX)** | Pin-level wiring data grouped by connector | | **ICD (PDF)** | Interface control document with all selected ICD sheets | See [Export & Import](/docs/plan/export-and-import) for full plan export details. ### Assembly | Target | Output | |---|---| | **Schematic PDF / PNG / SVG** | Schematic diagram in three formats | | **Physical Drawing — All Sheets (PDF)** | Multi-page PDF covering every drawing sheet | | **Physical Drawing (PDF / PNG / SVG)** | Active drawing sheet in three formats | | **BOM (XLSX / CSV / PDF)** | Bill of materials in three formats | Physical targets silently skip if the assembly has no physical layout configured. See [PDF Export Options](/docs/harness/pdf-export) for in-app export details. --- ## The `splice.yml` config ### Plan ```yaml design: plan-path: plans/my-harness.plan.json exports: formats: - all-pages-pdf - bom-xlsx - bom-csv - connection-table-xlsx output-dir: rendered ``` ### Assembly ```yaml design: type: harness design-path: schematics/my-harness_schema.json exports: formats: - schematic-pdf - schematic-png - physical-all-pages-pdf - bom-xlsx - bom-csv output-dir: schematics/rendered ``` You can edit `splice.yml` in the repo directly — add or remove targets without re-linking. The next push will respect the new config. --- ## Troubleshooting - **"Repo not found" or 403 during link:** the PAT lacks access to the repo, or is scoped to the wrong owner. Double-check the PAT repository access list. - **Workflow doesn't run after push:** check GitHub Actions is enabled (**Repo Settings → Actions → General**), and that the PAT's `Workflows` permission is set to Read and write. Without the Workflows permission, the workflow-file commit silently fails. - **"Unknown export target" in the workflow log:** the render action image is older than the target. The image floats via the `@v0` tag; wait for the latest Splice release to propagate, or pin to a specific version (e.g. `@v0.3.0`) in the workflow file. - **Need to regenerate the workflow:** delete the workflow file from the repo (`.github/workflows/render.yml` or `render-harness.yml`) and push from Splice again — a fresh workflow will be created. --- ## Action reference The render action is published to GitHub Container Registry at `ghcr.io/splice-cad/plan-export-action`. Tag convention: | Tag | Meaning | |---|---| | `@v0.x.y` | Reproducible — pinned to an exact release | | `@v0.x` | Floats across patch releases within the minor version | | `@v0` | Floats across minor releases — default, used by Splice-generated workflows | | `@latest` | Floats across major releases | Source code lives at [splice-cad/plan-export-action](https://github.com/splice-cad/plan-export-action). # KiCad Plugin Source: https://splice-cad.com/docs/harness/kicad-plugin Export the connectors (board headers) on your KiCad PCB straight into a Splice Project in one click. The plugin detects each header, reads its pin functions from the netlist, and lands them in the Project Workflow — where you assign mating connectors and wire them up into a complete cable-harness document. The Splice CAD KiCad plugin exports the **connectors (board headers)** on your PCB straight into a Splice **Project** — one click, **Tools → External Plugins → Export to Splice CAD**. It detects each header from the PCB, reads its pin functions from the netlist, and carries part metadata (MPN, manufacturer) into the BOM. The headers land in the **Project Workflow** as components, each with its pin count and the correct signal on every pin. You then assign the **mating connectors** and route conductors between them to complete the cable-harness document. The plugin delivers the project two ways, chosen automatically: 1. **Desktop handoff** — if the Splice CAD desktop app is running, the plugin hands the project to it over localhost. Works offline; **no API key needed**. 2. **Web** — otherwise it POSTs to your Splice account using your API key, creates a **Project**, and gives you a link to open it in the Project Editor. --- ## 1. Install The plugin is distributed through KiCad's **Plugin and Content Manager** (PCM). ### From the Splice repository (recommended — auto-updates) 1. KiCad → **Plugin and Content Manager** → **Manage** (top-right) → **Repositories**. 2. Add this URL (name it "Splice CAD"): ``` https://splice-cad.github.io/splice-kicad-plugin/repository.json ``` 3. Back in the PCM, pick **Splice CAD** from the repository dropdown. 4. Select **Splice CAD** → **Install** → **Apply Pending Changes**. KiCad Plugin and Content Manager — Manage Repositories, with 'Splice CAD KiCad plugin repository' added alongside the KiCad official repository, pointing at the repository.json URL. ### From a file Download `splice-kicad-plugin-.zip` from [Releases](https://github.com/splice-cad/splice-kicad-plugin/releases) and use **Plugin and Content Manager → Install from File**. After installing, open the **PCB Editor** — you'll find **Export to Splice CAD** and **Splice CAD — Settings** under **Tools → External Plugins**. (If they don't appear, see [Troubleshooting](#troubleshooting).) > **Requirements:** KiCad 9.0 or newer (the plugin runs in the PCB Editor). It uses KiCad's bundled Python 3.9+. --- ## 2. Set up (Settings) Open **Tools → External Plugins → Splice CAD — Settings**. Splice CAD — Settings dialog: API key field with a 'Get API key on splice-cad.com' button, Server URL, fuzzy-match and connector-prefix options, the desktop-handoff toggle, and Test connection showing 'Connected — API key is valid'. | Field | Description | |---|---| | **API key** | Your Splice CAD API key — **Get API key on splice-cad.com…** opens your account page. Used for the **web** send path; **optional** if you only send to the running desktop app. | | **Server URL** | Splice backend. Default `https://splice-cad.com`; override only for local testing. | | **Fuzzy match KiCad properties for manufacturer / MPN** | When on, tokens like `manufacturer` / `mfr` / `part number` in **any** field name are recognized (e.g. `OEM_Part_Number`); when off, only the explicit synonyms. | | **Connector designator prefixes** | Comma-separated (e.g. `J, CN, CON, P, X`). Blank uses the default `J, CN, CON, P, X`; add custom prefixes if your library uses others. | | **Send to Splice CAD desktop app when it's running** | When on, POSTs to the desktop app over localhost (offline, no network roundtrip); falls back to the Server URL if the desktop isn't reachable. | **Test connection** validates the key + server before exporting. --- ## 3. Export a design 1. Open your board in the **PCB Editor** and make sure it's **saved**. 2. **Tools → External Plugins → Export to Splice CAD**. 3. The preview dialog shows: - a board summary (connectors, pins, and how the netlist resolved), - the **send path** that will be used (desktop or web), - a per-connector list with footprint, MPN, pin count, and the full pin table, - a checkbox per connector so you can **deselect** anything you don't want exported. 4. Click **Send**. On success you get an **Open in Splice CAD** action that takes you straight to the new Project in the Project Editor. Splice CAD — Export preview: board summary (footprints scanned, connectors detected, netlist pin functions populated, PlanData node/pin counts), the per-connector checklist (J1–J8 with manufacturer + MPN), and the per-pin signal table. The board headers land as components on an auto-arranged grid (Splice's **Auto-arrange** can re-flow them), each with its pins and net-derived signals. From here you complete the cable-harness document in the **Project Workflow**: resolve each header to a catalog part, **add the mating connector** that plugs into it, and route conductors between them. --- ## 4. What gets imported **Board connectors (headers).** Detected from the PCB by reference prefix (`J`, `CN`, `CON`, `P`, `X`) and footprint name (JST, Molex, TE, Hirose, Phoenix, and generic header/socket/plug patterns). Mounting holes and non-plated pads (`MP*`, `MH*`, `MTG*`, `np_thru_hole`) are filtered out. These are the board-side interface — the components you'll assign mating connectors to. **Pins and pin functions.** Each connector pad becomes a pin. If a netlist (`.net`) sits next to the board, each pin is labelled with the **net it carries** — so `J1.3` and `J7.12` on `CAN_H` both show `CAN_H`. Unconnected pins show `NC`. > **To get pin functions, export a netlist.** In the Schematic Editor: **File → Export → Netlist → KiCad (S-expression)**, saved next to your board as `.net`. Without it, pins import with numbers only. **Part metadata → BOM.** Manufacturer and MPN are pulled from the symbol/footprint properties (a long synonym list — `MPN`, `Mfr_PN`, `Manufacturer_Part_Number`, …) and written to the Splice BOM so you can resolve catalog parts after import. The KiCad project name becomes the Splice project name. **Stable IDs.** Node and pin IDs are derived from each connector's reference, so re-exporting the same project produces the same shape. What you do in Splice's Project Workflow after import: resolve each header to a catalog part, **add the mating connector** for each one, route conductors between header and mate, and set wire colors/gauges — completing the cable-harness document. (The plugin imports only the board-side headers; it doesn't invent the mating side or the wiring.) --- ## Troubleshooting - **Menu entry / icon doesn't appear after install.** **Tools → External Plugins → Refresh Plugins**, or restart KiCad. The plugin lives in the **PCB Editor**, not the Schematic Editor. - **"No board file is open."** Save the board first — the plugin reads the saved `.kicad_pcb`. - **No connectors detected.** Your connectors may use non-standard reference prefixes. Use one of `J / CN / CON / P / X`, or a recognized connector footprint. - **Pins import without functions (all NC).** No netlist was found next to the board — export `.net` from the Schematic Editor (see above). - **"Send" is disabled.** Neither path is available: the desktop app isn't running **and** no API key is configured. Start the desktop app, or add an API key in **Settings**. - **Re-exporting makes a new project each time.** Expected in the current release — match-and-update on re-export is planned. For now, re-import replaces by opening the newest plan. --- ## Source The plugin is open source (GPL-3.0) at [splice-cad/splice-kicad-plugin](https://github.com/splice-cad/splice-kicad-plugin). Issues and contributions welcome.