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.Lin
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值