EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

萧闫子 发表于 2014-1-15 13:54:16

读取参数类型是一个对象的参数值

Revit的参数类型包含很多,比如下面列表所示。



        Text       
The parameter data should be interpreted as a string of text.
        Integer       
The parameter data should be interpreted as a whole number, positive or negative.
        Number       
The parameter data should be interpreted as a real number, possibly including decimal points.
        Length       
The parameter data represents a length.
        Area       
The parameter data represents an area.
        Volume       
The parameter data represents a volume.
        Angle       
The parameter data represents an angle.
        URL       
A text string that represents a web address.
        Material       
The value of this property is considered to be a material.
        YesNo       
A boolean value that will be represented as Yes or No.
        Force       
The data value will be represented as a force.
        LinearForce       
The data value will be represented as a linear force.
        AreaForce       
The data value will be represented as an area force.
        Moment       
The data value will be represented as a moment.
        NumberOfPoles       
A parameter value that represents the number of poles, as used in electrical disciplines.
        FixtureUnit       
A parameter value that represents the fixture units, as used in piping disciplines.
        FamilyType       
A parameter used to control the type of a family nested within another family.


其中我们看到有的是Material型,或FamilyType型。



对于字符串,整形,长度(double)型,我们可以分别通过Parameter.AsString(), Parameter.AsInteger(), AsDouble()等来访问。

那么如果是Material类型的,怎么获取具体这个材料是什么呢? 此时存在在参数中的实际上是一个元素id即ElementId。

可以用Parameter.AsElementId()方法获得元素Id,然后用Document.get_Element(ElementId id) 方法获取这个材料对象。



请看下面的代码获取柱子的材料,并在任务框上显示材料名称。

view plaincopy
public class RevitCommand : IExternalCommand
{
    public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
    {

      UIApplication app = commandData.Application;
      Document doc = app.ActiveUIDocument.Document;


      //pick the column,

      Selection sel = app.ActiveUIDocument.Selection;
      Reference ref1 = sel.PickObject(ObjectType.Element, "Please pick a column to get its Materai parameter value");
      Element elem = ref1.Element;


   // the material parameter name for column is "Column Material"
      Parameter param = room.get_Parameter("Column Material");
      ElementId idMaterial = param.AsElementId();

      Material mat = doc.get_Element(idMaterial) as Material;
      MessageBox.Show("The material name is" + mat.Name);
      
      return Result.Succeeded ;
    }
}这个方法可以获取任何参数值是其它Revit对象的参数值。
作者:叶雄进文章来源:http://blog.csdn.net/joexiongjin/article/category/782739

极HONDA速 发表于 2014-2-14 10:16:34

路过!!!
不发表意见……

dgren 发表于 2014-2-15 14:28:09

顶!!!!!!!!!!

NetBeetle 发表于 2014-2-15 14:32:19

顶!!!!!!!!!!!!!!!!!!!!!!!!!

ben7 发表于 2014-2-15 14:42:42

顶起来…………

We晕晕 发表于 2014-2-18 12:06:18

顶......
楼下跟上.....

看看侃侃 发表于 2014-2-20 14:06:43

顶!!!!!!!!!!!!!!!!!!!!!!!!!

页: [1]
查看完整版本: 读取参数类型是一个对象的参数值