Esempio n. 1
0
        public override PanelElementCollection EnterPanelElements(string prompt = "Enter panel elements")
        {
            GetObject gO = new GetObject();

            gO.SetCustomGeometryFilter(new GetObjectGeometryFilter(FilterHandles));
            gO.GeometryFilter = ObjectType.Surface | ObjectType.Mesh;
            gO.SetCommandPrompt(prompt);
            if (gO.GetMultiple(1, 0) == GetResult.Cancel)
            {
                throw new OperationCanceledException("Operation cancelled by user");
            }
            foreach (ObjRef rObj in gO.Objects())
            {
                var result = new PanelElementCollection();
                if (Host.Instance.Handles.Links.ContainsSecond(rObj.ObjectId))
                {
                    Guid    guid    = Host.Instance.Handles.Links.GetFirst(rObj.ObjectId);
                    Element element = Core.Instance.ActiveDocument?.Model?.Elements[guid];
                    if (element != null && element is PanelElement)
                    {
                        result.Add((PanelElement)element);
                    }
                }
                return(result);
            }
            return(null);
        }
Esempio n. 2
0
        public static List <PanelElementGoo> Convert(PanelElementCollection collection)
        {
            var result = new List <PanelElementGoo>();

            if (collection != null)
            {
                foreach (PanelElement obj in collection)
                {
                    result.Add(new PanelElementGoo(obj));
                }
            }
            return(result);
        }
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            Host.EnsureInitialisation();

            PanelElementCollection elements = Core.Instance.ActiveDocument.Model.Elements.PanelElements;

            foreach (PanelElement lEl in elements)
            {
                RhinoMeshAvatar mAv = new RhinoMeshAvatar();
                ((IMeshAvatar)mAv).Builder.AddPanelPreview(lEl);
                ((IMeshAvatar)mAv).FinalizeMesh();
                RhinoOutput.BakeMesh(mAv.RenderMesh);
            }
            Host.Instance.Refresh();
            return(Result.Success);
        }
Esempio n. 4
0
 /// <summary>
 /// Write Panel Elements to ETABS
 /// </summary>
 /// <param name="elements"></param>
 /// <param name="context"></param>
 public void WritePanelElements(PanelElementCollection elements, ETABSConversionContext context)
 {
     foreach (PanelElement element in elements)
     {
         if (!element.IsDeleted && element.Geometry != null)
         {
             string id = context.IDMap.GetSecondID(element) ?? "";
             if (element.Geometry is PlanarRegion)
             {
                 var      region   = (PlanarRegion)element.Geometry;
                 Vector[] pts      = region.Perimeter.Facet(Angle.FromDegrees(5));
                 var      x        = pts.XCoordinates();
                 var      y        = pts.YCoordinates();
                 var      z        = pts.ZCoordinates();
                 string   propName = element.Family?.Name ?? "";
                 SapModel.AreaObj.AddByCoord(pts.Length, ref x, ref y, ref z, ref id, propName, element.Name);
                 // TODO: Build-Up
                 context.IDMap.Add(element, id);
             }
         }
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Write a Nucleus model to the currently open ETABS model
        /// </summary>
        /// <param name="model"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        private bool WriteToETABS(Model.Model model, ETABSConversionContext context)
        {
            RaiseMessage("Writing data to ETABS...");

            SapModel.File.NewBlank(); //TODO: check if updating
            //SapModel.File.NewSteelDeck(0, 12, 12, 0, 0, 24, 24);

            if (context.Options.Levels)
            {
                LevelCollection levels = model.Levels;
                // Seemingly can only write whole table at once - updating individuals may not be wise...
                if (levels.Count > 0)
                {
                    RaiseMessage("Writing levels...");
                    WriteStoreys(levels, context);
                }
            }

            if (context.Options.Nodes)
            {
                NodeCollection nodes = model.Nodes;
                if (context.Options.Update)
                {
                    nodes = nodes.Modified(context.Options.UpdateSince);
                }
                if (nodes.Count > 0)
                {
                    RaiseMessage("Writing nodes...");
                }
                WriteNodes(nodes, context);
            }

            if (context.Options.Families)
            {
                FamilyCollection families = model.Families;
                if (context.Options.Update)
                {
                    families = families.Modified(context.Options.UpdateSince);
                }
                if (families.Count > 0)
                {
                    RaiseMessage("Writing properties...");
                }
                WriteFamilies(families, context);
            }

            if (context.Options.LinearElements)
            {
                LinearElementCollection linearElements = model.Elements.LinearElements;
                if (context.Options.Update)
                {
                    linearElements = linearElements.Modified(context.Options.UpdateSince);
                }
                if (linearElements.Count > 0)
                {
                    RaiseMessage("Writing linear elements...");
                }
                WriteLinearElements(linearElements, context);
            }

            if (context.Options.PanelElements)
            {
                PanelElementCollection panelElements = model.Elements.PanelElements;
                if (context.Options.Update)
                {
                    panelElements = panelElements.Modified(context.Options.UpdateSince);
                }
                if (panelElements.Count > 0)
                {
                    RaiseMessage("Writing Panels...");
                }
                WritePanelElements(panelElements, context);
            }

            if (context.Options.Sets)
            {
                ModelObjectSetCollection sets = model.Sets;
                //if (context.Options.Update) sets = //TODO?
                if (sets.Count > 0)
                {
                    RaiseMessage("Writing Groups...");
                }
                WriteSets(sets, context);
            }

            if (context.Options.Loading)
            {
                var cases = model.LoadCases;
                if (cases.Count > 0)
                {
                    RaiseMessage("Writing Load Cases...");
                }
                WriteLoadCases(cases, context);

                var loads = model.Loads;
                if (loads.Count > 0)
                {
                    RaiseMessage("Writing Loads...");
                }
                WriteLoads(loads, context);
            }

            return(true);
        }
 public override bool Execute(ExecutionInfo exInfo = null)
 {
     Elements = Model.Elements.PanelElements;
     Elements.RemoveDeleted();
     return(true);
 }