python批量将CAD中的每个图分别转化为对应的PDF(cad转pdf)
python批量将CAD中的每个图分别转化为对应的PDF(cad转pdf)
需要在cad上选择左下角和右小角的坐标,会有提示,注意看即可
通过交互方式将一个CAD中的每个图纸分别转为一个pdf,简单易操作!!
其中有一部分是借鉴各路大神的,其中链接都在下方。另外也参阅了acadauto.chm,以及AutoCADActiveX和VBA参考明经翻译版).chm(打赏可发送参考文件,私信我邮箱即可)
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 26 13:55:01 2020@author:
"""import win32com.client
import pythoncom
import numpy as npdef scr():acad = win32com.client.Dispatch("AutoCAD.Application")# AutoCAD.Application.19为 ProgIDacaddoc = acad.ActiveDocumentacaddoc.Utility.Prompt("Hello AutoCAD\n")acadmod = acaddoc.ModelSpaceprint('当前处理文件的目录为:%s'%(acaddoc.path))print('当前处理文件名:%s'%(acaddoc.name))def APoint(x, y):"""坐标点转化为浮点数"""# 需要两个点的坐标return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y))layout = acaddoc.layouts.item('Model') # 先来个layout对象plot = acaddoc.PlotRet_dict = dict()RetVa = layout.GetPlotStyleTableNames() #获取当前可用的打印样式名称RetVal=filter(lambda x:x[-3:] !='stb' ,list(RetVa))#将后缀为stb的文件过滤,否则选择stb格式的文件会报错print('可用的打印样式如下:')for re_index,name in enumerate(list(RetVal)):Ret_dict[re_index] = nameprint(str(re_index) + ' - ' + name)sty_sh = input('请选择打印样式(输入数字即可,tips:选择格式必须为ctb):')print('您选的打印样式为:%s'%(Ret_dict[eval(sty_sh)]))acaddoc.SetVariable('BACKGROUNDPLOT', 0) # 前台打印layout.StyleSheet = Ret_dict[eval(sty_sh)] # 选择打印样式layout.PlotWithLineweights = True # 打印线宽layout.ConfigName = 'DWG To PDF.pc3' # 选择打印机layout.PlotRotation = 0 # 横向打印layout.StandardScale = 0# 图纸打印比例layout.CenterPlot = True # 居中打印layout.PlotWithPlotStyles = True # 依照样式打印layout.PlotHidden = False # 隐藏图纸空间对象cad_number = eval(input('请输入图的张数:'))zb_array = np.zeros([cad_number,4])#用来储存图框的坐标点paper_size = []for zb in range(cad_number):paper_in = input('请输入打印的第--%s--张图的尺寸(tip:A1→1,A2→2,A3→3,A4→4):'%(zb+1))paper_size.append(paper_in)print('请打开CAD点击坐标点,连续选择两个点,第一个点为**左下角**,第二个为**右上角**')for zb_2 in range(2):#防止点击错误出现出现闪退xun = 1while xun:try:zb_scr = acaddoc.Utility.GetPoint()#通过鼠标点击获取坐标zb_array[zb][zb_2] = zb_scr[0]#将x坐标保存到数组中zb_array[zb][zb_2+2] = zb_scr[1]#将坐标y保存到数组中xun = 0except:print('重新选择(请点击正确区域)')if zb_2 == 0:print('**左**下角的坐标点为:%s'%(list(zb_scr)))else:print('**右**上角的坐标点为:%s'%(list(zb_scr)))for po in range(cad_number):if paper_size[po] == '1':layout.CanonicalMediaName = 'ISO_full_bleed_A1_(841.00_x_594.00_MM)' elif paper_size[po] == '2':layout.CanonicalMediaName = 'ISO_full_bleed_A2_(594.00_x_420.00_MM)'elif paper_size[po] == '3':layout.CanonicalMediaName = 'ISO_full_bleed_A3_(420.00_x_297.00_MM)' else:layout.CanonicalMediaName = 'ISO_full_bleed_A4_(297.00_x_210.00_MM)' po1 = APoint(zb_array[po][0],zb_array[po][2])po2 = APoint(zb_array[po][1],zb_array[po][3])layout.SetWindowToPlot(po1, po2)#设置打印窗口的坐标layout.PlotType = 4#设置安装坐标窗口打印,若无此行,按照窗口显示的打印plot.PlotToFile(acaddoc.path +'/' + str(po+1) + '-' + acaddoc.name[:-4] + ".pdf")print('---' + str(po+1) + '-' + acaddoc.name[:-4] + ".pdf---文件已保存到" + acaddoc.path)print('处理完毕')x = 1
while x:scr()x = eval(input('是否继续计算,若是请输入1,否则请输入0:'))
参考博主链接:
http://blog.sina.com.cn/s/blog_ad9ff24c0102uwah.html
https://blog.csdn.net/Hulunbuir/article/details/83715279
https://blog.csdn.net/weixin_42446662/article
https://blog.csdn.net/xiaokcehui/article/details/48492915
https://blog.csdn.net/qq_44792233/article/details/102946651
python批量将CAD中的每个图分别转化为对应的PDF(cad转pdf)相关推荐
- python 批量增加文件前缀_用python批量提取视频中的音频文件
安装MoviePy pip3 install MoviePy 安装成功后需要打开MoviePy所在的文件夹 C:PythonLibsite-packagesmoviepy 打开config_defau ...
- python给视频添加声音_用python批量提取视频中的音频文件
安装MoviePypip3 install MoviePy 安装成功后需要打开MoviePy所在的文件夹C:\Python\Lib\site-packages\moviepy 打开config_def ...
- CAD中怎么生成图块表格?CAD图块表格使用技巧
在浩辰CAD电气软件中进行强电平面设计时,有两种设备表表格类型:图块表格和对象表格.之前的CAD画图教程中给大家简单介绍了两种表格类型,为了让大家对此有更深入的了解,接下来的CAD画图教程就让小编来给 ...
- CAD中插入外部参照字体会变繁体_为什么CAD中将图纸作为图块插入时不成功?
下面是本公众号文章分类目录,点击标题文字可打开分类文章列表: 安装卸载 异常.退出 文件及输入输出 基本操作技巧 设置及相关问题 界面和显示 快捷键 视图设置 选择及组 坐标输入.定位 ...
- python绘制基因结构图_使用Python绘制GWAS分析中的曼哈顿图和QQ图
[前言]其实这篇文章是为了简单介绍一下geneview的用法,它是一个Python高级库,建立在matplotlib的基础之上,专门用于基因组数据的可视化,目的是为了使创建高大上(精致)的基因组数据图 ...
- 如何利用Python批量将Word中的信息提取到Excel?
大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改) 一共有近2600条类似格式的表格细栏,每个栏目包括的信息有: 日期 发文单位 ...
- Python 批量提取Excel中的图片,图片文件名按指定列存储
openpyxl 以及 openpyxl_image_loader,conda或者pip无法安装的话,官网下载whl,然后pip安装本地包 [注意]:图片必须在单元格内,不能压过单元格边界 from ...
- CAD中插入外部参照字体会变繁体_为什么CAD插入外部参照时有些文字消失了?
下面是本公众号文章分类目录,点击可打开分类文章列表: 安装卸载 文件格式.输入输出 异常.退出 基本操作技巧 设置及相关问题 界面和显示相关问题 CAD快捷键 视图设置和调整选择.组 坐标系. ...
- CAD中插入外部参照字体会变繁体_为什么CAD插入相同图框但尺寸却相差很多?
下面是本公众号文章分类目录,点击标题文字可打开分类文章列表: CAD安装卸载 异常.退出 文件及输入输出 基本操作技巧 各种设置及相关问题 界面和显示相关问题 快捷键 视图设置和调整 ...
最新文章
- springJDBC实现查询方法二
- 如何建设数字中国?人民日报推出四个整版观察
- leftjoin及多个leftjoin执行顺序
- 第五章:管理数据库存储结构
- Caffe官方教程翻译(8):Brewing Logistic Regression then Going Deeper
- framework dyld: Symbol not found: _OBJC_CLASS_xxx
- Csv解析CsvFile
- SVN:安装svn进行上传和检出文件的常用命令
- 手把手打造开源新监控利器check_mk
- SQL Unicode
- java 下载视频文件
- 心理学行为矫正——手机娱乐过度自我管理企划案
- xp系统访问网络共享服务器,XP系统打开网络和共享中心的两种方法
- CobaltStrike木马免杀代码篇之python反序列化分离免杀(一)
- 让你两分钟明白什么是ERP
- 浅读C Primer Plus——C语起源
- fmri|SPM contrast manager
- 微信小程序之左右布局
- 数据通信协议的简介(数据通信协议和网络协议有什么区别?)
- 海康摄像头监控视频播放详解
热门文章
- 长城宽带网线--有线路由器--无线路由器(手机wifi上网)
- 弄它!!!了解5G未来趋势就等于了解商机!赶超马云爸爸不是梦!
- 通俗易懂讲解TCP流量控制机制,了解一下
- 统一资源定位器:URL的组成
- T400s + 双飞卡(42T0961) + 南神卡 上网设置
- java 积分功能实现_简单积分系统的设计和实现
- QT+opencv实现简单的图像处理界面
- 解决方案:用SpreadJS为烟草行业信息化建设赋能
- airodump-ng 界面参数比较详细的解释
- 刘大拿python_零基础Python知识点回顾(一)