Update wiring diagram maker: formboard router + frontend
Backend formboard router and frontend (canvas, formboard, connector library, app/api, index/css) updates. Ignore *.log.
This commit is contained in:
@@ -130,6 +130,20 @@ const CONNECTOR_LIBRARY = {
|
||||
{ id: "can-j1939", name: "SAE J1939 9-pin", manufacturer: "Amphenol", partNumber: "HD10-9-1939P", pinCount: 9, description: "J1939 CAN heavy-vehicle datalink", pinLabels: ["−Battery","+Battery","GND","CAN H","Shield","GND","CAN L","NC","NC"] },
|
||||
{ id: "can-obd2", name: "OBD-II 16-pin", manufacturer: "Standard", partNumber: "SAE J1962", pinCount: 16, description: "On-board diagnostics port", pinLabels: ["Mfr","Mfr","GND","Mfr","Sig GND","CAN H","K-Line","Mfr","Bat+","Mfr","Mfr","Mfr","Mfr","CAN L","L-Line","OBD+"] },
|
||||
],
|
||||
"Deutsch DRC (Round)": [
|
||||
{
|
||||
id: "drc-30p", name: "DRC04-30P", manufacturer: "TE Connectivity",
|
||||
partNumber: "DRC04-30P-A191", pinCount: 30, shape: "circular",
|
||||
pinRings: [14, 10, 6],
|
||||
description: "30-pin circular environmental plug (pin contacts), IP67, 12–20 AWG",
|
||||
},
|
||||
{
|
||||
id: "drc-30s", name: "DRC06-30S", manufacturer: "TE Connectivity",
|
||||
partNumber: "DRC06-30S-A191", pinCount: 30, shape: "circular",
|
||||
pinRings: [14, 10, 6],
|
||||
description: "30-pin circular environmental socket (receptacle), IP67, 12–20 AWG",
|
||||
},
|
||||
],
|
||||
"General Automotive / EV": [
|
||||
{ id: "ga-motor3", name: "Motor Phase 3-pin", manufacturer: "varies", partNumber: "varies", pinCount: 3, description: "3-phase motor connections", pinLabels: ["U","V","W"] },
|
||||
{ id: "ga-res2", name: "Resolver 2-pin", manufacturer: "varies", partNumber: "varies", pinCount: 2, description: "Motor resolver position sensor", pinLabels: ["SIN","COS"] },
|
||||
@@ -155,6 +169,51 @@ function connectorToDevice(connId, diagramId) {
|
||||
if (!conn) return null;
|
||||
|
||||
const pinCount = conn.pinCount || 2;
|
||||
|
||||
if (conn.shape === "circular") {
|
||||
const size = 140;
|
||||
const cx = size / 2, cy = size / 2;
|
||||
const pinR = size * 0.471; // pins outside the body circle (body uses 0.386 ratio)
|
||||
|
||||
const pins = Array.from({ length: pinCount }, (_, i) => {
|
||||
const angle = -Math.PI / 2 + (2 * Math.PI * i / pinCount);
|
||||
const x = cx + pinR * Math.cos(angle);
|
||||
const y = cy + pinR * Math.sin(angle);
|
||||
let side;
|
||||
if (angle >= -3 * Math.PI / 4 && angle < -Math.PI / 4) side = "top";
|
||||
else if (angle >= -Math.PI / 4 && angle < Math.PI / 4) side = "right";
|
||||
else if (angle >= Math.PI / 4 && angle < 3 * Math.PI / 4) side = "bottom";
|
||||
else side = "left";
|
||||
return {
|
||||
id: `pin_${i + 1}`,
|
||||
name: conn.pinLabels ? (conn.pinLabels[i] || String(i + 1)) : String(i + 1),
|
||||
side,
|
||||
x_offset: Math.round(x * 10) / 10,
|
||||
y_offset: Math.round(y * 10) / 10,
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
diagram_id: diagramId,
|
||||
device_type: "connector",
|
||||
label: conn.name,
|
||||
reference: "",
|
||||
x: 200, y: 200,
|
||||
width: size, height: size,
|
||||
properties: {
|
||||
pinCount,
|
||||
shape: "circular",
|
||||
pinRings: conn.pinRings || [],
|
||||
orientation: "right",
|
||||
partNumber: conn.partNumber || "",
|
||||
manufacturer: conn.manufacturer || "",
|
||||
connectorLibraryId: connId,
|
||||
},
|
||||
pins,
|
||||
};
|
||||
}
|
||||
|
||||
// Standard rectangular connector
|
||||
const w = 120;
|
||||
const h = Math.max(60, pinCount * 18 + 20);
|
||||
const pins = Array.from({ length: pinCount }, (_, i) => ({
|
||||
|
||||
Reference in New Issue
Block a user