使用python批量替换AutoCAD文档文字内容(包含搭建arcgispro python开发环境)

一、背景:

        在日常的工作中经常会遇到需要修改CAD文档的文字内容,假如需要修改的文档个数成百上千,每一个文档都需要依次打开就比较头疼了,这里分享给大家一个可以批量修改的小工具。

二、解决办法:

        由于我已经把日常的生产力软件由arcmap转移为arcgispro3.02,所以插件开发也在arcgispro上进行,主要还是因为python3相比python2有很多升级,结合arcgis工具箱好用的交互界面可以在arcgis软件上开发很多与arcgis软件功能有关或没有关系的插件,而不必使用tkinter、pyqt等去设计UI,毕竟好用比好看重要嘛。

        在使用插件之前需要搭建一下python环境(实在不明白的可以略过直接跳转文末)。

1、打开arcgispro(软件下载及安装可以百度一下,资源很多),依次进入工程→包管理器→环境管理器(齿轮形状的图标)

如果克隆失败,也可以手动创建文件夹,手动复制。

2、激活环境并加入系统环境变量(此操作初学python就要掌握的,这里简单截图)

3、使用pip安装一下pyautocad这个python控制AutoCAD的库。

打开cmd并输入(需要连接网络哟):

pip install pyautocad -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

4、下面就可以正式制作工具箱了

5、上一部点击保存之后,新建的工具箱会自动添加到当前的工程,后面依次:右击工具箱-新建-脚本

选择与下图对应的选项(注意从上往下的对应顺序),都是下拉选项很简单

然后切换到“执行”输入下面这一段代码

import pyautocad
import glob
import json
import arcpy
import os
arcpy.AddMessage("熊顺兵\nqq514360223\n2024-1-19")
f_path = arcpy.GetParameterAsText(0)
rules_f = arcpy.GetParameterAsText(1)
text_style = arcpy.GetParameterAsText(2)
f_lis = glob.glob("{0}\\*.dwg".format(f_path))
rules_info = ""
with open(rules_f,"r",encoding = "utf-8") as f:
    rules_info = f.readline()
replace_dic = json.loads(rules_info)


app = pyautocad.Autocad(create_if_not_exists = True)
for file_name in f_lis:
    arcpy.AddMessage("正在修改:{0}".format(os.path.basename(file_name)))
    doc = app.ActiveDocument.Application.Documents.Open(file_name)
    for i in app.iter_objects(object_name_or_list = "Text",dont_cast=True):
        old_str = i.TextString
        for str in replace_dic.keys():
            if str in old_str:
                i.TextString = i.TextString.replace(str,replace_dic[str])
            if text_style.replace(" ","") != "":
                try:
                    i.StyleName = text_style
                except Exception:
                    arcpy.AddMessage(Exception)
                    raise
    doc.close()
arcpy.AddMessage("处理完成!")

6、工具箱就完成啦,真的特别简单。

三、工具箱使用方法

1、新建一个txt文件,并用python字典的格式输入需要替换的文字内容,键表示需要被替换的文字内容,值表示需要替换文字内容,键和值都用英文状态的双引号或单引号包围起来。如{"A":"1","B":"2","C":"3","D":"4"};

2、假如有两个cad文档需要处理,且它们都在同一个文件夹里面,第一个文档里面需要把A、B分别替换为1、2,第二个文档需要把C、D替换为3、4。

3、打开AutoCAD,并新建一个空白的文档(软件打开会自动新建,不要关闭就可以)

4、点击运行,CAD就会自动开始依次搜索文档里面的文字,并完成替换、保存、退出。

四、写在最后

        AutoCAD、Office、Arcgis、Photoshop、FME这些吃饭家伙的二次开发开对测绘工作的帮助真的蛮大的,这是我第一个分享,希望可以帮到初入测绘行业的朋友。

        嫌麻烦也没事,这里是工具下载地址:

        链接:https://pan.baidu.com/s/1v3riqKeKB0u53Bu82G27Dg 
        提取码:6okq

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值