×

工业设计互动平台

手机短信,快捷登录

微信登录,快人一步

QQ登录

只需一步,快速开始

从代码到实物

发布于 2014-11-10 1 点赞 3 评论 3886 浏览

家里橱柜上的门把手坏了,用RHINOPython设计了一下,导出为STL后打印了一个,安上还挺好用。代码很简单, 就是分享一下过程
DoorHandler 2.png DoorHandler ABS.png

#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)


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩回复

文明上网理性发言、请文明用语

筑梦NARUTO | 设计师 | 发表于 2014-11-10 12:13:59
感谢分享
0 回复

举报

jwchen08 | 实习生 | 发表于 2016-7-25 16:50:47
忍不住登陆来点赞,楼主真是用到了实际生活中!
0 回复

举报

aspire4710g | 实习生 | 发表于 2017-9-12 14:31:33
哪里坏了修哪里,参数化用到实处:D
0 回复

举报