/// <summary> /// Construct object to extrude given mesh faces, edges and ngons. /// </summary> /// <param name="inputMesh">Mesh to use as starting point. Will not be modified.</param> /// <param name="componentIndices">Mesh faces, edges and ngons to extrude.</param> /// <since>6.3</since> public MeshExtruder(Mesh inputMesh, IEnumerable <ComponentIndex> componentIndices) { ComponentIndices = new INTERNAL_ComponentIndexArray(); foreach (var ci in componentIndices) { ComponentIndices.Add(ci); } m_ptr = UnsafeNativeMethods.RHC_RhinoMeshExtruder_New(inputMesh.ConstPointer(), ComponentIndices.NonConstPointer()); }
/// <summary> /// Creates new extruded mesh. Returns true if any edges or faces were extruded. /// </summary> /// <param name="extrudedMeshOut">Extruded mesh</param> /// <param name="componentIndicesOut">Component indices of extruded faces and vertices</param> public bool ExtrudedMesh(out Mesh extrudedMeshOut, out List <ComponentIndex> componentIndicesOut) { extrudedMeshOut = new Mesh(); var internalComponentIndicesOut = new INTERNAL_ComponentIndexArray(); bool ret = UnsafeNativeMethods.RHC_RhinoMeshExtruder_ExtrudedMeshComponentsOut(m_ptr, extrudedMeshOut.NonConstPointer(), internalComponentIndicesOut.NonConstPointer()); componentIndicesOut = new List <ComponentIndex>(); if (ret) { for (int i = 0; i < internalComponentIndicesOut.Count; i++) { var ci = internalComponentIndicesOut.ToArray()[i]; componentIndicesOut.Add(new ComponentIndex(ci.ComponentIndexType, ci.Index)); } } return(ret); }