建立方向盘项目初始版本
This commit is contained in:
28
scripts/validate_70_m4_outline_preview.FCMacro
Normal file
28
scripts/validate_70_m4_outline_preview.FCMacro
Normal file
@@ -0,0 +1,28 @@
|
||||
from pathlib import Path
|
||||
import FreeCAD as A,Part,FreeCADGui as G,time,json,traceback
|
||||
from pivy import coin
|
||||
folder=Path(r'C:\projects\wheel\models\70_m4_threaded')
|
||||
try:
|
||||
d=A.openDocument(str(folder/'70_M4_threaded.FCStd'));d.recompute()
|
||||
src=Part.read(r'C:\projects\wheel\models\70转接板.step'); dst=d.getObject('OuterChamfer').Shape
|
||||
sections=[]
|
||||
for z in (0.2,1.,2.,4.,6.,7.,7.8):
|
||||
w1=max(src.slice(A.Vector(0,0,1),z),key=lambda w:w.Length)
|
||||
w2=max(dst.slice(A.Vector(0,0,1),z),key=lambda w:w.Length)
|
||||
w1=Part.Wire(Part.sortEdges(w1.Edges)[0]);w2=Part.Wire(Part.sortEdges(w2.Edges)[0])
|
||||
if not w1.isClosed() or not w2.isClosed(): raise RuntimeError('section wire not closed at '+str(z))
|
||||
f1,f2=Part.Face(w1),Part.Face(w2)
|
||||
if not f1.isValid() or not f2.isValid(): raise RuntimeError('section face invalid at '+str(z))
|
||||
sections.append({'z':z,'symmetric_difference_area':f1.cut(f2).Area+f2.cut(f1).Area,'source_area':f1.Area,'new_area':f2.Area})
|
||||
(folder/'outline_check.json').write_text(json.dumps(sections,indent=2),encoding='utf-8')
|
||||
v=G.activeDocument().activeView();v.viewAxonometric();v.fitAll();G.updateGui();time.sleep(2)
|
||||
v.saveImage(str(folder/'70_M4_isometric.png'),1600,1200,'White')
|
||||
c=v.getCameraNode();rot=c.orientation.getValue();zvec=rot.multVec(coin.SbVec3f(0,0,1));dist=c.focalDistance.getValue();target=coin.SbVec3f(30.310889,17.5,8)
|
||||
c.position.setValue(target+zvec*dist);c.height.setValue(15);G.updateGui();time.sleep(2)
|
||||
v.saveImage(str(folder/'70_M4_thread_detail.png'),1600,1200,'White')
|
||||
except:
|
||||
(folder/'outline_error.txt').write_text(traceback.format_exc(),encoding='utf-8')
|
||||
for name in list(A.listDocuments()): A.closeDocument(name)
|
||||
Gui.getMainWindow().close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user