Revit |
UIApplication uiapp = commandData.Application;
UIDocument uidoc = uiapp.ActiveUIDocument;
Application app = uiapp.Application;
Document doc = doc.Document;
// , ""
ParameterValueProvider provider
= new ParameterValueProvider(new ElementId((int)BuiltInParameter.RBS_ELEC_CIRCUIT_PANEL_PARAM));
FilterStringRule rule = new FilterStringRule(provider, new FilterStringEquals(), "", true);
ElementParameterFilter filter = new ElementParameterFilter(rule);
ICollection docCircuits =
(new FilteredElementCollector(doc))
.OfCategory(BuiltInCategory.OST_ElectricalCircuit)
.WherePasses(filter)
.ToArray();
foreach (Element docCircuit in docCircuits)
{
//
num = docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_CIRCUIT_NUMBER)?
.Element.Name;
//
powerFactor =
docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_POWER_FACTOR)?
.AsValueString();
//
cableType =
docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_CIRCUIT_WIRE_TYPE_PARAM)?
.AsValueString();
//
Element wireType = new FilteredElementCollector(doc)
.OfClass(typeof(WireType))
.FirstOrDefault(
e => e.Name.Equals(cableType));
string coreMaterial = wireType.get_Parameter(BuiltInParameter.RBS_WIRE_MATERIAL_PARAM)
.AsValueString();
}
using (Transaction tx = new Transaction(doc))
{
tx.Start(" ");
double xCoord = 0;
//
foreach (Circuit circuit in panel.circuits)
{
// .
FamilySymbol lineSymbol = FilteredElementCollector(doc)
.OfClass(typeof(FamilySymbol))
.Where(q => q.Name == "SLD_")
.First() as FamilySymbol;
//
XYZ coords = new XYZ(xCoord, 0, 0).ToFeets();
// SLD_
FamilyInstance line = doc.Create.NewFamilyInstance(coords, lineSymbol, uidoc.ActiveView);
//
ParameterSet parametersLineOut = line.Parameters;
//
foreach (Parameter param in parametersLineOut)
{
switch (param.Definition.Name)
{
case " ": param.Set(circuit.number); break;
case " ": param.Set(circuit.cableType); break;
case " ": param.Set(circuit.powerFactor); break;
}
}
xCoord = xCoord + 25;
}
tx.Commit();
}