/// <summary> /// 向属性树的第三层插放数据 /// </summary> /// <param name="parameterset"></param> private void InsertThrParam(Element elem, ParamTree Tree, ParameterSet parameter) { foreach (Parameter param in parameter) { if (param == null) { continue; //如果参数没有,继续下一个 } //定位第二层 ParamTree tmptree = Tree.GetChildNodesByName(LabelUtils.GetLabelFor(param.Definition.ParameterGroup)); string sb = ""; switch (param.StorageType) { case Autodesk.Revit.DB.StorageType.Double: sb += param.AsValueString(); break; case Autodesk.Revit.DB.StorageType.Integer: sb += param.AsInteger().ToString(); break; case Autodesk.Revit.DB.StorageType.ElementId: sb += (elem != null ? param.AsValueString() : "Not set"); break; case Autodesk.Revit.DB.StorageType.String: sb += param.AsString(); break; case Autodesk.Revit.DB.StorageType.None: sb += param.AsValueString(); break; default: break; } //循环添加第三层数据 tmptree.AddChildNodes(new ParamTree("3", param.Definition.Name, sb)); } }
/// <summary> /// 制作单个构件的属性树 /// </summary> /// <param name="parametergroup"></param> private ParamTree MakeParamTree(Element elem, List <string> parametergroup) { //第一层根节点的名字构件的Id ParamTree Tree = new ParamTree("1", elem.UniqueId.ToString()); //第二层 foreach (string str in parametergroup) { Tree.AddChildNodes(new ParamTree("2", str)); } //得到每个属性的属性类别,然后查找到第二层的节点 ParameterSet parameters = elem.Parameters;//获取单个元素的全部属性; //获取类型属性: ParameterSet parameters2 = GetParamSet(elem); InsertThrParam(elem, Tree, parameters); InsertThrParam(elem, Tree, parameters2); return(Tree); }