public unsafe List<T> BreakDuct(T Pipe,DPoint3d CompEndPoint,DPoint3d BreakEndPoint) { _dPoint3d compEndPoint; _dPoint3d breakEndPoint; IntPtr nativeEndPointPtr = new IntPtr((void*)&compEndPoint); ComponentHelper.Instance.ConvertToNativePoint3d(nativeEndPointPtr, CompEndPoint);
ShowInfoMessage(String.Format("CompEndPoint X={0} Y={1} Z={2}", CompEndPoint.x, CompEndPoint.y, CompEndPoint.z), ""); ShowInfoMessage(String.Format("compEndPoint X={0} Y={1} Z={2}", *(double*)&compEndPoint, *(double*)(&compEndPoint + 8), *(double*)(&compEndPoint + 16)), "");
IntPtr nativebreakEndPtr = new IntPtr((void*)&breakEndPoint); ComponentHelper.Instance.ConvertToNativePoint3d(nativebreakEndPtr, BreakEndPoint);
ShowInfoMessage(String.Format("BreakEndPoint X={0} Y={1} Z={2}", BreakEndPoint.x, BreakEndPoint.y, BreakEndPoint.z), ""); ShowInfoMessage(String.Format("breakEndPoint X={0} Y={1} Z={2}", *(double*)&breakEndPoint, *(double*)(&breakEndPoint + 8 ), *(double*)(&breakEndPoint + 16 )), "");
return new List<T>(); }
代码如上,托管类转换为非托管类后,每次输出都无法得到想要的结果,请大侠指点!谢谢了!
请参考如下《一步步学习Addins》的第八章,如何在C#中调用MDL函数,其中有将托管的数据转为NativeCode的应用。
Learning MicroStation Addins Step by Step[8]