需要帮助为列表中的所有图层名称添加字符串吗
**** Hidden Message ***** 我将事务提交移到了foreach语句之外,命令执行时没有错误,但是,它实际上并不更新层列表。我的逻辑有缺陷吗? 以下是您拥有的:ltr.Name.Insert(0, "Engineering|");
这实际上不会更新属性,它会插入字符串,但会作为新字符串返回
ltr.Name = ltr.Name.Insert(0, "Engineering|");
就是你想要的。
我假设你想重命名层?也许类似于 。
公共静态void RenameMyLayers()。
{。
const string layerNamePrefix = " FiddleSticks | ";。
。
激活,write message(" \ n重命名层,\ n ");。
。
使用(事务transaction = Active,database . transaction manager . start transaction())。
{。
//返回当前数据库的图层表。
layer table layer table =(layer table)事务,GetObject(。
激活,Database.LayerTableId,OpenMode。for write);。
。
。
foreach(layer table中的ObjectId layerId)。
{。
LayerTableRecord LayerTableRecord =(LayerTableRecord)事务,GetObject(。
layerId,OpenMode。for read);。
。
if (layerTableRecord,Name == "0" layerTableRecord,Name == "Defpoints")。
{。
激活,write message($ " layer { layerTableRecord,Name}已跳过。\ n ");。
}。
否则。
{。
layerTableRecord,upgrade open();。
layerTableRecord,name = $ " { layerNamePrefix } { layerTableRecord,名称}”;。
激活,write message($ " layer { layerTableRecord,Name}已重命名。\ n ");。
}。
}。
交易commit();。
}。
}。
。
如果你想要一份清单。那将是另一回事
只需声明一个
列表
layerNames=new List
();
在循环外
然后在循环中使用此属性
layerNames.Add(layerTableRecord.Name)
可能类似于
公共静态无效ListMyLayers()
{
常量字符串layerNamePrefix=“FiddleSticks|”
处于活动状态。WriteMessage(“\n生成层列表。\n”)
List
layerNames=新列表
()
使用(Transaction=Active.Database.TransactionManager.StartTransaction())
{
LayerTable:LayerTable=(LayerTable)transaction.GetObject(
是活动的.Database。LayerTableId、OpenMode.ForWrite)
foreach(layerTable中的ObjectId layerId)
{
LayerTableRecord:layerTargetRecord=(LayerTableRecord)transaction.GetObject(
分层,OpenMode.ForRead)
如果(layerTableRecord.Name==“0” layerTargetRecord.Name==“Defpoints”)
{
处于活动状态。WriteMessage($“已跳过层{layerTableRecord.Name}。\n”)
}
其他
{
<div>layerNames.Add($“{layerName前缀}{laylerTableRecord.Name}”)
}
}
}
<div>foreach(层名称中的字符串层名称)</div>
{
Active.WriteMessage($“{layerName}.\n”)
}
}
作为一名游牧者,
我的错。我刚刚意识到,杰托维卡让你在这篇文章中得到了报道。 非常感谢你们的帮助!代码成功运行并更新了图层列表
页:
[1]