家里橱柜上的门把手坏了,用RHINOPython设计了一下,导出为STL后打印了一个,安上还挺好用。代码很简单, 就是分享一下过程
#Create a simple door handler
import rhinoscriptsyntax as rs
import math
TOTAL_SPAN_LEN = 96
PIPE_SCALE_X = 1
PIPE_SCALE_Y = 0.8
PIPE_SCALE_Z = 2
ELLIPSE_LEN = TOTAL_SPAN_LEN/2/PIPE_SCALE_X
ELLIPSE_HEIGHT = 30
#Create a ellipse curve
ellipse = rs.AddEllipse(rs.WorldXYPlane(), ELLIPSE_LEN, ELLIPSE_HEIGHT)
domain = rs.CurveDomain(ellipse)
parameter = (domain[1] - domain[0]) / 2
arcList = rs.SplitCurve( ellipse, parameter )
#Create pipe by half ellipse curve
PIPE_R1 = 5
PIPE_R2 = 4
HOLE_H = 8
HOLE_R = 2
handler = rs.AddPipe(arcList[0], [0, 0.5, 1], [PIPE_R1, PIPE_R2, PIPE_R1], 0, 1)
rs.ScaleObject(handler, [0, 0, 0], [PIPE_SCALE_X, PIPE_SCALE_Y, PIPE_SCALE_Z], False)
rs.DeleteObjects(arcList)
#Add screw hole at end of handler
hole = rs.AddCylinder(rs.WorldZXPlane(), HOLE_H, HOLE_R, True)
temp = rs.CopyObject(hole, [-ELLIPSE_LEN * PIPE_SCALE_X, 0, 0]);
handler = rs.BooleanDifference(handler, temp, True)
rs.MoveObject(hole, [ELLIPSE_LEN * PIPE_SCALE_X, 0, 0]);
handler = rs.BooleanDifference(handler, hole, True)
|
|
举报