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 = w('R2000') # ezdxf 这个模块⽬前能处理的cad⽂件是2000版本
msp = delspace()
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
dxf文件怎么打开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 ists(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⽂件的参数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论