Example #1
0
        /// <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.");
            }
        }
Example #4
0
        /// <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);
Example #7
0
        /// <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);
        }