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