注意:如下的兩個腳本都是我自己親自試過的,可以運行得到結果!可以直接運行!可以直接運行!
網上的中文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文件的參數
