python 处理CAD文件
注意:如下的两个脚本都是我自己亲自试过的,可以运行得到结果!可以直接运行!可以直接运行!
网上的中文api能找到的不够全,工作中有用到部分功能,自己从中文英文资料里面找到一些,这里做一些总结。
画图api:这里保存的文件是dxf类型。
"""
可以直接运行,前提是你把模块安装好
ezdxf模块生成dxf文件画线、圆、多边形、填充颜色
"""
import ezdxf # 画图的基本功能,这个库会比较容易找到api,用起来还比较方便。生成的dxf文件的2000版本
import uuid
import os
save_file_path = r"D:\logs"
def apply_colour():
"""
写字,填充功能,画圆,画线,画多边形
:return:
"""
doc = ezdxf.new('R2000') # ezdxf 这个模块目前能处理的cad文件是2000版本
msp = doc.modelspace()
msp.add_text(
'code change the world',
dxfattribs={
'layer': 'TEXTLAYER'
}).set_pos((0, 0.2), align='CENTER') # 写字
msp.add_line(
(153.0, 34.0),
(173.0, 127.0),
dxfattribs={'color': 150, 'lineweight': 60}
) # 画线 color 数值范围1-255
# 设置4边形4个点坐标
rect_points_outer = [(1.0, 1.0), (8.0, 1.0), (8.0, 8.0), (1.0, 8.0)]
msp.add_lwpolyline(
rect_points_outer,
dxfattribs={"closed": True}
) # 画多边形。这里画的是4边形,如果需要画多边形,把坐标设置好排列出来即可。
msp.add_circle(
(10, 20),
1.5
) # 画圆
hatch = msp.add_hatch(color=2) # 填充功能,颜色设置的rgb值
hatch.paths.add_polyline_path(
[
(0, 0), (10, 10), (0, 10)
],
is_closed=1,
flags=16
) # 设置3边形,并填充颜色
hatch.paths.add_polyline_path(
[
(0, 0), (0, 5), (5, 5), (5, 0)
],
is_closed=1,
flags=0
) # 设置4边形并填充颜色
random_str = str(uuid.uuid4()) # 设置随机数命名新文件
new_file = os.path.join(
save_file_path, "{}.dxf".format(random_str)
)
print(new_file)
doc.saveas(new_file)
apply_colour()
把dxf类型转变成dwg格式:值得注意的是,因为Autocad会调用cad内核,所以,建议在运行脚本之前,先在跟脚本同一电脑上打开cad软件,否则,脚本运行时间过长,或者会阻塞。
"""
可以直接run,打开一个dxf文件转换成dwg文件
"""
from pyautocad import Autocad
import uuid
import os
import time def turn_dxf_to_dwg_file(dxf_file_path):
"""
could open dxf file save as dwg file and after you save you can close
the current file
:param dxf_file_path:
:return:
"""
# todo not yet apply different color
acad = Autocad(create_if_not_exists=True)
# open CAD file
acad.ActiveDocument.Application.Documents.open(dxf_file_path)
random_str = str(uuid.uuid4()).replace("-", "")
dwg_saved_arg = 8 # 这里的参数很重要,在网上找了很多,不是随便的数字都能成功转换的,不信的话,大可一试。 save_path = r"C:\Users\Administrator\Desktop\dwg-完成"
if not os.path.exists(save_path):
os.mkdir(save_path)
time.sleep(0.2)
saved_done = os.path.join(save_path, random_str)
acad.doc.SaveAs(saved_done, dwg_saved_arg)
print(saved_done)
# close current file
# acad.ActiveDocument.Close() pth = r"C:\Users\Administrator\Desktop\cad-项目相关文件\cad-test-files\86b9test-turn-dwg-format.dxf"
turn_dxf_to_dwg_file(pth)
注意:我自己安装的2007版本的Autocad软件,可以直接打开转换成dwg格式的文件。Autocad软件我也不熟,不知道转换格式后是哪个版本的dwg。
备份参数:
dwt_dwl = [14, 26] # 这里会生成dwt和dwl两个文件
dwg_dwl = [8, 12, 24, 14, 26] # 其中:14、26有dwt格式,但是用autoCAD打开,确实是dwg,
内部有转换可能。
dxf_ = [1, 13, 25, 37] # 这里是单纯生成一个dxf文件的参数
python 处理CAD文件的更多相关文章
- python操作cad
from pyautocad import Autocad # 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象.這個對象連接最近打開 ...
- 编程读写CAD文件验证
背景 B/S应用系统,根据用户上传数据:业务数据和CAD坐标数据,经过一系列运筹算法运算后,输出一批坐标数据,作为给用户的规划结果.此时需要方便直观的给用户展示坐标数据.可选方式有两个: web页面画 ...
- python基础之文件处理
读和写文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...
- Python开发【第三篇】:Python基本之文件操作
Python基本之文本操作 一.初识文本的基本操作 在python中打开文件有两种方式,即:open(...) 和 file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open ...
- Python绘制PDF文件~超简单的小程序
Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http:// ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- python批量进行文件修改操作
python批量修改文件扩展名 在网上下载了一些文件,因为某种原因,扩展名多了一个后缀'.xxx',手动修改的话因为文件太多,改起来费时费力,于是决定写个小脚本进行修改. 1.要点: import r ...
- 关于Python中的文件操作(转)
总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...
- Python基础、文件处理
一.概述 Python中操作文件是通过file对象来处理的,步骤: 指定文件的路径.操作的模式 对文件进行操作,读或写操作 关闭文件对象 f = open( '文件路径','访问模式') # 打开文件 ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
随机推荐
- requests学习笔记01
一.发送请示 # 导入 Requests 模块 import requests # 获取某个网页 r = requests.get("http://www.baidu.com") ...
- Java-Java调用mysqldump进行数据库备份
1 public ResultData backupDatabase(Integer type) { 2 // 构建备份sql的文件名 3 String sqlFileName = "tes ...
- CCPC2021 广州 K. Magus Night
CCPC2021 广州 K. Magus Night 题意 给定整数区间 \([1,m]\) ,从中可重复的选择 \(n\) 个数,形成一个数列 \(\{a_n\}\) .问:所有满足 \(\gcd( ...
- docker 搭建minio
minio为开源的高可用分部署对象存储服务组件,已经提供了分布式部署的解决方案,实现高可靠.高可用的资源存储,MinIO以极简主义为指导进行设计,追求极致的维护精简性和卓越的读写性能表现. -dock ...
- Ubuntu安装微信/企业微信
1.安装Wine git clone https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu.gitcd deepin-wine-for-ubuntusud ...
- 002. html篇之《表格》
html篇之<表格> 1. 结构 <table> <!-- 表格标签 --> <caption>标题,自动居中对齐</caption> &l ...
- 第十三天笔记Cookie
第十三天笔记Cookie 计算机重要的四个内容 数据结构 数据存储的结构及逻辑的体现,以及相关数据结构之间的操作(算法) 操作系统 windows(dos命令).linux(指令操作) 计网 网络通信 ...
- 重磅!Cloud Ace 首度于德国设立法人,作为拓展Google Cloud 欧洲整合市场的基础
[Cloud Ace - 谷歌云 | 亚太地区最多据点的Google Cloud经销商 ] Cloud Ace, Inc.(总部:东京都千代田区,代表:青木诚,以下简称 Cloud Ace)在20 ...
- wamp下载使用
下载 搜索wamp进官网下载就行,FQ更快 下好打开,闪几个黑框后右下角有图标,右击图标->language->Chinese,即可切换中文模式 配置php环境变量 这个路径复制到path ...
- Mybatis缓存(3)
10.4.3二级缓存