许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Python用Win32com连接Excel与CAD实现自动绘图

Python用Win32com连接Excel与CAD实现自动绘图

阅读数 38
点赞 0
article_banner

python用Win32com连接excel与CAD实现自动绘图

前言

本人主要从事空调设备研发和设计,在非标产品设计过程中经常会遇到相似结构的零部件重复性绘图,在此过程中会耗费设计师大量工作,如何提高工作效率,减少设计错误,是急需解决的问题,在此情况下, 我根据我的经验及借鉴其他博主介绍利用python编写了自动绘图软件,此软件目前已经解决我司部门绘图问题,在后续过程中将不断更新自动绘图软件的开发过程及遇到的坑,供大家学习借鉴,有不足之处还希望大家指出。

一、连接excel

目前本人只找到Win32com库对excel和CAD实现连接,所以在这里主要以Win32com为主。代码如下:

import win32com.client
app = win32com.client.Dispatch('Excel.Application')
# 后台运行,不显示,不警告
app.Visible = 1
app.DisplayAlerts = 0       
self.xlBook=app.Workbooks.Add()
# 此处一定注意不能用绝对路径,如果使用了绝对路径,程序打包后其他电脑不能打开,
因为我采用了类方法,所以此处有self,如果不是在类里面可以不用
self.xlBook.Save()
self.ws = app.Worksheets('Sheet1')

二、连接CAD

CAD的连接也是利用Win32com,此处直接连接CAD就行,需注意附录代码运行前提需先打开CAD并新建一个窗口。代码如下:

 wincad = win32com.client.Dispatch("AutoCAD.Application")
 doc = wincad.ActiveDocument
 doc.Utility.Prompt("Hello! Autocad from pywin32com.\n")
 msp = doc.ModelSpace

三、读取excel中数据

CAD的连接也是利用Win32com,此处直接连接CAD就行,需注意附录代码运行前提需先打开CAD并新建一个窗口。代码如下:

			excel表数据

excel表中数据

# 判断excel表中有多少有效数据
sum1 = 0
while self.ws.cells(sum1 + 2, 2).value !=None:
	 # 读取excel中数据,数据从第二行第二列开始读取	
	 pnts1 = self.ws.cells(sum1 + 2, 2).value
	 pnts2 = self.ws.cells(sum1 + 2, 3).value
	
	 # 起点坐标
	 point_x=sum1*7000
	 point_x1 = point_x+pnts1	 	
	 PointCoordinates(point_x,pnts1,pnts2)
	 sum1 += 1

四、在CAD中根据决定坐标点绘制图形

# 数据转化,由于win32com中AddPolyLine函数中参数要求数据类型,而python生成的数据类型多为变体类型,所以需要转化
    def vtfloat(lst):
        return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, lst)
    def vtpnt(x, y, z=0):
        """坐标点转化为浮点数"""
        return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))
        
def PointCoordinatesIn(point_x, lenth, width):

    pnts = [point_x, 0, 0,
            point_x , width / 2 , 0,
            point_x , width / 2 , 0,
            point_x ,width / 2 , 0,
            point_x + lenth ,width / 2 , 0,
            point_x + lenth ,width / 2 , 0,
            point_x  + lenth, width / 2, 0,
            point_x  + lenth , 0, 0
            ]
    pnts = vtfloat(pnts)
    pline_obj = msp.AddPolyLine(pnts)			

结果图形
在这里插入图片描述

五、结语

以上便是目前我做的一些工作,后续将不断更新,记录我的开发进度,也分析我在此过程中遇到的各种问题,供后来人学习。每次成果的分享都是经过我不断学习及尝试后的结果,也避免后来人少走弯路,如有不足之处望大神指正,改进;小编在写资料过程中杀死了不少活动的脑细胞,望各位同学慷慨解囊,让小编补充补充营养,能更好的为大家分享。

六、 参考文献  

1、Python 二次开发 AutoCAD 简介:[https://blog.csdn.net/Hulunbuir/article/details/83715279?utm_medium=distribute.pc_relevant_download.none-task-blog-BlogCommendFromBaidu-2.nonecase&dist_request_id=3834095b-09c6-43c2-8c59-e197c51c21e2&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-BlogCommendFromBaidu-2.nonecas]


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空