AnasSarkiz/NEMA14_RP2040

A NEMA stepper motor assembly concept with a controller board, proposed M3 screws and spacers, four motor leads with insulated splices, and a JST 4-pin connector harness.

Version
1.12.2
License
ISC
Stars
0

scripts/render.ts

import { readFileSync, writeFileSync } from "node:fs"
import { convertCircuitJsonToPcbSvg, convertCircuitJsonToSchematicSvg } from "circuit-to-svg"
import { Resvg } from "@resvg/resvg-js"
const json=JSON.parse(readFileSync('artifacts/board.circuit.json','utf8'))
if (!process.argv.includes('--schematic-only')) for (const layer of ['top','inner1','inner2','bottom'] as const) {
 const svg=convertCircuitJsonToPcbSvg(json,{layer})
 writeFileSync(`artifacts/pcb-${layer}.svg`,svg)
 writeFileSync(`artifacts/pcb-${layer}.png`,new Resvg(svg,{fitTo:{mode:'width',value:1500}}).render().asPng())
}
const sheets=json.filter((e:any)=>e.type==='schematic_sheet')
for(const [index,sheet] of sheets.entries()) {
 const schematicSvg=convertCircuitJsonToSchematicSvg(json,{width:2970,height:2100,schematicSheetId:sheet.schematic_sheet_id})
  .replace("<svg ", '<svg viewBox="0 0 2970 2100" ')
  .replace(/width="2970"/, 'width="297mm"').replace(/height="2100"/, 'height="210mm"')
 const suffix=String(index+1).padStart(2,'0')
 writeFileSync(`artifacts/schematic-a4-page-${suffix}.svg`,schematicSvg)
 const png=new Resvg(schematicSvg,{fitTo:{mode:'width',value:2970}}).render().asPng()
 writeFileSync(`artifacts/schematic-a4-page-${suffix}.png`,png)
 if(index===0) {
  writeFileSync('artifacts/schematic.svg',schematicSvg)
  writeFileSync('artifacts/schematic-a4.png',png)
 }
}