仅做抛砖引玉,表述自己的思路。
因:
1,工作需要,使用PDMS时report工具做批量修改很方便。
2,工作需要,CAD中也会有需要批量修改、替换文字内容、格式等。
使用说明:自行搜索pyautocad相关
参考:
https://help.autodesk.com/view/OARX/2025/CHS/?guid=GUID-ED298AC7-19E0-4E54-8983-48439EF70116
pyautocad 手册 中文版.pdf
依赖库:pyzwcad,pandas
同理:pyautocad
导出:
[Python] 纯文本查看 复制代码 #!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyzwcad import ZwCAD, APoint
import pandas as pd
import re
acad = ZwCAD()
# acad.prompt("Hello, Autocad from Python\n")
print(acad.doc.Name)
# target_layer1 = "1" # 指定目标图层名称
data = [] # 用于存储文本和坐标信息的列表
for text in acad.iter_objects('Text'):
if text.Layer == "0"\
or text.Layer == "1"\
or text.Layer == "2":
# if re.findall(u"V", text.TextString):
# print(text.TextString, text.InsertionPoint[0])
text.InsertionPoint = APoint(text.InsertionPoint)
data.append({'Text': text.TextString,
'XPosition': text.InsertionPoint[0],
'YPosition': text.InsertionPoint[1],
'Layer': text.Layer,
'handle': text.Handle,
"ID": text.ObjectID,
"Style": text.StyleName,
'Height': text.Height})
print(text.TextString,text.Layer)
# 创建DataFrame对象
df = pd.DataFrame(data)
print("----总数:%d ----" % df.shape[0])
# 将DataFrame导出为Excel文件
df.to_excel('output.xlsx', index=False)
# 将DataFrame导出为txt文件
df.to_csv('output.txt', sep='\t',index=False)
# # 或将DataFrame导出为CSV文件
# df.to_csv('text_data.csv', index=False)
导出指定图层的文字内容、格式。见output.xlsx或output.txt
可根据Autocad帮助手册自行选择需导出内容
对output.xlsx内容修改后,导入:
[Python] 纯文本查看 复制代码 from pyzwcad import ZwCAD, APoint
import pandas as pd
acad = ZwCAD()
acad.prompt("Hello, Autocad from Python\n")
print(acad.doc.Name)
# target_layer = "1" # 指定目标图层名称
data_out = [] # 用于存储文本和坐标信息的列表
df_in = pd.read_excel(io=r'output.xlsx')
i = 0
for text in acad.iter_objects('Text'):
if text.Layer == "0"\
or text.Layer == "1"\
or text.Layer == "2":
text.TextString = df_in.values[i, 0]
i = i + 1
print("%d / %d" % (i, df_in.shape[0]))
按照修改后的output.xlsx导入
pyautocad 手册 中文版.zip
(226.4 KB, 下载次数: 27)
测试.zip
(18.85 KB, 下载次数: 20)
|