main
John Lauer Publish 0.2.0 791d99c 11d ago
from pathlib import Path
import cadquery as cq
import json,struct
P=Path(__file__).resolve().parents[1];O=P/'cad/harness'
for stem in ['fan-with-flying-leads','fan-adom-harness']:
 a=cq.Assembly(name=stem)
 a.add(cq.importers.importStep(str(P/'cad/MF40200V1-1000U-G99-ai-nominal.step')).val(),name='Fan')
 a.add(cq.importers.importStep(str(O/(stem+'-connection.step'))).val(),name='Connection')
 a.export(str(O/(stem+'.step')))
 b=(O/(stem+'.glb')).read_bytes();n=struct.unpack_from('<I',b,12)[0];g=json.loads(b[20:20+n]);tail=b[20+n:];g.pop('animations',None);j=json.dumps(g,separators=(',',':')).encode();j+=b' '*(-len(j)%4)
 (O/(stem+'-static.glb')).write_bytes(struct.pack('<III',0x46546c67,2,20+len(j)+len(tail))+struct.pack('<II',len(j),0x4e4f534a)+j+tail)
# PCB model origin at pad 1, board surface z=0; row along +Y as footprint.
a=cq.Assembly(name='M20_9990346')
a.add(cq.Workplane('XY').box(2.54,7.62,2.54).translate((0,2.54,1.27)),name='Housing',color=cq.Color(.06,.06,.06))
for i in range(3):a.add(cq.Workplane('XY').box(.64,.64,11.64).translate((0,i*2.54,2.82)),name=f'Pin_{i+1}',color=cq.Color(.72,.74,.76))
a.export(str(O/'M20-9990346-ai-nominal.step'))
h=cq.Workplane('XY').box(2.5,7.82,14).translate((0,2.54,7))
for i in range(3):h=h.cut(cq.Workplane('XY').box(1,1,14.2).translate((0,i*2.54,7)))
cq.exporters.export(h,str(O/'M20-1060300-ai-nominal.step'))
p=O/'Harwin_M20-9990346_1x03_P2.54mm_Vertical.kicad_mod';p.write_text(p.read_text().replace('(drill 1)', '(drill 1.02)'))
print('Complete STEP assemblies, static GLBs and standalone connector STEP models written.')