Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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++;
            }
        }
Ejemplo n.º 3
0
 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());
     }
 }
Ejemplo n.º 4
0
 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!");
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
 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!");
 }
Ejemplo n.º 7
0
 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());
     }
 }