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); }
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); }
/// <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); } } } }
/// <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); }