Openclaw修改布局的线元素或地图框的颜色线宽
"""MyProject12 布局样式修改- 线: 红色(255,0,0), 1.5pt- 地图框边框: 黑色(0,0,0), 3pt"""import arcpyimport jsonAPRX_PATH = r"C:\Users\yl\Documents\ArcGIS\Projects\MyProject12\MyProject12.aprx"aprx = arcpy.mp.ArcGISProject(APRX_PATH)layout = aprx.listLayouts()[0]results = []for el in layout.listElements(): name = el.name etype = el.typeif name == "线" and etype == "GRAPHIC_ELEMENT": cim = el.getDefinition("V2")# 路径: cim.graphic.symbol.symbol.symbolLayers[0]symref = cim.graphic.symbol # CIMSymbolReferenceline_sym = symref.symbol # CIMLineSymbolsl = line_sym.symbolLayers[0] # CIMSolidStrokeold_color = list(sl.color.values) old_width = sl.width sl.color.values = [255, 0, 0, 100] # 红色 RGBAsl.width = 1.5 # 1.5ptel.setDefinition(cim) results.append({"元素": f"线 ({el.elementWidth:.1f} x {el.elementHeight:.1f})","类型": "GRAPHIC_ELEMENT","修改前颜色": f"RGB{tuple(old_color)}","修改后颜色": "RGB(255,0,0)","修改前线宽": f"{old_width}pt","修改后线宽": "1.5pt"}) print(f"[OK] 线: RGB{old_color} → RGB(255,0,0), {old_width}pt → 1.5pt")elif name == "地图框" and etype == "MAPFRAME_ELEMENT": cim = el.getDefinition("V2")# 路径: cim.graphicFrame.borderSymbol.symbol.symbolLayers[0]gf = cim.graphicFrame sl = gf.borderSymbol.symbol.symbolLayers[0] # CIMSolidStrokeold_color = list(sl.color.values) old_width = sl.width sl.color.values = [0, 0, 0, 100] # 黑色 RGBAsl.width = 3.0 # 3ptel.setDefinition(cim) results.append({"元素": f"地图框 ({el.elementWidth:.1f} x {el.elementHeight:.1f})","类型": "MAPFRAME_ELEMENT","修改前颜色": f"RGB{tuple(old_color)}","修改后颜色": "RGB(0,0,0)","修改前线宽": f"{old_width}pt","修改后线宽": "3pt"}) print(f"[OK] 地图框: RGB{old_color} → RGB(0,0,0), {old_width}pt → 3pt")# 保存工程aprx.save()print(f"\n已保存: {APRX_PATH}")# 输出报告print("\n" + "=" * 60)print("修改报告")print("=" * 60)for r in results: print(f"\n 元素: {r['元素']}") print(f" 类型: {r['类型']}") print(f" 颜色: {r['修改前颜色']} → {r['修改后颜色']}") print(f" 线宽: {r['修改前线宽']} → {r['修改后线宽']}")print(f"\n共修改 {len(results)} 个元素")

夜雨聆风