Nomad 发表于 2022-5-9 09:11:04

需要帮助为列表中的所有图层名称添加字符串吗

**** Hidden Message *****

jtoverka 发表于 2022-5-9 09:24:02

我将事务提交移到了foreach语句之外,命令执行时没有错误,但是,它实际上并不更新层列表。我的逻辑有缺陷吗?

Nomad 发表于 2022-5-9 10:04:43

以下是您拥有的:
ltr.Name.Insert(0, "Engineering|");

这实际上不会更新属性,它会插入字符串,但会作为新字符串返回
ltr.Name = ltr.Name.Insert(0, "Engineering|");

就是你想要的。

jtoverka 发表于 2022-5-9 10:08:46

我假设你想重命名层?也许类似于   。
公共静态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"

kdub 发表于 2022-5-9 12:07:09

layerTableRecord,Name == "Defpoints")。
{。
激活,write message($ " layer { layerTableRecord,Name}已跳过。\ n ");。
}。
否则。
{。
layerTableRecord,upgrade open();。
layerTableRecord,name = $ " { layerNamePrefix } { layerTableRecord,名称}”;。
激活,write message($ " layer { layerTableRecord,Name}已重命名。\ n ");。
}。
}。
交易commit();。
}。
}。

kdub 发表于 2022-5-9 12:32:16

如果你想要一份清单。那将是另一回事
只需声明一个
列表
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”

kdub 发表于 2022-5-9 13:00:42

layerTargetRecord.Name==“Defpoints”)
{
处于活动状态。WriteMessage($“已跳过层{layerTableRecord.Name}。\n”)
}
其他
{
<div>layerNames.Add($“{layerName前缀}{laylerTableRecord.Name}”)
}
}
}
<div>foreach(层名称中的字符串层名称)</div>
{
Active.WriteMessage($“{layerName}.\n”)
}
}

Nomad 发表于 2022-5-9 13:48:50


作为一名游牧者,
我的错。我刚刚意识到,杰托维卡让你在这篇文章中得到了报道。

jtoverka 发表于 2022-5-9 13:58:20

非常感谢你们的帮助!代码成功运行并更新了图层列表
页: [1]
查看完整版本: 需要帮助为列表中的所有图层名称添加字符串吗