700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Revit二次开发--过滤对象(Revit )

Revit二次开发--过滤对象(Revit )

时间:2019-07-15 14:12:40

相关推荐

Revit二次开发--过滤对象(Revit )

1.获取元素的ID

通过UIDocument的Selection属性获取当前视图中选中的元素的ID/类型。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Autodesk.Revit.DB;using Autodesk.Revit.UI;namespace GetAllElements{[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.ReadOnly)]public class Document_Selection : IExternalCommand{public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){try{//Select some elements in Revit before invoking this command//Get the handle of current document.UIDocument uidoc = commandData.Application.ActiveUIDocument;//Get the element selection of current document.Selection selection = uidoc.Selection;ElementSet collection = selection.Elements;if (0 == collection.Size){//If no elements selected.TaskDialog.Showing("Revit", "You haven't selected any elements.");}else{String info = "Ids of selected elements in the document are: ";foreach (Element elem in collection){info += "\n\t" + elem.Id.IntegerValue;//所选元素的ID//info += "\n\t" + elem.GetTypr().ToString(); 此为所选元素的类型}TaskDialog.Show("Revit", info);}}catch (Exception e){message = e.Message;return Autodesk.Revit.UI.Result.Failed;}return Autodesk.Revit.UI.Result.Succeeded;}}}

2.用过滤器获取元素

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Autodesk.Revit.DB;using Autodesk.Revit.UI;namespace GetAllElements{[Autodesk.Revit.Attributes.Transaction(TransactionMode.ReadOnly)]public class Document_Selection : IExternalCommand{public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){Document document = revit.Application.ActiveUIDocument.Document;//Create a Filter to get all the doors in the documentElementClassFilter familyInstanceFilter = new ElementClassFilter(typeof(FamilyInstance));ElementCategoryFilter doorsCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors);LogicalAndFilter doorInstancesFilter = new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter);FilteredElementCollector collector = new FilteredElementCollector(document);ICollection<ElementId> doors = collector.WherePasses(doorInstancesFilter).ToElementIds();String prompt = "The ids of the doors in the current document are: ";foreach (ElementId id in doors){prompt += "\n\t" + id.IntegerValue;}//Give the user some informationTaskDialog.Show("Revit", prompt);}}}

3.获取所选元素的全部值

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Autodesk.Revit.UI;using Autodesk.Revit.DB;using Autodesk.Revit.ApplicationServices;using Autodesk.Revit.Attributes;using System.Windows.Forms;using Autodesk.Revit.UI.Selection;//如果出现缺少using指令或程序集引用,去API上查//点击revit中的墙,或者其他东西,会出现这个东西的全部信息namespace GetAllParamentsValues{[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]public class GetAllParamentsValues : IExternalCommand{public Autodesk.Revit.UI.Result Execute(ExternalCommandData CommandData, ref string messages, ElementSet elements){UIApplication uiApp = CommandData.Application;Autodesk.Revit.ApplicationServices.Application app = uiApp.Application;Document doc = uiApp.ActiveUIDocument.Document;Selection sel = uiApp.ActiveUIDocument.Selection;//please select an element// sel.StatusbarTip = "Please select an element";sel.PickPoint("Please select an element");// sel.PickOne();Element elemPick = null;foreach (Element elem in sel.Elements){elemPick = elem;break;}string strParamInfo = null;foreach (Parameter param in elemPick.Parameters){if(param.AsValueString()!=null)strParamInfo += param.Definition.Name + "value is :" + param.AsValueString() + "\n";elsestrParamInfo += param.Definition.Name + "value is :" + param.AsString() + "\n";}MessageBox.Show(strParamInfo);return Autodesk.Revit.UI.Result.Succeeded;}}}

例如,在revit中选取一面墙,就会得到以下信息:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。