首先感谢大佬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.Lin