/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { Brep srf = null; ISolver2D solver = new ISolver2D(); IField field = null; List <IConstraint> constraints = new List <IConstraint>(); List <ITransfinite> transfinites = new List <ITransfinite>(); DA.GetData(0, ref srf); DA.GetData(1, ref field); DA.GetDataList(2, constraints); DA.GetDataList(3, transfinites); DA.GetData(4, ref solver); if (srf.IsSolid || srf.Faces.Count > 1) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Input geometry should be a trimmed/untrimmed surface."); return; } string logInfo; GH_Structure <IEntityInfo> entities; IMesh mesh = IKernel.IMeshingKernel.CreateShellMeshFromBrep(srf, solver, out logInfo, out entities, constraints, transfinites, field); DA.SetData(0, mesh); DA.SetDataTree(1, entities); DA.SetData(2, logInfo); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { Curve crv = null; ISolver2D solver = new ISolver2D(); List <IConstraint> constraints = new List <IConstraint>(); List <ITransfinite> transfinites = new List <ITransfinite>(); IField field = null; DA.GetData(0, ref crv); DA.GetData(1, ref field); DA.GetDataList(2, constraints); DA.GetDataList(3, transfinites); DA.GetData(4, ref solver); if (crv.IsClosed) { string logInfo; GH_Structure <IEntityInfo> entities; IMesh mesh = IKernel.IMeshingKernel.CreateShellMeshFromClosedCurve(crv, solver, out logInfo, out entities, constraints, transfinites, field); DA.SetData(0, mesh); DA.SetDataTree(1, entities); DA.SetData(2, logInfo); } else { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Curve should be closed."); } }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { Brep geom = null; ISolver2D solver = new ISolver2D(); List <int> excludeSrfTag = new List <int>(); IField field = null; List <IConstraint> constraints = new List <IConstraint>(); List <ITransfinite> transfinites = new List <ITransfinite>(); DA.GetData(0, ref geom); DA.GetData(1, ref offset); DA.GetData(2, ref cut); DA.GetDataList(3, excludeSrfTag); DA.GetData(4, ref field); DA.GetDataList(5, constraints); DA.GetDataList(6, transfinites); DA.GetData(7, ref solver); if (geom.IsSolid) { string logInfo; GH_Structure <IEntityInfo> entities; IMesh mesh = IKernel.IMeshingKernel.CreateShellMeshFromThickSolid(geom, excludeSrfTag, offset, cut, solver, out logInfo, out entities, constraints, transfinites, field); DA.SetData(0, mesh); DA.SetDataTree(1, entities); DA.SetData(2, logInfo); } else { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Brep should be closed."); } }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { ISolver2D solverOpt = new ISolver2D(); double maxSize = 1, minSize = 1; bool rightAngle = false; MeshSolvers2D solver = MeshSolvers2D.Automatic; DA.GetData(1, ref minSize); DA.GetData(2, ref maxSize); DA.GetData(3, ref adaptive); DA.GetData(4, ref minElemPerTwoPi); DA.GetData(5, ref smoothingSteps); DA.GetData(6, ref ho_optimization); DA.GetData(7, ref rightAngle); if (minSize < 0.1 && MassiveRefinement == false) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, solverOpt.MinSizeWarning); minSize = 0.1; } double size = (maxSize + minSize) / 2; DA.GetData(0, ref size); if (rightAngle) { solver = MeshSolvers2D.PackingOfParallelograms; } solverOpt.MeshingAlgorithm = (int)solver; solverOpt.CharacteristicLengthMin = minSize; solverOpt.CharacteristicLengthMax = maxSize; solverOpt.CharacteristicLengthFromCurvature = adaptive; solverOpt.MinimumElementsPerTwoPi = minElemPerTwoPi; solverOpt.OptimizationSteps = smoothingSteps; solverOpt.HighOrderOptimize = ho_optimization; solverOpt.Subdivide = false; solverOpt.ElementOrder = 2; solverOpt.SecondOrderIncomplete = false; solverOpt.Size = size; DA.SetData(0, solverOpt); this.Message = "6Tria"; }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { MeshSolvers2D solver = MeshSolvers2D.Automatic; ISolver2D solverOpt = new ISolver2D(); double maxSize = 1, minSize = 1; DA.GetData(1, ref minSize); DA.GetData(2, ref maxSize); DA.GetData(3, ref adaptive); DA.GetData(4, ref minElemPerTwoPi); DA.GetData(5, ref smoothingSteps); DA.GetData(6, ref ho_optimization); maxSize *= 2; minSize *= 2; if (minSize < 0.1 && MassiveRefinement == false) { AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, solverOpt.MinSizeWarning); minSize = 0.1; } double size = (maxSize + minSize) / 2; DA.GetData(0, ref size); size *= 2; solverOpt.MeshingAlgorithm = (int)solver; solverOpt.CharacteristicLengthMin = minSize; solverOpt.CharacteristicLengthMax = maxSize; solverOpt.CharacteristicLengthFromCurvature = adaptive; solverOpt.MinimumElementsPerTwoPi = minElemPerTwoPi; solverOpt.OptimizationSteps = smoothingSteps; solverOpt.HighOrderOptimize = ho_optimization; solverOpt.ElementOrder = 2; solverOpt.RecombinationAlgorithm = 1; solverOpt.RecombineAll = true; solverOpt.SubdivisionAlgorithm = 1; solverOpt.Subdivide = true; solverOpt.Size = size; solverOpt.Subdivide = false; DA.SetData(0, solverOpt); this.Message = "8Quad"; }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { Curve crv = null; double length = 1; IField field = null; ISolver2D solver = new ISolver2D(); List <ITransfinite> transfinite = new List <ITransfinite>(); DA.GetData(0, ref crv); DA.GetData(1, ref dir); DA.GetData(2, ref length); DA.GetData(3, ref field); DA.GetDataList(4, transfinite); DA.GetData(5, ref solver); string logInfo; GH_Structure <IEntityInfo> entities; IMesh mesh = IKernel.IMeshingKernel.CreateShellMeshFromCurveExtrusion(crv, dir, length, solver, out logInfo, out entities, default, transfinite, field);
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { Brep b = null; ISolver2D solver = new ISolver2D(); List <IConstraint> constraints = new List <IConstraint>(); List <ITransfinite> transfinites = new List <ITransfinite>(); IField field = null; DA.GetData(0, ref b); DA.GetData(1, ref field); DA.GetDataList(2, constraints); DA.GetDataList(3, transfinites); DA.GetData(4, ref solver); string logInfo; GH_Structure <IEntityInfo> entities; IMesh mesh = IKernel.IMeshingKernel.CreateShellMeshFromBrep(b, solver, out logInfo, out entities, constraints, transfinites, field); DA.SetData(0, mesh); DA.SetDataTree(1, entities); DA.SetData(2, logInfo); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { Curve _outer = null; List <Curve> _inner = new List <Curve>(); List <IConstraint> constraints = new List <IConstraint>(); List <ITransfinite> transfinites = new List <ITransfinite>(); ISolver2D solver = new ISolver2D(); IField field = null; //Retrieve vertices and elements DA.GetData(0, ref _outer); DA.GetDataList(1, _inner); DA.GetData(2, ref field); DA.GetDataList(3, constraints); DA.GetDataList(4, transfinites); DA.GetData(5, ref solver); if (!_outer.IsPolyline()) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "The outer boundary should be planar closed polyline."); return; } if (_inner.Count > 0 && !_inner.TrueForAll(crv => crv.IsPolyline())) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Inner boundaries should be planar closed polylines."); return; } string logInfo; GH_Structure <IEntityInfo> entities; IMesh mesh = IKernel.IMeshingKernel.CreateShellMeshFromPolylines(_outer, _inner, solver, out logInfo, out entities, constraints, transfinites, field); DA.SetData(0, mesh); DA.SetDataTree(1, entities); DA.SetData(2, logInfo); }