1.數(shù)據(jù)讀取
1.1屬性讀取
屬性分為類型屬性和實(shí)例屬性,可以通過Parametes或者ParametersMap查看 ,后者屬性較少。

Parametes

ParametersMap
GetOrderedParameters對族里面的所有可見屬性進(jìn)行排序,按照屬性順序,忽略族里的分組順序進(jìn)行排序。
GetParameterFormatOptions獲取數(shù)據(jù)格式。
LookupParameter查找自定義族中的自定義參數(shù)。
Parameter(Guid)通過共享參數(shù)的Guid屬性在指定的element中查找。
Parameter(BuiltInParameter)通過自帶參數(shù)的特定built in param屬性來查找。

BuiltInParameter
實(shí)例屬性在實(shí)例里面,類型屬性在類型里面,可載入族的類型屬性在symbol里面。
測試代碼:
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
Reference refer = uidoc.Selection.PickObject(ObjectType.Element, "請選擇墻");
Wall awall = doc.GetElement(refer) as Wall;
//Parameter para = awall.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH);//方式一
Parameter para = awall.LookupParameter("長度");//方式二
double lenght1 = para.AsDouble();
string length2 = para.AsValueString();
TaskDialog.Show("長度", lenght1.ToString() + "\r\n" + length2);
return Result.Succeeded;
}

測試結(jié)果
1.2其它數(shù)據(jù)讀取
Lookup不能修改的數(shù)據(jù),查看api。
2.數(shù)據(jù)的修改
大部分?jǐn)?shù)據(jù)不能直接修改,比如面積/體積(計(jì)算得到的),墻的長度(通過墻的位置確定長度的)。
測試代碼:
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
Reference refer = uidoc.Selection.PickObject(ObjectType.Element, "請選擇墻");
Wall awall = doc.GetElement(refer) as Wall;
Parameter para = awall.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET);
using (Transaction trans = new Transaction(doc, "修改墻的底部偏移"))//給名稱或者在star里面給,兩個都沒給會報錯
{
trans.Start();
para.Set(1000 / 304.8);
trans.Commit();
}
return Result.Succeeded;
}

測試結(jié)果