Revit二次开发之“修改已经加载的族或系统族的参数”
目前只能修改门,墙,风管都没找到方法。
![]()
from:http://revit.5d6d.com/thread-961-1-4.html

[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class SetParam : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Autodesk.Revit.ApplicationServices.Application app = commandData.Application.Application;
//门
string family = "单开门";
string type = "M0721";
FamilySymbol fs = FindElementType(uiDoc.Document, typeof(FamilySymbol), family, type, BuiltInCategory.OST_Doors) as FamilySymbol;
Transaction tr = new Transaction(uiDoc.Document, "test");
tr.Start();
foreach (Parameter para in fs.Parameters)
if (para.Definition.Name == "Height")
para.Set(mmToFeet(200));
tr.Commit();
return Result.Succeeded;
}
//毫米到英寸,单位换算
public double mmToFeet(double val) { return val / 304.8; }
//通过族名称,族类型,从过滤器中找到指定的类型。
public Element FindElementType(Document doc, Type targetType, string familyName, string typeName, BuiltInCategory catagory)
{
IList<Element> elements = FindSpecialElements(doc, targetType, catagory);
Element elem = null;
foreach (Element e in elements)
{
if (e.Name.Equals(typeName) &&
e.get_Parameter(BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM).AsString().Equals(familyName))
{
elem = e;
break;
}
}
return elem;
}
//过滤
//FindSpecialElements(doc, typeof(FamilySymbol), BuiltInCategory.OST_Doors);
public IList<Element> FindSpecialElements(Document doc, Type targetType, BuiltInCategory catagory)
{
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfClass(targetType);
if (collector != null)
collector.OfCategory(catagory);
IList<Element> elements = collector.ToElements();
return elements;
}
}
[Regeneration(RegenerationOption.Manual)]
public class SetParam : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Autodesk.Revit.ApplicationServices.Application app = commandData.Application.Application;
//门
string family = "单开门";
string type = "M0721";
FamilySymbol fs = FindElementType(uiDoc.Document, typeof(FamilySymbol), family, type, BuiltInCategory.OST_Doors) as FamilySymbol;
Transaction tr = new Transaction(uiDoc.Document, "test");
tr.Start();
foreach (Parameter para in fs.Parameters)
if (para.Definition.Name == "Height")
para.Set(mmToFeet(200));
tr.Commit();
return Result.Succeeded;
}
//毫米到英寸,单位换算
public double mmToFeet(double val) { return val / 304.8; }
//通过族名称,族类型,从过滤器中找到指定的类型。
public Element FindElementType(Document doc, Type targetType, string familyName, string typeName, BuiltInCategory catagory)
{
IList<Element> elements = FindSpecialElements(doc, targetType, catagory);
Element elem = null;
foreach (Element e in elements)
{
if (e.Name.Equals(typeName) &&
e.get_Parameter(BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM).AsString().Equals(familyName))
{
elem = e;
break;
}
}
return elem;
}
//过滤
//FindSpecialElements(doc, typeof(FamilySymbol), BuiltInCategory.OST_Doors);
public IList<Element> FindSpecialElements(Document doc, Type targetType, BuiltInCategory catagory)
{
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfClass(targetType);
if (collector != null)
collector.OfCategory(catagory);
IList<Element> elements = collector.ToElements();
return elements;
}
}
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。

浙公网安备 33010602011771号