ArcGIS Pro脚本工具(6)——修复CAD图层数据源

Pro对CAD文件的支持显而易见的优于ArcMap。虽然都是将CAD识别成点、线、面、多面体和注记5大类,但是当我们拖动其中一类到Pro中时,Pro自动将其分图层显示,并且图层的颜色与CAD一致。nice!

30cf4a4523044fb0b806802877798e4d.png

但是尴尬的是,一旦CAD文件移动了位置或者改了名字,就是一长列的红色惊叹号警告。有经验的使用者可能期望修复一个图层后,其他图层自动修复,但是很可惜这对这些CAD图层无效。

那我重新拖CAD进来不就成了?可能不太行,因为已经在Pro里改过一些图层的符号系统了,重新拖CAD进来就得重新做很多图层的符号系统,太麻烦了。

针对不同的情况,有不同的解决办法。

1、CAD文件位置改变,文件名不变

这种情况下,比较方便的办法是打开 目录视图-目录选项卡-数据源-工作空间,选择CAD图层组,新路径中填入CAD文件现在的位置,点击应用,完成。

 2、CAD文件位置和文件名都已经改变

解决办法比上面多出一步,就是需要先更新CAD文件名。还是考虑使用脚本工具来实现。

Python脚本

import os
import arcpy

aprx = arcpy.mp.ArcGISProject(r"CURRENT")
m = aprx.activeMap
groupLayer = arcpy.GetParameterAsText(0)
lyrs = m.listLayers()

cad = arcpy.GetParameterAsText(1)
cad_name = os.path.basename(cad)
cad_path = os.path.dirname(cad)
cp = {'workspace_factory': 'Cad', 'connection_info': {'database': cad_path}}

for lyr in lyrs:
    longName = lyr.longName
    if longName.startswith(groupLayer) and lyr.isGroupLayer==False:

        lyrCIM = lyr.getDefinition("V2")
        dc = lyrCIM.featureTable.dataConnection

        # Update the feature dataset with the new CAD file name
        dc.featureDataset = cad_name

        # Update layer CIM
        lyr.setDefinition(lyrCIM)

        lyr.updateConnectionProperties(lyr.connectionProperties, cp)

        sym=lyr.symbology
        color=sym.renderer.symbol.color
        color['RGB'][3]=100
        sym.renderer.symbol.color=color
        lyr.symbology=sym

        arcpy.AddMessage('已修复 '+lyr.name)

参数设置

运行演示

872482a14ff943e2abd55a6ccfd37e4f.gif

 模型说明

除了修复CAD图层的数据源外,脚本工具也取消了所有CAD图层的面符号的透明度,方便在外观选项卡上统一调整。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值