老师好,在c#二次开发中如果函数中传入的参数是ValueType类型的变量,该怎么将ValueType类型的变量转换为Bentley.GeometryNET.DPoint3d类型呢?
函数传入的参数是ValueType,不是应该问怎么从其他类型转换成ValueType嘛,怎么会是如何将ValueType转换成其他类型呢?
小郭老师 刚才我的表达有误 不好意思哈,小郭老师 请教下 如下代码所示:
[System.Runtime.InteropServices.DllImport("ustation.dll", EntryPoint = "mdlElmdscr_distanceAtPoint")] unsafe public static extern uint mdlElmdscr_distanceAtPoint(out double distance, out DPoint3d position, out DPoint3d tangent, long edP, ref DPoint3d inputPoint, double inputTolerance); unsafe public static bool GetDistanceAtPoint(ref double distance, ref DPoint3d tangent,Element curveEle, DPoint3d point) { DPoint3d dpoint3d = new DPoint3d(); dpoint3d.X = point.X; dpoint3d.Y = point.Y; dpoint3d.Z = point.Z; double num; DPoint3d dpoint; DPoint3d x; fixed (byte* eleHandle = &curveEle.ElementHandle[0]) { ManagedElementHandle* nativeEleHandle = (ManagedElementHandle*)eleHandle; if (0 == nativeEleHandle->m_descr) { if (0 == nativeEleHandle->m_elRef) { return false; } mdlElmdscr_distanceAtPoint(out num, out dpoint, out x, nativeEleHandle->m_descr,ref dpoint3d, 1000.0) ; distance = num; tangent.X = x.X; tangent.Y = x.Y + 8; tangent.Z = x.Z + 16; return true; } return false; } }
测试的时候失败,我想问下在c#中如果调用比如 函数mdlElmdscr_distanceAtPoint,其中的参数有的带有指针的 我是不是必须要这样声明呢如unsafe public static extern uint mdlElmdscr_distanceAtPoint(out double * distance, out DPoint3d* position, out DPoint3d* tangent, long edP, ref DPoint3d* inputPoint, double inputTolerance);
nativeEleHandle->m_descr的值为0时,您看一下我那篇文章里边是怎么获取这个值的
Answer Verified By: Duo Duo
哦哦 是的,修改了
老师,您说的那篇文章怎么找到?
我推测郭老师所说的文章可能是:
或者是: