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

但是尴尬的是,一旦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 longName != groupLayer:
-
- 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)
参数设置

运行演示

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