请问网格拉伸成体积块的功能函数是哪个呢?功能如下图
这个工具用到的接口都是c/c++的,如下几个函数:
郭老师,我用invoke调用的方式来使用mdlMesh_extrudeVolume函数,但是失败了。请您帮忙看下是我的参数匹配不对吗?
class ImportNativeCode { [System.Runtime.InteropServices.DllImport("ustation.dll", EntryPoint = "mdlMesh_extrudeVolume")] unsafe public static extern int mdlMesh_extrudeVolume(List<PolyfaceHeader> results, ElementAgenda agenda, DVector3d extrusionVec); } protected unsafe bool meshextrude() { Bentley.DgnPlatformNET.Elements.Element mesh = m_dgnModel.FindElementById((ElementId)(ulong)392849); MeshHeaderElement meshHeader = mesh as MeshHeaderElement; PolyfaceHeader aa = meshHeader.GetMeshData(); List<PolyfaceHeader> Result =new List<PolyfaceHeader>(); ElementAgenda inp = new ElementAgenda(); inp.Insert(mesh,false); DVector3d Vec = new DVector3d(0,0,100); ImportNativeCode.mdlMesh_extrudeVolume(Result,inp,Vec); PolyfaceHeader nn = Result[0]; MeshHeaderElement mes = new MeshHeaderElement(m_dgnModel, null, nn); mes.AddToModel(); return true; }
没办法通过PInvoke调用,一方面参数类型比较复杂,都是c/c++类,需要在C#端定义对应的类型才行。另外一方面这个函数原型没有加extern “C”修饰符。
好吧,郭老师,那像问题中这个智能曲面还有其他的拉伸方法吗?
请提供一下您的dgn文件,我看一下元素类型。
2072.tt.dgn
我看您这个智能曲面也是由Mesh直接转换过来的,建议最好还是通过我上边说的接口函数去实现为好,通过Solid接口去实现的话,有途径可以尝试,但是可能对于大部分情况的话,最终都无法生成,因为Solid接口对体有严格的要求,这些要求,Mesh转换过来的Solid大部分情况下都达不到。
郭老师,麻烦您能告诉一下mdlMesh_extrudeVolume、CreateMeshElement的头文件和lib文件是哪个吗?bmake编译没对应上出错了
在C:\Program Files\Bentley\MicroStationCONNECTSDK\include\3dModeling\MeshAPI.h里边,所需的Lib库为:3dModeling.lib。您说的另外一个CreateMeshElement指的是?
MeshHeaderHandler::CreateMeshElement,郭老师是这个函数,利用polyface生成meshelement的函数
MeshHeaderHandler::CreateMeshElement需要连接这个库:DgnPlatform.lib