我正在制作一个复制所选工作表的插件,并以某种方式对其进行编辑。我使用ICollection<ElementId> selectedIds = uiDoc.Selection.GetElementIds();
来选择
当项目浏览器停靠时,这种方法非常好,但由于某种原因,当它没有停靠时它不起作用
有没有办法在未停靠的项目浏览器中访问选择?
我试过用左
DockablePane projectBrowser = new DockablePane(DockablePanes.BuiltInDockablePanes.ProjectBrowser);
但我找不到任何会员从那里获取选择。
我制作了以下小型测试插件来演示:
using System.Collections.Generic;
using System.Linq;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
namespace Test
{
[TransactionAttribute(TransactionMode.Manual)]
[RegenerationAttribute(RegenerationOption.Manual)]
public class Test : IExternalCommand
{
public Result Execute(
ExternalCommandData commandData,
ref string message,
ElementSet elements)
{
UIApplication uiApp = commandData.Application;
UIDocument uiDoc = uiApp.ActiveUIDocument;
Document doc = uiDoc.Document;
ICollection<ElementId> selectedIds = uiDoc.Selection.GetElementIds();
int count = selectedIds.Count();
if (count != 0)
{
TaskDialog.Show("test", "Selection: " + count.ToString() + " elements.");
}
else
{
TaskDialog.Show("test", "No selection");
}
return Result.Succeeded;
}
}
}
在停靠的项目浏览器中,它返回您选择的元素数,但是当它被取消停靠时,它不起作用。是否可以访问此选项?
答案 0 :(得分:0)
我与Revit开发团队讨论了这个问题,他们希望仔细研究一下这个问题。你能提供full minimal reproducible case吗?在这种情况下,我想不需要任何模型,只需要完整的加载项代码和详细的逐步说明来重现问题。谢谢!
答案 1 :(得分:0)
另一个,稍后,来自开发团队的回答:我认为这与浏览器停靠或未停靠的事实有关。它很可能与浏览器是否为活动视图有关(仅在浏览器中选择后才会保存)。如果在图形视图中(在停靠的浏览器之外)单击,则清除选择。如果在浏览器内部单击(停靠或取消停靠),则会恢复选择以包含在浏览器中选择的项目。