Ejemplo n.º 1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="parameters"></param>
 /// <param name="parasiteObject"></param>
 public static void AddParametersToParasiteObj(ParasiteObject parasiteObject, P_Parameter[] parameters = null)
 {
     if (parameters != null)
     {
         for (int i = 0; i < parameters.Length; i++)
         {
             parasiteObject.AddParameter(parameters[i].ParameterType.ToString(), parameters[i]);
         }
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="parameters"></param>
        /// <param name="dynSolid"></param>
        /// <returns></returns>
        public static ParasiteObject CreateParasiteObject(DynSolid dynSolid, P_Parameter[] parameters = null)
        {
            ParasiteObject parasiteObject = new ParasiteObject(dynSolid);

            if (parameters != null)
            {
                for (int i = 0; i < parameters.Length; i++)
                {
                    parasiteObject.AddParameter(parameters[i].ParameterType.ToString(), parameters[i]);
                }
            }

            return(parasiteObject);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="geometryElement"></param>
        /// <param name="parameters"></param>
        /// <param name="outPutSolids"></param>
        /// <param name="parasiteObjects"></param>
        public static void CreateParasiteObjectFromGeometryElement(GeometryElement geometryElement, P_Parameter [] parameters,
                                                                   List <DynSolid> outPutSolids, List <ParasiteObject> parasiteObjects)
        {
            bool           success;
            ParasiteObject parasiteObject = new ParasiteObject();

            foreach (GeometryObject item in geometryElement)
            {
                success = GeometryExtraction.TryGetGeometryFromGeometryObject(item, out Autodesk.DesignScript.Geometry.Solid dynS);

                if (success)
                {
                    parasiteObject = CreateParasiteObject(dynS);
                    AddParametersToParasiteObj(parasiteObject, parameters);
                    parasiteObjects.Add(parasiteObject);
                    outPutSolids.Add(dynS);
                }
            }
        }
        /// <summary>
        /// "Bakes" geometry to the current Rhino Document
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="att"></param>
        private static void Bake(ParasiteAbstractObject obj, ObjectAttributes att, Rhino.RhinoDoc DOC)
        {
            if (obj == null)
            {
                throw new ParasiteArgumentException("You are attempting to bake a null object!");
            }

            if (obj is ParasiteObject)
            {
                ParasiteObject parasiteObject = obj as ParasiteObject;

                if (parasiteObject.Data is Parasite_BrepSolid solid)
                {
                    DOC.Objects.AddBrep(RhinoConversion.ToRhinoType(solid, 0.001), att);
                }

                else
                {
                    throw new ParasiteNotImplementedExceptions($"Baking capabilities for " +
                                                               $"{parasiteObject.Data.GetType().ToString()} are still not implemented! check back later");
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// This method selects  all family instances from a given category, and returns
        /// a collection of Parasite Objects. Each Parasite Object will contain Revit data of each
        /// of the geometry. For example a given frame of a window will identify itself as a frame
        /// </summary>
        /// <param name="element"></param>
        /// <param name="outPutSolids"></param>
        /// <returns></returns>
        public static void GeometryDataFromFamilyInstance(Element element, List <DynamoSolid> outPutSolids,
                                                          List <ParasiteObject> parasiteObjects, Options OP, Document doc)
        {
            if (element.Category.Name == "Windows")
            {
                GeometryElement geoElement = element.get_Geometry(OP);

                for (int i = 0; i < geoElement.Count(); i++)
                {
                    GeometryInstance geoInstance     = geoElement.ElementAt(i) as GeometryInstance;
                    GeometryElement  geometryElement = geoInstance.GetInstanceGeometry();

                    if (geometryElement != null)
                    {
                        foreach (GeometryObject item in geometryElement)
                        {
                            bool           success        = TryeGetGeometryDataFromGeometryObject(item, out Solid solid, out DynamoSolid dynS);
                            ParasiteObject parasiteObject = new ParasiteObject();

                            if (success)
                            {
                                // GraphicsStyle will never be null for windows
                                if (doc.GetElement(solid.GraphicsStyleId) is GraphicsStyle gStyle)
                                {
                                    P_Parameter paramChildLayer = new P_Parameter(P_ParameterType.ChildLayer, gStyle.GraphicsStyleCategory.Name, P_StorageType.String);
                                    P_Parameter paramLayer      = new P_Parameter(P_ParameterType.Layer, element.Category.Name, P_StorageType.String);

                                    parasiteObject = DynamoParasiteFactory.CreateParasiteObject(dynS);
                                    DynamoParasiteFactory.AddParametersToParasiteObj(parasiteObject, new P_Parameter[] { paramChildLayer, paramLayer });
                                    parasiteObjects.Add(parasiteObject);
                                    outPutSolids.Add(dynS);
                                }

                                else
                                {
                                    throw new ParasiteConversionExceptions(element.GetType(), parasiteObject.GetType());
                                }
                            }
                        }
                    }
                }
            }

            else if (element.Category.Name == "Doors")
            {
                GeometryElement geoElement      = element.get_Geometry(OP);
                P_Parameter     paramChildLayer = new P_Parameter(P_ParameterType.ChildLayer, element.Name, P_StorageType.String);
                P_Parameter     paramLayer      = new P_Parameter(P_ParameterType.Layer, element.Category.Name, P_StorageType.String);

                for (int i = 0; i < geoElement.Count(); i++)
                {
                    GeometryInstance geoInstance     = geoElement.ElementAt(i) as GeometryInstance;
                    GeometryElement  geometryElement = geoInstance.GetInstanceGeometry();

                    if (geometryElement != null)
                    {
                        DynamoParasiteFactory.CreateParasiteObjectFromGeometryElement(geometryElement,
                                                                                      new P_Parameter[] { paramChildLayer, paramLayer }, outPutSolids, parasiteObjects);
                    }
                }
            }

            else
            {
                throw new ParasiteNotImplementedExceptions("Family Instance Category not implemented yet");
            }
        }
Ejemplo n.º 6
0
        public static ParasiteObject CreateParasiteObject(DynSolid dynSolid)
        {
            ParasiteObject parasiteObject = new ParasiteObject(dynSolid);

            return(parasiteObject);
        }