感谢分享!
搞定,结贴,谢谢二位大佬!
C++端:
extern "C" __declspec(dllexport) void __stdcall worldPointToGlobalScreenPoint(int viewNumber, DPoint3d worldPoint, Point2d* globalScreenPoint) { MSDialogP viewWindow = mdlWindow_viewWindowGet(viewNumber);
DPoint3d viewPoint; DPoint3d screenPoint; viewWindow->GetViewport()->ActiveToView(&viewPoint, &worldPoint, 1); viewWindow->GetViewport()->ViewToScreen(&screenPoint, &viewPoint, 1); Point2d pointInMdl{ (int)screenPoint.x, (int)screenPoint.y };
if (mdlWindow_isGlobalPointConversionRequired(viewWindow->GetScreenNumber())) { mdlWindow_globalPointConversionIncrease(globalScreenPoint, viewWindow, &pointInMdl); }}
C#端:
[DllImport("MstnLib.dll")] public static extern void worldPointToGlobalScreenPoint(int viewNumber, Bentley.GeometryNET.DPoint3d worldPoint, ref Bentley.GeometryNET.Point2d globalScreenPoint);
Answer Verified By: lingwei liu
嗯,正在加紧封装中,谢谢!
您需要用C++/CLI封装一下供C#调用,或者通过C#的PInvoke技术(可百度来学习)来调用C++函数。
目前高级的较低层的功能还仅存在于C++中,C#未封装。
C#里面怎么把第二个参数传到mdlWindow_globalPointConversionIncrease中去呢?