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 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)
参数设置
运行演示
模型说明
除了修复CAD图层的数据源外,脚本工具也取消了所有CAD图层的面符号的透明度,方便在外观选项卡上统一调整。