python用Win32com连接excel与CAD实现自动绘图
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.ActiveDocumentdoc.Utility.Prompt("Hello! Autocad from pywin32com.\n")msp = doc.ModelSpace
三、读取excel中数据
CAD的连接也是利用Win32com,此处直接连接CAD就行,需注意附录代码运行前提需先打开CAD并新建一个窗口。代码如下:
excel表数据
# 判断excel表中有多少有效数据
sum1 = 0
while self.ws.cells(sum1 + 2, 2).value !=None:# 读取excel中数据,数据从第二行第二列开始读取 pnts1 = self.ws.cells(sum1 + 2, 2).valuepnts2 = self.ws.cells(sum1 + 2, 3).value# 起点坐标point_x=sum1*7000point_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]
python用Win32com连接excel与CAD实现自动绘图相关推荐
- python用win32com处理excel表格
今天一同事让处理一个excel,把一个excel里固定位置的内容读取写到另一个excel中的固定位置里,查了一些资料,python有好多处理excel的模块,对比之后感觉用win32com来处理这个问 ...
- python如何清空excel表格_利用python操作win32com删除excel工作表
win32com是一个操作excel的接口.在使用python操作win32com的时候,默认是displayalerts的,而很多操作我们都是默认会操作,所以要关闭掉displayalerts. 下 ...
- python使用win32com读写excel的问题
(win32com 读写 excel时候,open函数不能打开相对路径文档) 问题如下(请问各位大神如何解决相对路径下打开文档): 打开同.py相同路径下的a.xlsx文档,报错 from win32 ...
- python 使用win32com 操作excel
举例1 import win32com.client as win32 xl = win32.Dispatch('Excel.Application') xl.Visible = True xl.Wo ...
- python关闭excel进程_python win32com关闭Excel进程
试图通过python改变Excel_sheet,并完全混淆进程恢复.python win32com关闭Excel进程 import win32com.client class XlsClass: de ...
- 调研-python使用win32com模块操纵excel
文章目录 背景介绍 其他工具 简单使用 wps和excel访问的API不同的问题 尝试1: 尝试2: 尝试3 尝试4 尝试5 正道的光 背景介绍 使用的工具是:pywin32 PS:不是网上其他有些弄 ...
- Python win32com 控制excel自动刷新保存数据并截图发送到企业微信
Python win32com 控制excel自动刷新保存数据并截图发送到企业微信 业务需求 功能模块 爬虫 运行excel宏,刷新保存excel数据 指定区域截图 发送图片到企业微信 业务需求 每天 ...
- python win32com 操作excel (tcy)
本篇主要讲述win32com操作excel的读写的基本语法及用途实例. 并在easyExcel类的基础上封装了一个简单的excel VBA python操作.(90%变更)特点: 1)能够多个工作薄多 ...
- python连接excel存放数据_有了这篇python操作Excel学习笔记,以后储存数据 办公很轻松!...
最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理.以前正好在一本书上看到 ...
最新文章
- 计算一个全息图片的两个设想
- Editplus查找替换的正则表达式应用说明
- 学习机器学习:这10年我们能在各自的领域做点什么?
- XCode: 兼容ARC和non-ARC
- jsonp-反向代理-CORS解决JS跨域问题的个人总结
- angular五大服务顺序,angularJS $事件处理程序的触发顺序
- 理解一个类里边设置两个同名函数
- 中电福富外包offer要等多久_记一次外包经历
- 《天天数学》连载37:二月六日
- SAP License:SAP顾问如何写运维报告
- MVC.Net:压缩/保存图片缩略图
- Atitit 短信验证的漏洞 目录 1.1. APP读取短信	1 1.2. 手机上访问的业务来说,短信验证码就没那么独立了	1 1.3. 短信保管箱”	1 1.4. 自动把短信备份到云端的功能。	2
- 计算机windows解压文件,win7怎么用DOS命令解压缩文件 DOS解压文件方法
- 实验高中计算机,仿真物理实验室高中完整版
- Python数据分析U3-matplotlib可视化高级
- 实时计算 java基础:类的结构之五:内部类
- 360手机刷机失败变黑砖,救砖教程
- 小程序canvas文字信息绘制图片,模拟器正常保存图片,真机无法保存图片报错downloadFile:fail downloadFile protocol must be http or https
- mysql 进入_如何进入MySQL
- Python 模拟Hermite Polynomial厄米特多项式
热门文章
- 计算机课信息化大赛说课稿,2017信息化教学大赛说课稿——吴小红
- excelize-golang中excel表格内容读取
- DML语句的Returning...Into...
- 萌萌哒的八戒buuctf
- python repr_Python 的输入输出(一):str, repr和格式化输出
- 程序员计算机二级考什么好,计算机二级考什么好?要最简单的.
- 使用pheatmap画热图报错
- js运算符功能和运算规则
- anaconda spyder使用技巧
- 使用Appium Inspector查看手机界面布局