一种基于Python的CAD工程图纸出图系统及方法与流程
本发明涉及工程图纸出图,尤其涉及一种基于python的cad工程图纸出图系统及方法。
背景技术:
1、得益于计算机硬件性能的持续提升与计算机辅助设计(computer aided design,cad)技术的日益成熟,现代工程设计行业已实现从传统图板制图向数字化cad制图的全面转型。
2、在cad制图过程中,项目图纸绘图完成后,需要进行出图操作,包括图框信息(图名、图号、日期等)文本处理和pdf格式转换。然而实际中项目图纸经常发生多次变更,一旦设计信息修改后,则需要重新出图。手动操作效率低且易出现修改错误、遗漏的情况,影响工作效率和制图质量。目前常规的出图技术主要采用文本关联机制和批量打印功能相结合的方法,即首先在cad绘图软件(如autocad)中预定义包含可变参数的属性图块,通过修改图块属性值实现图框信息文本的动态更新,随后调用内置批量打印工具将cad工程图纸转换为pdf格式文件。
3、常规技术存在以下不足:第一、图框信息文本处理流程自动化程度不足,即在编辑图框信息文本时,仍需要手动打开cad工程图纸文件,依次编辑每个属性图块,操作耗时费力。第二、分布式存储架构导致校核困难,即由于项目图纸通常分散储存在多个cad工程图纸文件中,在pdf格式转换之前无法形成集中式的出图校核机制。第三、出图流程存在断层,即图框信息文本处理和pdf格式转换为两个独立阶段,无法形成一体化出图流程。
4、因此有必要提供一种基于python的cad工程图纸出图系统及方法,通过形成自动化、一体化出图流程以及集中式出图信息校核机制,使得设计人员可以更便捷、准确地完成图纸出图任务,从而提高工作效率和制图质量。
技术实现思路
1、本发明的目的在于提供:
2、一种基于python的cad工程图纸出图系统及方法,及其相关技术,以解决现有技术工作效率和制图质量低等技术问题或其组合。
3、第一方面,本发明提供了:一种基于python的cad工程图纸出图系统。
4、包括:
5、cad工程图纸文件预处理模块,配置为用户对待出图的所有cad工程图纸文件进行预处理,以满足特定出图格式要求;
6、出图控制信息生成模块,配置为获取出图所需的所有信息数据,并写入表格文件中,形成出图信息表文件;
7、图框信息文本处理及pdf格式转换模块,配置为依次读取出图信息表中的数据行,对待出图的cad工程图纸进行图框信息文本处理,并进行pdf格式转换,直至完成全部图纸的出图工作。
8、其中,特定出图格式满足以下要求:
9、图框图元采用外部参照形式插入cad工程图纸文件的布局空间中,且位于单独图层;
10、作为外部参照的cad工程图纸文件中矩形外图框的左下角点位于坐标原点处;
11、cad工程图纸文件全部存放于同一目录下,且图纸文件名按照出图顺序添加序号前缀;
12、当一个cad工程图纸文件的图框图元位于多个布局空间时,布局空间的名称按照出图顺序添加序号前缀;
13、当一个cad工程图纸文件中的单个布局空间中插入有多个图框图元时,图框图元的外部参照插入点按照出图顺序从左至右排列。
14、其中,出图控制信息生成模块包括用户输入单元、出图信息表文件生成单元、出图信息生成单元和出图信息编辑单元;
15、用户输入单元配置为用户输入存放cad工程图纸文件的文件目录、cad工程图纸文件中图框图元所在的图层名、虚拟打印机名和打印样式名;
16、出图信息表文件生成单元配置为生成带有默认表头信息的出图信息表文件,并保存至cad工程图纸文件目录下;
17、出图信息生成单元配置为获取并生成每一张图纸的出图信息,写入出图信息表中;
18、出图信息表编辑单元配置为用户按照出图目标对出图信息表文件中的出图信息数据进行编辑和保存。
19、其中,虚拟打印机名和打印样式名的具体输入包括以下步骤:
20、在cad软件中创建空白cad文件;
21、获取cad软件中可用的所有虚拟打印机名和打印样式名;
22、用户选择所需的虚拟打印机名和打印样式名进行输入。
23、其中,出图信息表第一行为表头行,其他行为数据行,表头行包括文件信息表头、图纸信息表头、打印信息表头和图框信息表头。
24、其中,用户按照出图目标对出图信息表的所有数据行中的出图信息进行修改,或者,修改图框信息表头或追加图框信息表头,满足用户个性化需求。
25、其中,图框信息文本处理及pdf格式转换模块内容为pdf图纸文件目录的创建、出图信息的读取、图框图元的获取、文本图层和文本样式的设置、图框信息的处理、打印机参数的设置、cad工程图纸的pdf格式转换。
26、另一方面,本发明提供一种基于python的cad工程图纸出图方法,使用一种基于python的cad工程图纸出图系统进行,包括以下步骤:
27、s1、对cad工程图纸文件进行预处理,包括图框图元的绘制和插入、cad工程图纸文件的命名、cad工程图纸文件布局空间命名;
28、s2、生成出图信息表,并添加每一张cad工程图纸的出图信息;
29、s3、按照预定出图目标,对出图信息表进行编辑并保存;按照出图信息表中的出图信息,对每一张cad工程图纸添加图框信息文本,并进行pdf格式转换;合并全部pdf格式转换后的图纸文件,完成图纸出图工作。
30、其中,s2步骤中,具体的出图信息生成方式具体为:
31、s201、根据用户输入的cad工程图纸文件目录,利用os库中的listdir()函数,获取目录中的所有文件名称;
32、s202、利用os库中的path.splitext()函数,筛选出目录中的cad工程图纸文件名称,形成cad工程图纸文件列表;
33、s203、判断cad工程图纸文件列表是否为空;
34、s204、若cad工程图纸文件列表非空,则遍历cad工程图纸文件列表并获取单个cad工程图纸文件名,否则用户重新输入文件目录;
35、s205、利用win32com.client模块中的documents.open()方法,在cad软件中打开cad工程图纸文件;
36、s206、利用win32com.client模块中的layout.block属性,获取位于用户输入图框图元图层下的所有图框图元,形成图框图元列表;
37、s207、遍历图框图元列表,获取单个图框图元;
38、s208、将上述获取的文件目录、文件名、图框图层名、打印机名、打印样式名信息和其他默认生成的出图信息存入列表中,形成单个图框图元对应的出图信息,并利用pandas库中的concat()函数,在出图信息表的最后一行下方追加一行,将出图信息列表按表头顺序存入追加行中;
39、s209、判断是否完成图框图元列表中全部元素的遍历;
40、s210、若图框图元列表已完成全部元素的遍历,则判断是否完成cad工程图纸文件列表中全部元素的遍历,否则返回步骤s107继续遍历图框图元列表;
41、s211、若全部cad工程图纸文件均已完成遍历,则利用pandas库中的to_excel()函数保存出图信息表文件,否则继续遍历cad工程图纸文件列表。
42、其中,s3具体包括以下步骤:
43、s301、利用os库中的mkdir()函数,创建用于存放所有pdf图纸文件的pdf图纸文件目录;
44、s302、利用pandas库中的read_excel()函数,读取出图信息表文件所有数据行,形成出图信息列表,列表中每个元素为出图信息表数据行中的一行数据;
45、s303、遍历出图信息列表,获取单张图纸出图信息;
46、s304、从出图信息列表中获取文件信息和图纸信息;
47、s305、利用win32com.client模块中的documents属性获取cad软件中全部打开的文件所形成的文件列表,然后遍历文件列表,判断cad工程图纸文件是否已经在cad软件中打开;
48、s306、若cad工程图纸文件没有打开,则利用win32com.client模块中的documents.open()方法打开cad工程图纸文件,然后利用win32com.client模块中的layout.block属性获取文件中位于图框图层下的所有图框图元,并按出图顺序存入图框图元列表;
49、s307、利用win32com.client模块中的document.layers属性和document.textstyles属性获取cad工程图纸文件中所有的文本图层名列表和文本样式名列表,判断文本图层和文本样式是否已在cad工程图纸文件中创建;
50、s308、若文本图层和文本样式已经创建,利用win32com.client模块中的layout.block属性和delete()方法获取并删除位于文本图层下的所有文本图元,否则利用win32com.client模块中的layers.add()方法和textstyles.add()方法创建文本图层和文本样式,并利用textstyle.fontfile属性和textstyle.bigfontfile属性设置文本字体和文本大字体;
51、s309、从图框图元列表中获取与出图信息对应的图框图元;
52、s310、从出图信息列表中获取图框信息;
53、s311、利用win32com.client模块中的block.addtext()函数生成并按插入点坐标插入文本图元;
54、s312、从出图信息列表中获取打印信息;
55、s313、利用win32com.client模块中的configname属性,获取打印机对象,并利用stylesheet属性、setcustomscale()方法和canonicalmedianame属性设置打印样式、打印比例和打印纸张参数;
56、s313、利用win32com.client模块中的insertionpoint属性获取图框图元插入点,并根据图框图元插入点和图纸尺寸利用setwindowtoplot()方法设置打印区域;
57、s314、利用win32com.client模块中的plottofile()方法,对cad工程图纸进行pdf格式转换,并保存至pdf图纸文件目录下;
58、s315、判断是否完成出图信息列表中全部元素的遍历;
59、s316、若出图信息列表已完成全部元素的遍历,则利用pdfwriter库中的write()方法合并所有pdf图纸文件,否则返回步骤s303继续遍历出图信息列表。
60、本发明至少具有如下有益效果:
61、(1)数字化cad制图技术已全面替代了工程设计行业中的传统图板制图方式,而python也因其灵活性和完善的库生态系统在自动化办工领域吸引了大量的关注。本发明将cad工程图纸的全部出图信息分类汇总,并形成出图信息表,在用户对出图信息表进行编辑保存后,对cad工程图纸进行图框信息文本处理和pdf格式转换,其中出图信息表的形成和图纸的出图操作通过利用python技术对cad绘图软件进行控制来完成,为cad工程图纸的出图问题提供了新的解决方案。这不仅实现了图框信息处理与pdf格式转换两项工作的批量化、自动化、一体化,同时为出图信息的集中校核提供了便利,使得设计人员可以更便捷、准确地完成cad工程图纸的出图任务,从而提高工作效率和制图质量。
62、(2)本发明允许用户在出图信息表中添加图框信息表头和数据,同时用户可对文字字体、高度插入点坐标进行自定义,满足用户对图框信息文本的个性化需求。
63、(3)本发明依据图框图元插入点坐标和图纸尺寸来设置打印区域,用户可为每一张图纸输入相应尺寸,实现任意尺寸图纸的出图目标。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com