/// <inheritdoc />
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            GH_ObjectWrapper goo = null;

            if (!DA.GetData(0, ref goo))
            {
                return;
            }

            IFeature feat = null;

            switch (goo.Value)
            {
            case Mesh m:
                feat = new MeshFeature(m);
                break;

            case Curve c:
                feat = new CurveFeature(c);
                break;

            case Point3d p:
                feat = new PointFeature(p);
                break;

            default:
                throw new ArgumentException();
            }

            DA.SetData(0, new GH_ObjectWrapper(feat));
        }
Beispiel #2
0
    public bool IsFirstMeshFeature(MeshFeature mf)
    {
        var fi = detail.features.FindIndex(f => f is MeshFeature);
        var mi = detail.features.IndexOf(mf);

        return(fi == mi);
    }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="TV"></typeparam>
        /// <typeparam name="TE"></typeparam>
        /// <typeparam name="TF"></typeparam>
        /// <param name="mesh"></param>
        /// <param name="target"></param>
        /// <param name="features"></param>
        /// <param name="tolerance"></param>
        /// <returns></returns>
        public static LoopGrower Create <TV, TE, TF>(HeMeshBase <TV, TE, TF> mesh, MeshFeature target, IEnumerable <IFeature> features, double tolerance = 1.0e-4)
            where TV : HeVertex <TV, TE, TF>, IVertex3d
            where TE : Halfedge <TV, TE, TF>
            where TF : HeFace <TV, TE, TF>
        {
            var copy = HeMeshSim.Factory.CreateCopy(mesh, (v0, v1) => v0.Position = v1.Position, delegate { }, delegate { });

            return(new LoopGrower(copy, target, features, tolerance));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="mesh"></param>
        /// <param name="target"></param>
        /// <param name="features"></param>
        /// <param name="tolerance"></param>
        public LoopGrower(HeMeshSim mesh, MeshFeature target, IEnumerable <IFeature> features, double tolerance = 1.0e-4)
        {
            mesh.Compact();

            _mesh      = mesh;
            _verts     = _mesh.Vertices;
            _hedges    = _mesh.Halfedges;
            _settings  = new LoopGrowerSettings();
            _stepCount = 0;

            Target = target;
            InitFeatures(features, tolerance);

            // start on features
            ProjectToFeatures();
        }