gpt4 book ai didi

c# - 提示用户选择一个组并获取该组 ID 的方法

转载 作者:行者123 更新时间:2023-11-30 12:25:24 26 4
gpt4 key购买 nike

我正在尝试编写一种方法,提示用户选择一个组并返回该组的 ObjectId,以便我以后可以使用它。现在该方法如下所示:

public static ObjectId PromptUserForGroup()
{
using (Transaction tr = _database.TransactionManager.StartTransaction())
using (DocumentLock docLock = _activeDocument.LockDocument())
{

PromptSelectionResult activeSelectionPrompt = _editor.GetSelection();
if (activeSelectionPrompt.Status == PromptStatus.OK)
{
ObjectId[] ids = activeSelectionPrompt.Value.GetObjectIds();
foreach (ObjectId id in ids)
{
Group groupToCheck = tr.GetObject(id, OpenMode.ForWrite) as Group;
if (groupToCheck != null)
{
return groupToCheck.Id;
}
}
}
else
{
throw new IOException();
}
return ObjectId.Null;
}
}

当我调用该方法时,它会像我希望的那样提示用户。但是,当我选择组时,它总是返回 ObjectId.Null,这意味着它没有意识到我正在选择一个组。我不知道出了什么问题或如何解决。

最佳答案

实际上组不是从实体派生的,因此不在模型空间(BlockTableRecord)上。结果在绘图上没有Group,而是在Dictionary上。

当用户选择某物时,您需要找到它所属的组。这是一个示例代码:

[CommandMethod("FindGroup")]
static public void FindGroup()
{
Document doc =
Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
PromptEntityResult acSSPrompt =
ed.GetEntity("Select the entity to find the group");

if (acSSPrompt.Status != PromptStatus.OK)
return;

using (Transaction Tx =
db.TransactionManager.StartTransaction())
{
Entity ent = Tx.GetObject(acSSPrompt.ObjectId,
OpenMode.ForRead) as Entity;
ObjectIdCollection ids = ent.GetPersistentReactorIds();

bool bPartOfGroup = false;
foreach (ObjectId id in ids)
{
DBObject obj = Tx.GetObject(id, OpenMode.ForRead);

if (obj is Group)
{
Group group = obj as Group;
bPartOfGroup = true;
ed.WriteMessage(
"Entity is part of " + group.Name + " group\n");

}
}

if (!bPartOfGroup)
ed.WriteMessage(
"Entity is Not part of any group\n");
Tx.Commit();
}
}

来源:http://adndevblog.typepad.com/autocad/2012/04/how-to-detect-whether-entity-is-belong-to-any-group-or-not.html

关于c# - 提示用户选择一个组并获取该组 ID 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com