Python控制AutoCAD画换热器,一下解决一个班的课设绘图
首先感谢大佬Hulunbuir的pyautocad教程。
教程链接:https://blog.csdn.net/Hulunbuir/article/details/97395152
说一下配置吧,pycharm+anaconda3.5.1+Python3.7 AutoCAD2007。
把所有设计用到的信息先放到一个表格里,怕忘。
导包
import math
import win32com.client
import xlrd
from pyautocad import Autocad, APoint
读取数据,命名什么的就算了吧
ww = xlrd.open_workbook(u"c:/users/default/documents/foracad1812060107.xls")
she1 = ww.sheet_by_index(0)
cells = she1.col_values(1)mna = str(cells[1]) # *********姓名*****
fit1 = str(cells[2]) # *******专业*****
class1 = str(cells[3]) # ******班级*****
num1 = str(cells[4]) # *******学号*****
kn = int(cells[5]) # ***********换热器类型*****
knn = int(cells[5]) # **********换热器类型*****
kind1 = int(cells[5]) # *********换热器类型*****
sww = str(int(cells[6])) # *************换热管外径**********
smm = str(cells[7]) # ******************换热管厚度**********
po1 = int(cells[8]) # ********************比例控制**********
po11 = int(cells[8]) # *******************比例控制**********jij = int(cells[9]) # *****************************管程数************
jij1 = int(cells[9]) # ****************************管程数************
long_all = str((cells[10])) # *************************管长**************
pip_num = str(int(cells[11])) # **********************管子根数***********
pip_line = str((cells[12])) # *************************换热管排列方式******
pip_rotate = str((cells[13])) # *************************换热管排列类型******
pip_cent = str((cells[14])) # *************************中心距控制*********
sdo1 = str((cells[15])) # *************************外壳直径***********
shell_thick = str(cells[16]) # ***************************外壳厚度***********ha_h = str((cells[17])) # ******************************左侧封头高度*****************
ra_h = str((cells[18])) # ******************************右侧封头高度*****************
xxd1 = str((cells[19])) # ******************************管程流体进出口内径************
xxd2 = str((cells[20])) # ******************************壳程流体进出口内径************link_h = str((cells[21])) # ******************************流体进出口接头高度************
flange1 = str((cells[22])) # ******************************法兰宽度********************
xxg = str(int(cells[23])) # ****************************折流挡板数*******************
xgg = str(int(cells[24])) # ****************************折流挡板间距*****************cold1 = str(cells[25]) # ******冷流名称***********
hot1 = str(cells[26]) # *******热流名称***********
Wc = str((cells[27])) # *******冷流的质量流量******
Wh = str(cells[28]) # *********热流的质量流量******PP = str(cells[29]) # ***********************公称压力********************
SN = str(cells[30]) # ********************公称换热面积*****************
time2 = str(cells[31]) # ********************出图日期********************po0 = float(po1) # **************************比例控制*******************XD1 = float(xxd1) / po0 # **************管程流体进出口直径****************
XD2 = float(xxd2) / po0 # **************壳程流体进出口直径****************XEH = float(flange1) / po0 # *******************************法兰高度*********************
pip_thick = float(smm) # *************************************换热管厚度*******************
DO1 = float(sdo1) # *************************************壳径控制*********************
b_ke = float(shell_thick) # ************************************外壳壁厚*********************
distance_baffle = float(xgg) # **************************************折流挡板间距******************
pip_center = float(pip_cent)
XZH = float(ra_h) # *********************************************外壳封头圆柱高度***************
XDH = float(link_h) / po0 # ***************************************壳程流体进出口高度**************
pip_round = float(sww) # *********************************************换热管外径********************
XAH = float(ha_h) # *********************************************左侧封头圆柱高度***************break_1 = 220 # ********************************打断线左端点横坐标***************
zo = 5 # ************************************打断线左端点横坐标***************
thin_bar = 1 # **********************************法兰等连接处缝隙宽度*************
amm = 50 / po0 # ****************************勾圈与封头外壳间距***************
选择尺寸基准,不然图放哪。我们要求的是A1图纸横版高度420mm,就基于300mm处作轴线画吧,下面还有截面图。
# 尺寸基准
cen1 = 300
cen2 = 150
XC2 = 380 # ****************************************外壳法兰横坐标*******************
XC1 = 90 # *****************************************管程流体进出口中心线横坐标**********
XK1 = XC2 - 2 * XD1 # ******************************壳程流体出口中心线横坐标************
XB2 = XC2 + XZH / po0 # ****************************封头椭圆弧圆心横坐标***************
XB1 = XC1 - XAH * 0.5 / po0 - 0.5 * XD1 # **********封头椭圆弧圆心横坐标***************
XE1 = XC1 + XAH * 0.5 / po0 + 0.5 * XD1 # **********左侧管箱右端点横坐标***************
XF1 = XE1 + 2 * XD1 # ******************************壳程流体进口中心线横坐标************
#图纸比例
dis_baffle = distance_baffle / po0
R10 = DO1 * 0.5 / po0
bb_ke = b_ke / po0
downO = cen1 - R10
upO = cen1 + R10
downs = cen1 - R10
ups = cen1 + R10
XC3 = XC2 + 1.5 * XZH / po0 + R10 + XEH + 5 * bb_ke
XD11 = XD1 / 2
XD21 = XD2 / 2
XYH = XEH - 1.5 * bb_ke
XM1 = XC3 + 3 * R10
up9 = upO + XEH - XYH
down9 = downO - XEH + XYH
R11 = up9 - cen1
R12 = up9 - 2 * bb_ke - thin_bar - cen1
St1 = XF1 + XD21 + bb_ke
St2 = XK1 - XD21 - bb_ke
bas3 = XC2 - thin_bar
连接CAD
# 连接AutoCAD参数配置wd = win32com.client.Dispatch("AutoCAD.Application")
a_cad = Autocad(create_if_not_exists=True)
raw_Obj = a_cad.ActiveDocument.Application.Documents.Add("")
设置上图层,总不能一遍一遍设置线条粗细吧
# 图层1
LayerObj = a_cad.ActiveDocument.Layers.Add("1_Layer")
a_cad.ActiveDocument.ActiveLayer = LayerObj
ClrNum = 7
LayerObj.color = ClrNum
LayerObj. Lineweight = 15
# 图层2
LayerObj2 = a_cad.ActiveDocument.Layers.Add("2_Layer")
a_cad.ActiveDocument.ActiveLayer = LayerObj2
ClrNum = 7
LayerObj2.color = ClrNum
LayerObj2.Lineweight = 40
# 图层3
LayerObj3 = a_cad.ActiveDocument.Layers.Add("center_l")
a_cad.ActiveDocument.ActiveLayer = LayerObj3
ClrNum = 7
LayerObj3.color = ClrNum
a_cad.ActiveDocument.Linetypes.Load("CENTER2", "acadiso.lin")
LayerObj3.Linetype = "CENTER2"
LayerObj3.Lineweight = 15# 画图时记得调回所用图层。
# 方法:a_cad.ActiveDocument.ActiveLayer = LayerObj/LayerObj2/LayerObj3
自建一些用到的块
def sqk(lx, ly, rx, ry): # 矩形绘制s1 = APoint(lx, ly)s2 = APoint(lx, ry)s3 = APoint(rx, ry)s4 = APoint(rx, ly)a_cad.model.AddLine(s1, s2)a_cad.model.AddLine(s2, s3)a_cad.model.AddLine(s3, s4)a_cad.model.AddLine(s4, s1)def liy(x, c, d): # 竖线bp = APoint(x, c)ep = APoint(x, d)lm = a_cad.model.AddLine(bp, ep)return lmdef lix(a, b, h): # 横线bp = APoint(a, h)ep = APoint(b, h)lm = a_cad.model.AddLine(bp, ep)return lmdef cyc(x, y, r):center = APoint(x, y) # 圆心c = a_cad.model.AddCircle(center, r)return cdef ell(x, y, add_x, add_y, a, b, from1, to1): # 椭圆弧center = APoint(x, y) # 椭圆中心majAxis = APoint(add_x, add_y) # majAxis为主轴(长轴)端点相对于椭圆中心的坐标增量。ellObj = a_cad.model.AddEllipse(center, majAxis, b / a)ellObj.startAngle = (from1 - 90) * (3.14 / 180)ellObj.endAngle = (to1 - 90) * (3.14 / 180)return ellObjdef a_cyc(x, y, r, bd, ed):center = APoint(x, y) # 圆心startAngle = math.radians(bd) # 始边角度(弧度制)endAngle = math.radians(ed) # 终边角度(弧度制)rearObj = a_cad.model.AddArc(center, r, startAngle, endAngle)return rearObj# 正方形错列管距
def sqq(x):qw = pow(x, 2)mkk = pow(qw * 0.5, 0.5)return mkk
开始画图框技术参数表
# 页边框
a_cad.ActiveDocument.ActiveLayer = LayerObj
sqk(0, 0, 594, 420)
# 标题栏边框
sqk(454, 10, 519, 66)
lix(519, 584, 66)
list_u = [18, 26, 34, 42, 50]
for i in list_u:lix(454, 584, i)lix(170, 450, i)
list_i = [210, 250, 290, 330, 370, 410]
for i in list_i:liy(i, 10, 50)
liy(470, 10, 50)
liy(544, 10, 50)
# 换热器指标栏
sqk(170, 10, 450, 66)
liy(287, 10, 50)# 打断线
liy(break_1, upO + 2 * XEH, downO - 2 * XEH)
liy(break_1 + zo, upO + 2 * XEH, downO - 2 * XEH)# 标题栏文字
list1 = ['设计', '制图', '专业', '班级', '学号']
list2 = [mna, mna, fit1, class1, num1]
list3 = ['课程名称', '比例', '图幅', '第1张', '日期']
list4 = ['化工原理课程设计', '1:' + str(po1), 'A2', '共1张', time2]list5 = ['', '流体名称', '流体流量kG/h', '进口温度/ C', '出口温度/ C']
list6 = ['管程', cold1, '%.2f' % float(Wc), '20', '45']
list7 = ['壳程', hot1, '%.2f' % float(Wh), '115', '70']list8 = ['外壳直径', '公称压力', '公称面积/mxm', '管程数', '折流挡板数']
list9 = [sdo1, PP, SN, jij, xxg]
list10 = ['列管尺寸/mm', '管长/mm', '根数', '排列方式', '正列/错列']
list11 = [sww + 'x' + smm, long_all, pip_num, pip_line, pip_rotate]
axa = [43, 35, 27, 19, 11]def txt_in_line_y(x, B):for _ in B:a_cad.iter_objects('Text')a_cad.model.AddText("%s" % B[0], APoint(x, 43), 5)a_cad.iter_objects('Text')a_cad.model.AddText("%s" % B[1], APoint(x, 35), 5)a_cad.iter_objects('Text')a_cad.model.AddText("%s" % B[2], APoint(x, 27), 5)a_cad.iter_objects('Text')a_cad.model.AddText("%s" % B[3], APoint(x, 19), 5)a_cad.iter_objects('Text')a_cad.model.AddText("%s" % B[4], APoint(x, 11), 5)mk = sqq(pip_center)
mkd = (2 * mk) / po0txt_in_line_y(459, list1)
txt_in_line_y(472, list2)
txt_in_line_y(520, list3)
txt_in_line_y(545, list4)
txt_in_line_y(171, list5)
txt_in_line_y(211, list6)
txt_in_line_y(251, list7)
txt_in_line_y(291, list8)
txt_in_line_y(331, list9)
txt_in_line_y(371, list10)
txt_in_line_y(411, list11)tb = '换 热 器 技 术 特 性 表'
a_cad.iter_objects('Text')
a_cad.model.AddText("%s" % tb, APoint(210, 53), 9)
tc = 'o'
a_cad.iter_objects('Text')
a_cad.model.AddText("%s" % tc, APoint(192, 15), 2)
a_cad.model.AddText("%s" % tc, APoint(192, 23), 2)
ssj = '浮头式'
ssen = 'F'a_cad.iter_objects('Text')
a_cad.model.AddText("1:1", APoint(XC2 + mk - 15, cen2 - 3 * mk), 15)ssj1 = '固定管板'
ssen1 = 'G'swwa1 = 'IV'
swwa2 = 'II'
t3 = ssj + '换热器装配图' # ******************************************图名*****************
t4 = ssen + '-' + sdo1 + swwa1 + '-' + sww + '-' + SN # **********型号*****************
t5 = ssj1 + '换热器装配图' # ******************************************图名*****************
t6 = ssen1 + '-' + sdo1 + swwa2 + '-' + sww + '-' + SN # **********型号*****************
t7 = ssen + '-' + sdo1 + swwa2 + '-' + sww + '-' + SN # **********型号*****************
t8 = ssen1 + '-' + sdo1 + swwa1 + '-' + sww + '-' + SN # **********型号*****************if kn == 1:if jij1 == 2:a_cad.iter_objects('Text')a_cad.model.AddText("%s" % t3, APoint(460, 53), 8)a_cad.iter_objects('Text')a_cad.model.AddText("%s" % t7, APoint(521, 53), 5)
if kn == 0:if jij1 == 2:a_cad.iter_objects('Text')a_cad.model.AddText("%s" % t5, APoint(460, 53), 8)a_cad.iter_objects('Text')a_cad.model.AddText("%s" % t6, APoint(521, 53), 5)
if kn == 1:if jij1 == 4:a_cad.iter_objects('Text')a_cad.model.AddText("%s" % t3, APoint(460, 53), 8)a_cad.iter_objects('Text')a_cad.model.AddText("%s" % t4, APoint(521, 53), 5)
if kn == 0:if jij1 == 4:a_cad.iter_objects('Text')a_cad.model.AddText("%s" % t5, APoint(460, 53), 8)a_cad.iter_objects('Text')a_cad.model.AddText("%s" % t8, APoint(521, 53), 5)# 图层2
LayerObj2 = a_cad.ActiveDocument.Layers.Add("2_Layer")
a_cad.ActiveDocument.ActiveLayer = LayerObj2
ClrNum = 7
LayerObj2.color = ClrNum
LayerObj2.Lineweight = 40
sqk(10, 10, 584, 410)
建好的尺寸基准画出来。
# 图层3
LayerObj3 = a_cad.ActiveDocument.Layers.Add("center_l")
a_cad.ActiveDocument.ActiveLayer = LayerObj3
ClrNum = 7
LayerObj3.color = ClrNum
a_cad.ActiveDocument.Linetypes.Load("CENTER2", "acadiso.lin")
LayerObj3.Linetype = "CENTER2"
LayerObj3.Lineweight = 15lix(XB1 - 2 * XAH / po0, break_1, cen1)
lix(break_1 + zo, XM1, cen1)
liy(XC1, cen1 + R10 + XDH + 10, cen1 - R10 - XDH - 10)
liy(XF1, upO - bb_ke, upO + XDH + 10)
liy(XK1, downO + bb_ke, downO - XDH - 10)
liy(XC3, cen1 + R10 + XDH + 10, cen1 - R10 - XDH - 10)
开始画图
LayerObj4 = a_cad.ActiveDocument.Layers.Add("4_Layer")
a_cad.ActiveDocument.ActiveLayer = LayerObj4
ClrNum = 7
LayerObj4.color = ClrNum
LayerObj4.Lineweight = pip_thick * 10q1 = lix(XC1 + XD11 + bb_ke, XE1 - bb_ke, downO) # 左侧封头右下部分
q2 = lix(XC1 + XD11, XE1, downO + bb_ke)
liy(XE1 - bb_ke, downO, downO - XEH)
liy(XE1, downO + bb_ke, downO - XEH)
lix(XE1 - bb_ke, XE1, downO - XEH)q3 = lix(XC1 + XD11 + bb_ke, XE1 - bb_ke, upO) # 右上部分
q4 = lix(XC1 + XD11, XE1, upO - bb_ke)
liy(XE1 - bb_ke, upO, upO + XEH)
liy(XE1, upO - bb_ke, upO + XEH)
lix(XE1 - bb_ke, XE1, upO + XEH)lix(XB1, XC1 - XD11 - bb_ke, downO) # 左下部分
lix(XB1, XC1 - XD11, downO + bb_ke)lix(XB1, XC1 - XD11 - bb_ke, upO) # 左上部分
lix(XB1, XC1 - XD11, upO - bb_ke)liy(XC1 - XD11, upO - bb_ke, upO + XDH) # 左上
liy(XC1 - XD11 - bb_ke, upO, upO + XDH - bb_ke)lix(XC1 - XD11, XC1 - XD11 - 2 * bb_ke, upO + XDH)
liy(XC1 - XD11 - 2 * bb_ke, upO + XDH, upO + XDH - bb_ke)
lix(XC1 - XD11 - bb_ke, XC1 - XD11 - 2 * bb_ke, upO + XDH - bb_ke)liy(XC1 - XD11, downO + bb_ke, downO - XDH) # left down
liy(XC1 - XD11 - bb_ke, downO, downO - XDH + bb_ke)lix(XC1 - XD11, XC1 - XD11 - 2 * bb_ke, downO - XDH)
liy(XC1 - XD11 - 2 * bb_ke, downO - XDH, downO - XDH + bb_ke)
lix(XC1 - XD11 - bb_ke, XC1 - XD11 - 2 * bb_ke, downO - XDH + bb_ke)
lix(XC1 - XD11, XC1 + XD11, upO + XDH)
lix(XC1 - XD11, XC1 + XD11, downO - XDH)# 外壳 右半边
liy(XC1 + XD11, upO - bb_ke, upO + XDH)
liy(XC1 + XD11 + bb_ke, upO, upO + XDH - bb_ke)lix(XC1 + XD11, XC1 + XD11 + 2 * bb_ke, upO + XDH)
liy(XC1 + XD11 + 2 * bb_ke, upO + XDH, upO + XDH - bb_ke)
lix(XC1 + XD11 + bb_ke, XC1 + XD11 + 2 * bb_ke, upO + XDH - bb_ke)liy(XC1 + XD11, downO + bb_ke, downO - XDH)
liy(XC1 + XD11 + bb_ke, downO, downO - XDH + bb_ke)lix(XC1 + XD11, XC1 + XD11 + 2 * bb_ke, downO - XDH)
liy(XC1 + XD11 + 2 * bb_ke, downO - XDH, downO - XDH + bb_ke)
lix(XC1 + XD11 + bb_ke, XC1 + XD11 + 2 * bb_ke, downO - XDH + bb_ke)ell1 = ell(XB1, cen1, 0, R10, R10, 0.5 * R10, 89, 271) # 封头顶
ell(XB1, cen1, 0, R10 - bb_ke, R10 - bb_ke, 0.5 * R10 - bb_ke, 89, 271)# 法兰接口bas = XE1 + thin_bar
liy(bas, upO, downO)
lix(bas, bas + bb_ke, downO - XEH)
lix(bas, bas + bb_ke, upO + XEH)
liy(bas, downO + bb_ke, downO - XEH)
liy(bas + bb_ke, downO + bb_ke, downO - XEH)
liy(bas, upO - bb_ke, upO + XEH)
liy(bas + bb_ke, upO - bb_ke, upO + XEH)
# 左半壳
bas2 = XE1 + 2 * thin_bar + bb_ke
liy(bas2, upO - bb_ke, upO + XEH)
liy(bas2 + bb_ke, upO, upO + XEH)
liy(bas2, downO + bb_ke, downO - XEH)
liy(bas2 + bb_ke, downO, downO - XEH)
lix(bas2, bas2 + bb_ke, upO + XEH)
lix(bas2, bas2 + bb_ke, downO - XEH)lix(bas2, XF1 - XD21, upO - bb_ke)
lix(bas2, break_1, downO + bb_ke)
lix(bas2 + bb_ke, XF1 - XD21 - bb_ke, upO)
lix(bas2 + bb_ke, break_1, downO)liy(XF1 - XD21, upO - bb_ke, upO + XDH) # 左上
liy(XF1 - XD21 - bb_ke, upO, upO + XDH - bb_ke)
lix(XF1 - XD21, XF1 - XD21 - 2 * bb_ke, upO + XDH)
liy(XF1 - XD21 - 2 * bb_ke, upO + XDH, upO + XDH - bb_ke)
lix(XF1 - XD21 - bb_ke, XF1 - XD21 - 2 * bb_ke, upO + XDH - bb_ke)
lix(XF1 - XD21, XF1 + XD21, upO + XDH)
liy(XF1 + XD21, upO - bb_ke, upO + XDH) # 右上
liy(XF1 + XD21 + bb_ke, upO, upO + XDH - bb_ke)
lix(XF1 + XD21, XF1 + XD21 + 2 * bb_ke, upO + XDH)
liy(XF1 + XD21 + 2 * bb_ke, upO + XDH, upO + XDH - bb_ke)
lix(XF1 + XD21 + bb_ke, XF1 + XD21 + 2 * bb_ke, upO + XDH - bb_ke)lix(XF1 + XD21, break_1, upO - bb_ke)
lix(XF1 + XD21 + bb_ke, break_1, upO)# 外壳
if knn == 1:lix(XC2, XC2 + bb_ke, up9 + XYH) # 上半部分liy(XC2, up9 + XYH, up9 - bb_ke)liy(XC2 + bb_ke, up9 + XYH, up9)lix(XC2, XB2, up9 - bb_ke)lix(XC2 + bb_ke, XB2, up9)lix(XC2, XC2 + bb_ke, down9 - XYH) # 下半部分liy(XC2, down9 - XYH, down9 + bb_ke)liy(XC2 + bb_ke, down9 - XYH, down9)lix(XC2, XB2, down9 + bb_ke)lix(XC2 + bb_ke, XB2, down9)ell(XB2, cen1, 0, R11, R11, 0.5 * R11, -90.25, 90.25) # 穹顶封头 外壳ell(XB2, cen1, 0, R11 - bb_ke, R11 - bb_ke, 0.5 * R11 - bb_ke, -90.25, 90.25)# 挡板lix(XC2, XC2 + bb_ke, up9 - bb_ke - thin_bar)lix(XC2, XC2 + bb_ke, down9 + bb_ke + thin_bar)liy(XC2 + bb_ke, up9 - bb_ke - thin_bar, down9 + bb_ke + thin_bar)# 勾圈lix(XC2 + bb_ke + thin_bar, XC2 + bb_ke + thin_bar + bb_ke, up9 - bb_ke - thin_bar) # 上半部分liy(XC2 + bb_ke + thin_bar, up9 - bb_ke - thin_bar, up9 - bb_ke - thin_bar - 2 * bb_ke)liy(XC2 + bb_ke + thin_bar + bb_ke, up9 - bb_ke - thin_bar, up9 - bb_ke - thin_bar - 2 * bb_ke)lix(XC2 + bb_ke + thin_bar, XC2 + bb_ke + thin_bar + bb_ke, down9 + bb_ke + thin_bar) # 下半部分liy(XC2 + bb_ke + thin_bar, down9 + bb_ke + thin_bar, down9 + bb_ke + thin_bar + 2 * bb_ke)liy(XC2 + bb_ke + thin_bar + bb_ke, down9 + bb_ke + thin_bar, down9 + bb_ke + thin_bar + 2 * bb_ke)ell(XC2 + bb_ke + thin_bar, cen1, 0, R12, R12, 0.5 * R12, -90.25, 90.25) # 穹顶封头 勾圈ell(XC2 + bb_ke + thin_bar, cen1, 0, R12 - bb_ke, R12 - bb_ke, 0.5 * R12 - bb_ke, -90.25, 90.25)lix(XC2 + bb_ke, XC2 + bb_ke + 0.5 * R12, cen1 + 0.5 * bb_ke)lix(XC2 + bb_ke, XC2 + bb_ke + 0.5 * R12, cen1 - 0.5 * bb_ke)
if knn == 0:lix(XC2, XC2 + bb_ke, upO + XEH) # 上半部分liy(XC2, upO + XEH, upO - bb_ke)liy(XC2 + bb_ke, upO + XEH, upO)lix(XC2, XB2, upO - bb_ke)lix(XC2 + bb_ke, XB2, upO)lix(XC2, XC2 + bb_ke, downO - XEH) # 下半部分liy(XC2, downO - XEH, downO + bb_ke)liy(XC2 + bb_ke, downO - XEH, downO)lix(XC2, XB2, downO + bb_ke)lix(XC2 + bb_ke, XB2, downO)liy(XC2 + bb_ke, upO, downO)ell(XB2, cen1, 0, R10, R10, 0.5 * R10, -90.25, 90.25) # 穹顶封头 外壳ell(XB2, cen1, 0, R10 - bb_ke, R10 - bb_ke, 0.5 * R10 - bb_ke, -90.25, 90.25)# 打断线往右if kind1 == 1:lix(bas3, bas3 - bb_ke, upO + XEH) # 上半部分liy(bas3, upO + XEH, upO - bb_ke)liy(bas3 - bb_ke, upO, upO + XEH)lix(bas3, break_1 + zo, upO - bb_ke)lix(bas3 - bb_ke, break_1 + zo, upO)lix(bas3, bas3 - bb_ke, downO - XEH) # 下半部分liy(bas3, downO - XEH, downO + bb_ke)liy(bas3 - bb_ke, downO, downO - XEH)lix(bas3, XK1 + XD21, downO + bb_ke)lix(XK1 - XD21, break_1 + zo, downO + bb_ke)lix(bas3 - bb_ke, XK1 + XD21 + bb_ke, downO)lix(XK1 - XD21 - bb_ke, break_1 + zo, downO)liy(XK1 - XD21, downO + bb_ke, downO - XDH) # 左下liy(XK1 - XD21 - bb_ke, downO, downO - XDH + bb_ke)lix(XK1 - XD21, XK1 - XD21 - 2 * bb_ke, downO - XDH)liy(XK1 - XD21 - 2 * bb_ke, downO - XDH, downO - XDH + bb_ke)lix(XK1 - XD21 - bb_ke, XK1 - XD21 - 2 * bb_ke, downO - XDH + bb_ke)lix(XK1 - XD21, XK1 + XD21, downO - XDH)liy(XK1 + XD21, downO + bb_ke, downO - XDH) # 右下liy(XK1 + XD21 + bb_ke, downO, downO - XDH + bb_ke)lix(XK1 + XD21, XK1 + XD21 + 2 * bb_ke, downO - XDH)liy(XK1 + XD21 + 2 * bb_ke, downO - XDH, downO - XDH + bb_ke)lix(XK1 + XD21 + bb_ke, XK1 + XD21 + 2 * bb_ke, downO - XDH + bb_ke)if kind1 == 0:XL1 = XK1 - 6 * mkd - 2 * bb_keXD211 = 0.8 * XD21lix(bas3, bas3 - bb_ke, upO + XEH) # 上半部分liy(bas3, upO + XEH, upO - bb_ke)liy(bas3 - bb_ke, upO, upO + XEH)lix(bas3, XL1, upO - bb_ke)lix(bas3 - bb_ke, XL1, upO)lix(break_1 + zo, XL1 - XD2, upO) # 补偿圈上半部分lix(break_1 + zo, XL1 - XD2, upO - bb_ke)ell(XL1 - XD21, upO - bb_ke, XD211, 0, XD211, 0.5 * XD211, 90, 270)ell(XL1 - XD21, upO - bb_ke, XD211 + bb_ke, 0, XD211 + bb_ke, 0.5 * XD211 + bb_ke, 90, 270)lix(bas3, bas3 - bb_ke, downO - XEH) # 下半部分liy(bas3, downO - XEH, downO + bb_ke)liy(bas3 - bb_ke, downO, downO - XEH)lix(bas3, XK1 + XD21, downO + bb_ke)lix(bas3 - bb_ke, XK1 + XD21 + bb_ke, downO)lix(XK1 - XD21 - bb_ke, XL1, downO)lix(XK1 - XD21, XL1, downO + bb_ke)lix(break_1 + zo, XL1 - XD2, downO) # 补偿圈下半部分lix(break_1 + zo, XL1 - XD2, downO + bb_ke)ell(XL1 - XD21, downO + bb_ke, XD211, 0, XD211, 0.5 * XD211, -90, 90)ell(XL1 - XD21, downO + bb_ke, XD211 + bb_ke, 0, XD211 + bb_ke, 0.5 * XD211 + bb_ke, -90, 90)liy(XK1 - XD21, downO + bb_ke, downO - XDH) # 左下liy(XK1 - XD21 - bb_ke, downO, downO - XDH + bb_ke)lix(XK1 - XD21, XK1 - XD21 - 2 * bb_ke, downO - XDH)liy(XK1 - XD21 - 2 * bb_ke, downO - XDH, downO - XDH + bb_ke)lix(XK1 - XD21 - bb_ke, XK1 - XD21 - 2 * bb_ke, downO - XDH + bb_ke)lix(XK1 - XD21, XK1 + XD21, downO - XDH)liy(XK1 + XD21, downO + bb_ke, downO - XDH) # 右下liy(XK1 + XD21 + bb_ke, downO, downO - XDH + bb_ke)lix(XK1 + XD21, XK1 + XD21 + 2 * bb_ke, downO - XDH)liy(XK1 + XD21 + 2 * bb_ke, downO - XDH, downO - XDH + bb_ke)lix(XK1 + XD21 + bb_ke, XK1 + XD21 + 2 * bb_ke, downO - XDH + bb_ke)# 底座
liy(XF1 + 2 * XD21 + bb_ke, downO, downO - 1.5 * XDH)
liy(XF1 + 2 * XD21 + 2 * bb_ke, downO, downO - 1.5 * XDH)
sqk(XF1 + XD21 + bb_ke, downO - 1.5 * XDH - bb_ke, XF1 + 3 * XD21 + bb_ke, downO - 1.5 * XDH)
liy(XK1 - 2 * XD21 - bb_ke, downO, downO - 1.5 * XDH)
liy(XK1 - 2 * XD21 - 2 * bb_ke, downO, downO - 1.5 * XDH)
sqk(XK1 - 3 * XD21 - bb_ke, downO - 1.5 * XDH - bb_ke, XK1 - XD21 - bb_ke, downO - 1.5 * XDH)def asin(x, y):c46 = x / yc45 = math.asin(c46)c44 = math.degrees(c45)return c44# 换热管list_n = [cen1, cen1 + mkd, cen1 + 2 * mkd, cen1 + 3 * mkd, cen1 + 4 * mkd, cen1 + 5 * mkd, cen1 + 6 * mkd,cen1 + 7 * mkd, cen1 + 8 * mkd]
list_d = [cen1, cen1 - mkd, cen1 - 2 * mkd, cen1 - 3 * mkd, cen1 - 4 * mkd, cen1 - 5 * mkd, cen1 - 6 * mkd,cen1 - 7 * mkd, cen1 - 8 * mkd, cen1 - 9 * mkd, cen1 - 10 * mkd, cen1 - 11 * mkd]
for i in list_n:if i + bb_ke + pip_round / po0 < up9 - amm - bb_ke:lix(XC2 + bb_ke, break_1 + zo, i + bb_ke)lix(XE1 + thin_bar, break_1, i + bb_ke)liy(XC2, i + bb_ke, i + bb_ke - mkd + pip_round / po0)liy(XC2 - thin_bar, i + bb_ke, i + bb_ke - mkd + pip_round / po0)liy(XE1 + thin_bar + bb_ke, i + bb_ke, i + bb_ke - mkd + pip_round / po0)for i in list_n:if i + bb_ke + pip_round / po0 < up9 - amm - bb_ke:lix(XC2 + bb_ke, break_1 + zo, i + bb_ke + pip_round / po0)lix(XE1 + thin_bar, break_1, i + bb_ke + pip_round / po0)for i in list_d:if i - bb_ke - pip_round / po0 > down9 + amm + bb_ke:lix(XC2 + bb_ke, break_1 + zo, i - bb_ke)lix(XE1 + thin_bar, break_1, i - bb_ke)liy(XC2, i - bb_ke, i - bb_ke + mkd - pip_round / po0)liy(XC2 - thin_bar, i - bb_ke, i - bb_ke + mkd - pip_round / po0)liy(XE1 + thin_bar + bb_ke, i - bb_ke, i - bb_ke + mkd - pip_round / po0)for i in list_d:if i - bb_ke - pip_round / po0 > down9 + amm + bb_ke:lix(XC2 + bb_ke, break_1 + zo, i - bb_ke - pip_round / po0)lix(XE1 + thin_bar, break_1, i - bb_ke - pip_round / po0)a_cad.ActiveDocument.ActiveLayer = LayerObj2
# 折流挡板
list_r = [St2, St2 - dis_baffle, St2 - 2 * dis_baffle, St2 - 3 * dis_baffle,St2 - 4 * dis_baffle, St2 - 5 * dis_baffle, St2 - 6 * dis_baffle,St2 - 7 * dis_baffle, St2 - 8 * dis_baffle, St2 - 9 * dis_baffle, St2 - 10 * dis_baffle]
for j in list_r:if j > break_1 + zo:for i in list_n:if i + bb_ke + pip_round / po0 < up9 - amm - bb_ke:liy(j, i + bb_ke, i + bb_ke - mkd + pip_round / po0)liy(j + 0.5 * bb_ke, i + bb_ke, i + bb_ke - mkd + pip_round / po0)for i in list_d:if i - bb_ke - pip_round / po0 > down9 + amm + bb_ke:liy(j, i - bb_ke, i - bb_ke + mkd - pip_round / po0)liy(j + 0.5 * bb_ke, i - bb_ke, i - bb_ke + mkd - pip_round / po0)list_l = [St1, St1 + dis_baffle, St1 + 2 * dis_baffle, St1 + 3 * dis_baffle, St1 + 4 * dis_baffle, St1 + 5 * dis_baffle,St1 + 6 * dis_baffle,St1 + 7 * dis_baffle, St1 + 8 * dis_baffle, St1 + 9 * dis_baffle, St1 + 10 * dis_baffle]
for j in list_l:if j < break_1:for i in list_n:if i + bb_ke + pip_round / po0 < up9 - amm - bb_ke:liy(j, i + bb_ke, i + bb_ke - mkd + pip_round / po0)liy(j + 0.5 * bb_ke, i + bb_ke, i + bb_ke - mkd + pip_round / po0)for i in list_d:if i - bb_ke - pip_round / po0 > down9 + amm + bb_ke:liy(j, i - bb_ke, i - bb_ke + mkd - pip_round / po0)liy(j + 0.5 * bb_ke, i - bb_ke, i - bb_ke + mkd - pip_round / po0)# 侧视图
c42 = asin(XD11 + bb_ke, R10 + XEH)
c43 = asin(XD11 + bb_ke, R10 + 3 * XEH / 5)
upk = R10 * math.cos(math.radians(c42)) + cen1
downk = cen1 - R10 * math.cos(math.radians(c42))
upj = R10 * math.cos(math.radians(c43)) + cen1
downj = cen1 - R10 * math.cos(math.radians(c43))
folx = XC3 - R10 * math.cos(math.radians(30))
forx = XC3 + R10 * math.cos(math.radians(30))
dacy = R10 * math.sin(math.radians(30))
c41 = asin(dacy, R10 + bb_ke + XEH)
foly = cen1 - (R10 + XEH) * math.cos(math.radians(c41))liy(XC3 + XD11 + bb_ke, upj, ups + XDH - bb_ke)lix(XC3 + XD11, XC3 + XD11 + 2 * bb_ke, ups + XDH)
liy(XC3 + XD11 + 2 * bb_ke, ups + XDH, ups + XDH - bb_ke)
lix(XC3 + XD11 + bb_ke, XC3 + XD11 + 2 * bb_ke, ups + XDH - bb_ke)liy(XC3 + XD11 + bb_ke, downj, downs - XDH + bb_ke)lix(XC3 + XD11, XC3 + XD11 + 2 * bb_ke, downs - XDH)
liy(XC3 + XD11 + 2 * bb_ke, downs - XDH, downs - XDH + bb_ke)
lix(XC3 + XD11 + bb_ke, XC3 + XD11 + 2 * bb_ke, downs - XDH + bb_ke)liy(XC3 - XD11 - bb_ke, upj, ups + XDH - bb_ke)lix(XC3 - XD11, XC3 - XD11 - 2 * bb_ke, ups + XDH)
liy(XC3 - XD11 - 2 * bb_ke, ups + XDH, ups + XDH - bb_ke)
lix(XC3 + XD11 + bb_ke, XC3 - XD11 - 2 * bb_ke, ups + XDH - bb_ke)liy(XC3 - XD11 - bb_ke, downj, downs - XDH + bb_ke)lix(XC3 - XD11, XC3 - XD11 - 2 * bb_ke, downs - XDH)
liy(XC3 - XD11 - 2 * bb_ke, downs - XDH, downs - XDH + bb_ke)
lix(XC3 + XD11 + bb_ke, XC3 - XD11 - 2 * bb_ke, downs - XDH + bb_ke)
lix(XC3 - XD11, XC3 + XD11, ups + XDH)
lix(XC3 - XD11, XC3 + XD11, downs - XDH)cyc(XC3, cen1, R10)
a_cyc(XC3, cen1, R10 + XEH, c42 + 90, 270 - c42)
a_cyc(XC3, cen1, R10 + XEH, c42 - 90, 90 - c42)
cxz1 = cyc(XC3 - R10 - 3 * XEH / 5, cen1, XEH / 8)
cxz2 = cyc(XC3 + R10 + 3 * XEH / 5, cen1, XEH / 8)bas_p1 = APoint(XC3, cen1)
nkk = math.acos(0.5 * (XD1 + bb_ke) / R10)
deg_r1 = math.radians(15)
deg_r2 = math.radians(30)
deg_r3 = math.radians(45)
deg_r4 = math.radians(60)
deg_r5 = math.radians(75)
ldeg = [deg_r1, deg_r2, deg_r3, deg_r4, deg_r5]
for i in ldeg:if i < nkk:cvc = cxz1.copy()bvc = cxz2.copy()cvv = cxz1.copy()bvv = cxz2.copy()cvc.Rotate(bas_p1, i)bvc.Rotate(bas_p1, i)cvv.Rotate(bas_p1, -i)bvv.Rotate(bas_p1, -i)else:breakliy(folx, foly, downs - 1.5 * XDH - bb_ke)
liy(forx, foly, downs - 1.5 * XDH - bb_ke)
lix(folx, forx, downs - 1.5 * XDH - bb_ke)
lix(folx, forx, downs - 1.5 * XDH)# 管箱挡板分布
if jij == 4:cyc(XC2 - 2 * R10 - 2 * R10 - amm, cen2, R10)lix(XC2 - 2 * R10 - R10 - amm, XC2 - 2 * R10 - 3 * R10 - amm, cen2 + 0.5 * R10)lix(XC2 - 2 * R10 - R10 - amm, XC2 - 2 * R10 - 3 * R10 - amm, cen2 - 0.5 * R10)lix(XC2, XC2 + 1.5 * XZH / po0, cen1 + 0.5 * bb_ke)lix(XC2, XC2 + 1.5 * XZH / po0, cen1 - 0.5 * bb_ke)lix(XE1 + thin_bar, XB1, cen1 - 0.5 * R10 + 2 * bb_ke)lix(XE1 + thin_bar, XB1, cen1 + 0.5 * R10 - 2 * bb_ke)lix(XE1 + thin_bar, XB1, cen1 - 0.5 * R10 + bb_ke)lix(XE1 + thin_bar, XB1, cen1 + 0.5 * R10 - bb_ke)cyc(XC2 - 2 * R10, cen2, R10)lix(XC2 - 2 * R10 - R10, XC2 - 2 * R10 + R10, cen2)
if jij == 2:cyc(XC2 - 2 * R10 - 2 * R10 - amm, cen2, R10)lix(XC2 - 2 * R10 - 2 * R10 - amm - R10, XC2 - 2 * R10 - 2 * R10 - amm + R10, cen2)cyc(XC2 - 2 * R10, cen2, R10)lix(XE1 + thin_bar, XB1 - 0.5 * R10 + bb_ke, cen1 + 0.5 * bb_ke)lix(XE1 + thin_bar, XB1 - 0.5 * R10 + bb_ke, cen1 - 0.5 * bb_ke)# 换热管分布
cyc(XC2, cen2, pip_round * 0.5)
cyc(XC2, cen2, pip_round * 0.5 - pip_thick)cyc(XC2 + mk, cen2 + mk, pip_round * 0.5)
cyc(XC2 + mk, cen2 + mk, pip_round * 0.5 - pip_thick)
cyc(XC2 + mk, cen2 - mk, pip_round * 0.5)
cyc(XC2 + mk, cen2 - mk, pip_round * 0.5 - pip_thick)
cyc(XC2 + 2 * mk, cen2, pip_round * 0.5)
cyc(XC2 + 2 * mk, cen2, pip_round * 0.5 - pip_thick)
Z1 = APoint(XC2, cen2)
Z2 = APoint(XC2 + mk, cen2 + mk)
Z3 = APoint(XC2 + 2 * mk, cen2)
Z4 = APoint(XC2 + mk, cen2 - mk)
a_cad.model.AddLine(Z1, Z2)
a_cad.model.AddLine(Z2, Z3)
a_cad.model.AddLine(Z3, Z4)
a_cad.model.AddLine(Z1, Z4)a_cad.ActiveDocument.ActiveLayer = LayerObj3a_cyc(XC3, cen1, R10 + 3 * XEH / 5, c43 + 90, 270 - c43)
a_cyc(XC3, cen1, R10 + 3 * XEH / 5, c43 - 90, 90 - c43)
a_cad.ActiveDocument.ActiveLayer = LayerObj
tem = '6.3'
patt = 'C:_users_Default_desktop'
fnm = mna + num1 + 'V' + tema_cad.doc.SaveAs('c:/users/ianli/desktop/%s' % fnm, 24)
print("已保存为", a_cad.doc.path, a_cad.doc.Name)
a_cad.ActiveDocument.Close()
尴尬的是图案填充做不了,老是提示未封闭的图形 (T·T)
Python控制AutoCAD画换热器,一下解决一个班的课设绘图相关推荐
- python用渐变色画圆_利用python控制Autocad:pyautocad方式
发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...
- python控制autocad_利用python控制Autocad:pyautocad方式
发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...
- autocad支持python吗_利用python控制Autocad:pyautocad方式
发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...
- cad python_利用python控制Autocad:pyautocad
对象.这个对象连接最近打开的cad文件. 如果此时还没有打开cad,将会创建一个新的dwg文件,并自动开启cad软件(贴心) 第二行:acad.prompt() 用来在cad控制台中打印文字 第三行: ...
- python控制其它软件_从另一个脚本控制python脚本
我正在尝试学习如何编写一个脚本control.py,它在循环中运行另一个脚本test.py一定次数,在每次运行中,读取其输出并在打印某些预定义输出时暂停它(例如文本'现在停止'),并且循环继续其迭代( ...
- python的turtle画小人_当一个学了20分钟python turtle 的人画滑稽会怎样
python 3.7 链接:https://pan.baidu.com/s/1Lob447oqCgD6nb39sB9cig 提取码:vn0a pycharm 链接:https://pan.baidu. ...
- python画锯齿波_用Python控制硬件35-自制二三十元成本的信号测量采集控制系统
如前篇所介绍,用Shell Lab测试台软件配合之前介绍的任意款实验板,都能方便地实现ADC电压测量,但遇到两个问题: 示例代码虽然众多,但大都默认ShellLab类型的控制器,需要手动改为Mcush ...
- 用Python Turtle库画一个萌化的蜘蛛侠
你是从什么时候开始喜欢上漫威电影的?美国队长,钢铁侠,雷神? 我先入坑的是因为看了蜘蛛侠,小时候看完就幻想着什么时候自己也能成为一个英雄,我觉得第一代蜘蛛侠刻画得是最好的,也是给我印象最深刻的一代蜘蛛 ...
- 用python画一个房子_用Python动态地画一个房子
用Python动态地画一个房子 Python代码狂人 Python代码大全 用Python动态画一个房子,我们可从上向下画,先画房顶,再依次画阁楼窗户.房屋主体.屋门及主屋窗户. 运行本程序前请确保已 ...
最新文章
- 阿里P9大佬总结必备的算法和工具,被10万算法工程师点赞
- sap系统工单关闭_什么样的系统算是坑
- java lifo 队列_1.8 Java 队列 Queue、双端队列 Deque - Java 知识总结与学习
- python【数据结构与算法】武松打虎问题(贪心)
- oracle 添加登陆数据库触发器--记录IP 地址
- python中三级菜单讲解_Python字典实现简单的三级菜单(实例讲解)
- 训练日志 2019.7.23
- 模仿vue自己动手写响应式框架( - v-for
- 自动驾驶仿真:角雷达坐标系转换详解
- 关于spring boot的web.xml
- bat批处理复制指定目录及其子目录的指定后缀文件到指定文件夹
- android rtsp传输,android-ndk – 使用FFMpeg在Android客户端上进行RTSP流式传输
- 离散数学学习笔记——第二讲——命题逻辑(第一部分)(2.1什么是命题)
- 《机器学习实战》加利福尼亚州房屋价格 数据结构与可视化
- java出现令牌语法错误_java – 令牌上的语法错误
- 怎么用python画四叶草_如何使用python绘图四叶草
- win7系统笔记本配置双屏
- 成为oracle白金会员,华为成为Linux基金会白金会员
- 比较两条曲线的相似程度
- CC2640R2F BLE5.0 CC2640R2F UART驱动
热门文章
- 冯·诺伊曼可以,你也可以!
- laravel faker 数据填充 中文数据填充 单元测试数据填充 数据的类型有哪些
- matlab 两幅图求并集,MATLAB交并集运算
- IDEA在import时飘红的解决办法
- w ndows10u盘发售,745元起!Windows10 U盘版提前上架 想要的来了
- FCC学习记录——使用 sort方法按字母顺序给数组排序
- SQL Sever 2019的下载与安装【Win10一站式服务】
- 计算机中用于汉字处理的是什么意思,用于汉字输出的是什么编码
- DeepLearning4J入门——让计算机阅读《天龙八部》
- 居家隔离没事干?进来秒变算法工程师