private Value AddCurves(FamilyInstance fi, GeometryElement geomElem, int count, ref CurveArray curves) { foreach (GeometryObject geomObj in geomElem) { Curve curve = geomObj as Curve; if (null != curve) { curves.Append(curve); continue; } //If this GeometryObject is Instance, call AddCurve GeometryInstance geomInst = geomObj as GeometryInstance; if (null != geomInst) { //curve live in family symbol in this case, need to apply the correct transform to get them in to //the project coordinate system lining up with the instance // http://wikihelp.autodesk.com/Revit/enu/2012/Help/API_Dev_Guide/0074-Revit_Ge74/0108-Geometry108/0110-Geometry110/GeometryInstances //Autodesk.Revit.DB.GeometryElement transformedGeomElem // curves transformed into project coords // = geomInst.GetInstanceGeometry(geomInst.Transform); //AddCurves(fi, transformedGeomElem, count, ref curves); GeometryElement transformedGeomElem // curves transformed into project coords = geomInst.GetInstanceGeometry(); AddCurves(fi, transformedGeomElem, count, ref curves); //Autodesk.Revit.DB.GeometryElement symbolTransformedGeomElem // curves in symbol coords // = geomInst.GetSymbolGeometry(geomInst.Transform); //AddCurves(fi, symbolTransformedGeomElem, count, ref curves); } } return Value.NewContainer(curves); }
private static void UpdatePlacementPoints(FamilyInstance ac, FSharpList<Value> xyzs, int j) { IList<ElementId> placePointIds = AdaptiveComponentInstanceUtils.GetInstancePlacementPointElementRefIds(ac); var pts = ((Value.List) xyzs[j]).Item; if (placePointIds.Count() != pts.Count()) { return; } // Set the position of each placement point int i = 0; foreach (ElementId id in placePointIds) { var point = dynRevitSettings.Doc.Document.GetElement(id) as ReferencePoint; var pt = (XYZ) ((Value.Container) pts.ElementAt(i)).Item; point.Position = pt; i++; } }
private static Value _getParam(FamilyInstance fi, Parameter p) { if (p.StorageType == StorageType.Double) { return Value.NewNumber(p.AsDouble()); } else if (p.StorageType == StorageType.Integer) { return Value.NewNumber(p.AsInteger()); } else if (p.StorageType == StorageType.String) { return Value.NewString(p.AsString()); } else { return Value.NewContainer(p.AsElementId()); } }
private static Value getParam(FamilyInstance fi, Definition paramDef) { var p = fi.get_Parameter(paramDef); if (p != null) { return _getParam(fi, p); } throw new Exception("Parameter \"" + paramDef.Name + "\" was not found!"); }
private static Value _setParam(FamilyInstance ft, Parameter p, Value valueExpr) { if (p.StorageType == StorageType.Double) { p.Set(((Value.Number)valueExpr).Item); } else if (p.StorageType == StorageType.Integer) { p.Set((int)((Value.Number)valueExpr).Item); } else if (p.StorageType == StorageType.String) { p.Set(((Value.String)valueExpr).Item); } else if (valueExpr.IsNumber) { p.Set(new ElementId((int)(valueExpr as Value.Number).Item)); } else { p.Set((ElementId)((Value.Container)valueExpr).Item); } return Value.NewContainer(ft); }
private static Value setParam(FamilyInstance fi, string paramName, Value valueExpr) { var p = fi.get_Parameter(paramName); if (p != null) { return _setParam(fi, p, valueExpr); } throw new Exception("Parameter \"" + paramName + "\" was not found!"); }
private static Value _getParam(FamilyInstance fi, Parameter p) { if (p.StorageType == StorageType.Double) { switch (p.Definition.ParameterType) { case ParameterType.Length: return Value.NewContainer(Units.Length.FromFeet(p.AsDouble())); break; case ParameterType.Area: return Value.NewContainer(Units.Area.FromSquareFeet(p.AsDouble())); break; case ParameterType.Volume: return Value.NewContainer(Units.Volume.FromCubicFeet(p.AsDouble())); break; default: return Value.NewNumber(p.AsDouble()); break; } } else if (p.StorageType == StorageType.Integer) { return Value.NewNumber(p.AsInteger()); } else if (p.StorageType == StorageType.String) { return Value.NewString(p.AsString()); } else { return Value.NewContainer(p.AsElementId()); } }