#前言
本文主要介绍面板开角角度与钣金厚度的算法,并实现自动绘图;
一.钣金折弯系数
def switch_case(self, var):
return {
'1.5': 2.5,
'1.2': 2.0,
'1.0': 1.8,
'0.8': 1.6,
'0.7': 1.4,
'0.5': 1.0,
}.get(var, 'error')
# 根据面板厚度确定折弯系数,thickness1为钣金厚度
BendsAllowance1 = self.switch_case(thickness1)
二.钣金边角角度转化为弧度
#height1 为钣金折弯高度,将折弯边角角度转化为弧度
if BendsAllowance1 < 1.1:
distan1 = height1 * math.tan(math.pi / 180 * 1 / 2) # 将1度转化为弧度
print(math.tan(math.pi / 180 * 1))
elif 1.2 < BendsAllowance1 < 1.7:
distan1 = height1 * math.tan(math.pi / 180 * 2 / 2)
elif 1.7 < BendsAllowance1 < 1.9:
distan1 = height1 * math.tan(math.pi / 180 * 3 / 2)
elif 1.9 < BendsAllowance1 < 2.1:
distan1 = height1 * math.tan(math.pi / 180 * 4 / 2)
elif 2.1 < BendsAllowance1 < 2.6:
distan1 = height1 * math.tan(math.pi / 180 * 4.5 / 2)
三.绘制钣金展开图
pnts数组中都是三维坐标点,是为画成型图而设定的
pnts = [0, point_x, 0,
0, point_x + width / 2 - height2 - distan1 - 0.5, 0,
height2 - BendsAllowance1 / 2 + 0.5, point_x + width / 2 - BendsAllowance1 / 2 - distan1, 0,
height1 + height2 - BendsAllowance1 / 2 * 3, point_x + width / 2 - BendsAllowance1 / 2, 0,
height1 + height2 - BendsAllowance1 / 2 * 3 + distan1,
point_x + width / 2 + height1 - BendsAllowance1 / 2 * 3 - 0.5,
0,
height1 + height2 * 2 - BendsAllowance1 * 2 + distan1 + 0.5,
point_x + width / 2 + height1 + height2 - BendsAllowance1 * 2, 0,
height1 + lenth - BendsAllowance1 * 2 - distan1 - 0.5,
point_x + width / 2 + height1 + height2 - BendsAllowance1 * 2, 0,
height1 + lenth + height2 - BendsAllowance1 * 2.5 - distan1,
point_x + width / 2 + height1 - BendsAllowance1 / 2 * 3 - 0.5, 0,
height1 + lenth + height2 - BendsAllowance1 * 2.5, point_x + width / 2 - BendsAllowance1 / 2, 0,
height1 * 2 + lenth + height2 - BendsAllowance1 * 3.5 - 0.5,
point_x + width / 2 - BendsAllowance1 / 2 - distan1, 0,
height1 * 2 + lenth + height2 * 2 - BendsAllowance1 * 4, point_x + width / 2 - height2 - distan1 - 0.5, 0,
height1 * 2 + lenth + height2 * 2 - BendsAllowance1 * 4, point_x , 0
]
pnts = vtfloat(pnts)
# 绘制多段线
pline_obj = msp.AddPolyLine(pnts)
# 镜像点
startpnt = vtpnt(0, point_x, 0)
endpnt = vtpnt(height1 * 2 + lenth + height2 * 2, point_x , 0)
MirObj = pline_obj.Mirror(startpnt, endpnt)
四.成型图
图示94°为步骤二中所讲,为了避免长边与短边折弯干涉,而设定开角;