您的位置:首页 > 产品设计 > UI/UE

Building Coder(Revit 二次开发) - 内置参数名称和LabelUtils类

2011-08-22 10:51 891 查看
Building Code 链接:http://thebuildingcoder.typepad.com/blog/2011/08/built-in-parameter-name-and-labelutils.html

Revit二次开发论坛链接:http://revit.5d6d.com/viewthread.php?tid=1281&extra=

之前我曾经提到过Revit 2011引入了一个新的辅助类:LabelUtils。现在另外一个问题让我觉得有必要再讨论一下 LabelUtils 的使用。

问题:

我需要得到一个内置参数的 Autodesk.Revit.DB.Definition.Name 属性。我知道 Element 的 get_Parameter() 方法有一个以 BuiltinParameter 为参数的重载版本。

但我找不到一个元素可以让我取得参数的名称。我期望是一个类似 Document.Settings.Categories(提供全局性的内置类别集合)的属性。我尝试过 Document.ParameterBindings。

但是这个字典映射好像只包含外部定义(即共享参数的定义),而不是内置参数。

回答:

下面这段代码可以取得所有内置参数的枚举值。这是你需要的代码吗?

string s = string.Empty;

foreach( BuiltInParameter bip in Enum.GetValues( typeof( BuiltInParameter ) ) )
{
s += "\r\n" + bip.ToString();
}
TaskDialog.Show( "arameter Names", s );


问题:

不,我想要的是显示在用户界面上的内置参数名称。而且它们需要是本地化了的。实际上 Parameter.Definition.Name 的值应该就是我需要的结果。但是我现在的问题是

找不到一种方法可以让我取得所有这些内置参数的 Parameter.Definition.Name 的集合。假设有元素“e”包含这个内置参数集合,我就可以利用下面这段代码创建一个内置

参数名称与它对应的显示字符串之间的字典映射。

Element e;

Dictionary<BuiltInParameter, string> mapBipToName = new Dictionary<BuiltInParameter, string>();

foreach( BuiltInParameter bip in Enum.GetValues( typeof( BuiltInParameter ) ) )
{
// translate built-in enum to parameter name
Parameter p = e.get_Parameter( bip );
if( null != p )
{
mapBipToName.Add( bip, p.Definition.Name );
}
}


回答:

请看看 LabelUtils 类,特别是它的 GetLabelFor(BuiltinParameter p) 方法。这个方法返回给定内置参数 p 的本地化显示字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: