下载app免费领取会员
在项目实施、应用Revit软件的过程中,经常会被问到很多具体的关于Revit软件的使用问题;由于软件在操作使用过程中存在多样性和专业性,大家总会有这些疑问:Revit选中点怎么搞?如何从revit中选取元素?

(1)先选择元素,再执行命令。
(2)先执行命令,再选择元素。
(1)单选:只能选取一个元素
(2)多选:可以选择多个元素
(3)框选:选取一定范围内的元素
(4)选点:选择试图中的一个坐标点
下面我们演示一下怎么选择元素,这里用API的第一种交互方式来演示:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
usingSystem.Data;
usingAutodesk.Revit;
usingAutodesk.Revit.UI;
usingAutodesk.Revit.UI.Selection;
usingAutodesk.Revit.DB;
usingAutodesk.Revit.DB.Architecture;
namespacezpx
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
[Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
publicclassHelloRevit:IExternalCommand
{
publicAutodesk.Revit.UI.ResultExecute(ExternalCommandDatacommandData,refstringmessage,Autodesk.Revit.DB.ElementSetelements)
{
//创建应用程序对象
Autodesk.Revit.ApplicationServices.Applicationapp=commandData.Application.Application;
//创建文档对象
Autodesk.Revit.DB.Documentdoc=commandData.Application.ActiveUIDocument.Document;
//创建应用程序对象
Autodesk.Revit.UI.UIApplicationuiapp=commandData.Application;
//创建文档对象
Autodesk.Revit.UI.UIDocumentuiDoc=uiapp.ActiveUIDocument;
//开始事务
Transactionts=newTransaction(doc,"HelloRevit");
ts.Start();
Selectionselection=uiDoc.Selection;
ICollection<ElementId>selectedIds=uiDoc.Selection.GetElementIds();
if(0==selectedIds.Count)
{
//如果选中的构件数量为0既没选中任何构件。
TaskDialog.Show("Revit","你没有选择任何元素");
}
else
{
Stringinfo="所选择的元素ID为:";
foreach(ElementIdidinselectedIds)
{
info+="\n\t"+id.IntegerValue;
}
TaskDialog.Show("Revit",info);
}
ts.Commit();
returnResult.Succeeded;
}
}
}
然后我们调试代码,要先选中构件再运行。
运行结果为:
大家看网上的其他教程或者参考卢石碧先生写的那本《Revit二次开发基础教程》的时候会发现和我这有出入,他们是这么写的
然后你会发现这里会提示
一般情况下这种提示首先想到是不是缺少引用,但这里是因为Revit版本变动而它开放的API也在变动,这种写法是Revit2014版本的API写法,只要你用的版本是2015版及以上,他就已经改变了API的写法。
很多人到这可能都会有疑问,那我怎么知道它的API变动了啊,小编这就给新手们提供一个方法,那就是去查阅RevitAPI这个文件。
打开RevitAPI通过检索去查看所有开放的API是目前最好最快速的办法
通过这可以看到所有你想知道的东西哦!
下面演示如何通过框选来选择构件
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
usingSystem.Data;
usingAutodesk.Revit;
usingAutodesk.Revit.UI;
usingAutodesk.Revit.UI.Selection;
usingAutodesk.Revit.DB;
usingAutodesk.Revit.DB.Architecture;
namespacezpx
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
[Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
publicclassHelloRevit:IExternalCommand
{
publicAutodesk.Revit.UI.ResultExecute(ExternalCommandDatacommandData,refstringmessage,Autodesk.Revit.DB.ElementSetelements)
{
//创建应用程序对象
Autodesk.Revit.ApplicationServices.Applicationapp=commandData.Application.Application;
//创建文档对象
Autodesk.Revit.DB.Documentdoc=commandData.Application.ActiveUIDocument.Document;
//创建应用程序对象
Autodesk.Revit.UI.UIApplicationuiapp=commandData.Application;
//创建文档对象
Autodesk.Revit.UI.UIDocumentuiDoc=uiapp.ActiveUIDocument;
//开始事务
Transactionts=newTransaction(doc,"HelloRevit");
ts.Start();
Selectionselection=uiDoc.Selection;
ICollection<Element>selectedIds=uiDoc.Selection.PickElementsByRectangle();
if(0==selectedIds.Count)
{
//如果没有选择构件.
TaskDialog.Show("Revit","你没有选择任何元素");
}
else
{
Stringinfo="所选择的元素名称为:";
foreach(ElementidinselectedIds)
{
info+="\n\t"+id.GetParameters("族")[0].AsValueString().ToString();
}
TaskDialog.Show("Revit",info);
}
ts.Commit();
returnResult.Succeeded;
}
}
}
一般会这两种常用的选择方法,在平时的大多数Revit二次开发中都是没问题的哦。下面我们来看演示结果:运行之后需要鼠标框选构件。完成框选后释放鼠标就会弹出对话框。
这里的代码都是公开给各位的,粘贴过来可能会出现格式变化,如果截图的话,不方便大家复制代码,请大家理解。

文章来源:精讲Revit二次开发
仅作分享交流,版权归原作者所有。
转载请注明来源本文地址:https://www.tuituisoft/bim/11347.html
上一篇:没有了
下一篇:没有了