From 2afd91ade89cd8c2f96fc25f4aaaf13b87efa23a Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 21 Sep 2024 16:37:23 -0700 Subject: [PATCH 1/2] initial implementation of cad model render --- bun.lockb | Bin 125652 -> 125652 bytes .../base-components/NormalComponent.ts | 30 ++++++++++++++++++ package.json | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index e8e13bc66d5a10bb5ae274b581c5bf712a5bad84..bd3722b453be5d2f39937b5194352ad23989e11c 100755 GIT binary patch delta 419 zcmca|mHo<9_6d3lM~oxBAF&c(_Q`oR;nbvO&Wk)tCRus&hK1bjblbhPeac3^CPqPZ z1_lN}28M=jK$;&&cTRrDD9@O)nUP7JOCbO6^37!z8vS|BFI>0#rnc~A10D}yMu*9Y zqUw_qL^)V>_!t-*Cg;joGp?AtQr>>EhQb*SPBx%PX+X@h`EQ0h7ZTUESV7!@Q`l4U zd%!7P0rPt%M?&7Vd9HfCFZ_MJoz0Qkh9BJ6Sd>mQ9QbnngtzCk?#CGt>YGY*XITkt z*tT5YYO#RR0iMdqYr7;S%XWJ+YERzT6}~y6`@n9-gzcK{jQ&il$v|6Ew%2+xIIwPkRP)Y-c*{0w0XO!mD1~P$eXJDNE)t}LxQG2^-0ONla5FN@W z#l*oFXP{@GXJj}%KbBEqdVV;g2nSP6Vo7Ro3B&g8aK^Xn)7Qi^`Z4BA{~gaL$=Eqv zG=b50dPO{=$#ka(MzQU235=D-K#t%fMy=^~Qy6QfcTQ&HpDr|oQD^(EDU4EK00FOv A%m4rY delta 435 zcmca|mHo<9_6d3l@66ujf7sKb>{xpD+Rnq53#aJGbpM(;XRCzYHgi=!nc|IpO^kxy z7#JA%85kPWfwUlyK05g!qden^&5TU)Tmn4j7p~iVQ(HLy@AA!M7aILH8}N7tGuls9 z6jh&`Aj-k0Gx?>wJ!=LZ1B1ilTsiB_8VYATIGKPZB>^$p=D!*4Tu5BsVg+%B`~2(7 zBcr2FxJ5<&Qrf>%bEEFJ(~>(_4wM~9eAl?Nr+gZx1lyvDT^dnOV;_49ZrK(&=Wdp| zzgN-oy&(bi8F%a^ukDhUEZgnPs6BaSSNP_P?gP6SleTNRGx{^JrUGqE+g|I*=*+^H zH2t72<9tT#?TLPj>5PKfKq)PdqkxzZi20^p^k@Tx9rnJ5*SUUSHv^=Nv{BUUKSW` z`t`8~-dr*?7hnWg0|G~ = { [K in T]: Port @@ -416,4 +417,33 @@ export class NormalComponent< this.add(newPort) } } + + doInitialCadModelRender(): void { + const { db } = this.root! + const { _parsedProps: props } = this + + if (props.cadModel) { + // Use post-layout bounds + const bounds = this._getPcbCircuitJsonBounds() + + const cadModel: CadModelProp = props.cadModel + + if (typeof cadModel === "string") { + throw new Error("String cadModel not yet implemented") + } + + const cad_model = db.cad_component.insert({ + // TODO z maybe depends on layer + position: { x: bounds.center.x, y: bounds.center.y, z: 0 }, + pcb_component_id: this.pcb_component_id!, + source_component_id: this.source_component_id!, + model_stl_url: "stlUrl" in cadModel ? cadModel.stlUrl : undefined, + model_obj_url: "objUrl" in cadModel ? cadModel.objUrl : undefined, + model_jscad: "jscad" in cadModel ? cadModel.jscad : undefined, + + // TODO + // footprinter_string: + }) + } + } } diff --git a/package.json b/package.json index 4b208a8..0e892ee 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@lume/kiwi": "^0.4.3", "@tscircuit/infgrid-ijump-astar": "^0.0.21", "@tscircuit/math-utils": "^0.0.4", - "@tscircuit/props": "^0.0.63", + "@tscircuit/props": "^0.0.64", "@tscircuit/soup": "^0.0.73", "@tscircuit/soup-util": "^0.0.28", "circuit-json": "^0.0.77", From ff51150c00f898b890b8a7efa9956bf060d83b34 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 21 Sep 2024 16:44:47 -0700 Subject: [PATCH 2/2] add test --- bun.lockb | Bin 125652 -> 125652 bytes package.json | 2 +- .../normal-components/chip.test.tsx | 22 ++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index bd3722b453be5d2f39937b5194352ad23989e11c..8f32921a823dd571f96532e9c6a1daa5e8a1a687 100755 GIT binary patch delta 145 zcmV;C0B--()d$qo2aqlxyDP&-{1E>dgaf#fU3Z+wEEE)l@K?J*3BmDKwVM0;u}&%< z0YQ@?6(^Hm6$rDaAH`}w5kIg)1OBH}+uoBQUZa;svshU*3CG+{v2fz8Ih-nT52m(m zs|Li#@r8XKv~^lKP%mp9hVo6(^Hm6$rDaAH`}w2@^>v_fX0W5I5d5#8mBuNvh|*SMP5=JjB~E@J0p%BFKQi z^v}pkNtTP_Xc#B5bS;`X60o+X5Y=-KLck1pgRP3Ut%?CE2>~>h5t0Eaw*r&_(pK1U BKbZgk diff --git a/package.json b/package.json index 0e892ee..504fd39 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@lume/kiwi": "^0.4.3", "@tscircuit/infgrid-ijump-astar": "^0.0.21", "@tscircuit/math-utils": "^0.0.4", - "@tscircuit/props": "^0.0.64", + "@tscircuit/props": "^0.0.65", "@tscircuit/soup": "^0.0.73", "@tscircuit/soup-util": "^0.0.28", "circuit-json": "^0.0.77", diff --git a/tests/components/normal-components/chip.test.tsx b/tests/components/normal-components/chip.test.tsx index 4e85ed4..41aa564 100644 --- a/tests/components/normal-components/chip.test.tsx +++ b/tests/components/normal-components/chip.test.tsx @@ -62,3 +62,25 @@ it("should create a Chip component with correct properties", async () => { convertCircuitJsonToSchematicSvg(circuit.getCircuitJson()), ).toMatchSvgSnapshot(import.meta.path) }) + +it("should create a Chip component with cadModel prop", async () => { + const { circuit } = getTestFixture() + + circuit.add( + + + , + ) + + circuit.render() + + const cadComponents = circuit.db.cad_component.list() + expect(cadComponents).toHaveLength(1) + expect(cadComponents[0].model_stl_url).toBe("https://example.com/chip.stl") +})