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文件的參數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM