R2:底板 / 刀片布局布线脚本、快照、截图与规划文档更新(含外壳、打印件、布线归档)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
这个提交包含在:
@@ -0,0 +1,40 @@
|
||||
import sys, io, json
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace', write_through=True)
|
||||
import pythoncom, win32com.client as wc
|
||||
|
||||
def prop(o, n):
|
||||
v = getattr(o, n)
|
||||
return v() if type(v).__name__ in ('method','function','builtin_function_or_method') else v
|
||||
|
||||
app = wc.GetActiveObject('SldWorks.Application')
|
||||
doc = app.ActiveDoc
|
||||
print('active:', prop(doc,'GetTitle'), '| docs', prop(app,'GetDocumentCount'))
|
||||
rows = []
|
||||
for c in doc.GetComponents(True):
|
||||
nm = prop(c, 'Name2')
|
||||
try:
|
||||
b = [round(v*1000, 3) for v in c.GetBox(False, False)]
|
||||
except Exception:
|
||||
b = None
|
||||
rows.append((nm, b))
|
||||
rows.sort(key=lambda r: (r[1][0] if r[1] else 0))
|
||||
print('top-level comps:', len(rows))
|
||||
print('%-34s %8s %8s %8s %8s %8s %8s' % ('name','x0','x1','y0','y1','z0','z1'))
|
||||
for nm, b in rows:
|
||||
if b:
|
||||
print('%-34s %8.2f %8.2f %8.2f %8.2f %8.2f %8.2f' % (nm[:34], b[0],b[3],b[1],b[4],b[2],b[5]))
|
||||
else:
|
||||
print('%-34s <no box>' % nm[:34])
|
||||
blades = sorted([(b[1],b[4],nm) for nm,b in rows if b and 'BLADE' in nm.upper()])
|
||||
print('\nblade y spans (%d):' % len(blades))
|
||||
prev = None
|
||||
for y0,y1,nm in blades:
|
||||
gap = '' if prev is None else ' gap %.3f' % (y0-prev)
|
||||
print(' y %8.3f ~ %8.3f centre %8.3f%s' % (y0, y1, (y0+y1)/2, gap))
|
||||
prev = y1
|
||||
fans = [(nm,b) for nm,b in rows if b and ('OD6025' in nm.upper() or 'FAN' in nm.upper())]
|
||||
print('\nfans:')
|
||||
for nm,b in fans:
|
||||
print(' %-30s x %8.2f~%8.2f y %8.2f~%8.2f z %8.2f~%8.2f' % (nm[:30], b[0],b[3],b[1],b[4],b[2],b[5]))
|
||||
json.dump([{'name':nm,'box':b} for nm,b in rows], open('_top.json','w',encoding='utf-8'), ensure_ascii=False, indent=1)
|
||||
print('\nsaved _top.json')
|
||||
在新工单中引用
屏蔽一个用户