Files
wheel/scripts/build_70_m4_drill_plain.py

39 lines
1.9 KiB
Python

"""Rebuild a distinct 70 mm adapter with 24 plain M4 tap-drill holes.
Run through rebuild_70_m4_drill_plain.FCMacro in FreeCAD. The existing source
builder is used to retain its native editable PCD features and source contour.
"""
import os
from pathlib import Path
import FreeCAD as App
import FreeCADGui as Gui
import Part, Import
root = Path(r'C:\projects\wheel')
out = root / 'models' / '70_m4_drill_plain'
out.mkdir(parents=True, exist_ok=True)
src = root / 'scripts' / 'build_70.py'
code = src.read_text(encoding='utf-8')
old_target = "target = os.path.join(root, 'models', '\\u0037\\u0030\\u8f6c\\u63a5\\u677f_\\u53c2\\u6570\\u5316.FCStd')"
new_target = "target = os.path.join(root, 'models', '70_m4_drill_plain', '70_M4_drill_plain.FCStd')"
assert old_target in code
code = code.replace(old_target, new_target)
code = code.replace("('HoleDiameter', '4.234 mm', 'Through hole diameter (all 24 holes)')", "('HoleDiameter', '3.3 mm', 'M4x0.7 tap drill, all 24 holes')")
code = code.replace(" ('CountersinkDiameter', '6.8 mm', 'Countersink at bottom face'),\n", '')
begin = code.index("sheet.set('A16', 'CountersinkDepth')")
end = code.index("sheet.set('A17', 'OuterChamfer')", begin)
code = code[:begin] + code[end:]
begin = code.index('cones = []')
end = code.index('prior = set(doc.Objects)', begin)
code = code[:begin] + "final = current\nfinal.Label = '70 adapter - 24 plain M4 tap-drill holes'\ndoc.recompute()\nassert final.Shape.isValid() and len(final.Shape.Solids)==1\n\n" + code[end:]
os.chdir(str(root))
ns = {'__name__': '__main__', '__file__': str(src)}
exec(compile(code, str(src), 'exec'), ns)
doc, final = ns['doc'], ns['final']
assert abs(doc.getObject('Parameters').get('B4').Value-3.3) < 1e-8
Import.export([final], str(out / '70_M4_drill_plain.step'))
Gui.activeDocument().activeView().viewAxonometric()
Gui.activeDocument().activeView().fitAll()
Gui.activeDocument().activeView().saveImage(str(out / '70_M4_drill_plain.png'), 1600, 1200, 'White')
doc.save()