/// <summary> /// スナップ位置を取得 /// MQPoint MQCommandPlugin::GetSnappedPos(MQScene scene, const MQPoint& p, SNAP_GRID_TYPE type) /// </summary> /// <param name="scene">シーン</param> /// <param name="p">ポイント</param> /// <param name="type">種類</param> /// <returns>スナップ位置</returns> public unsafe Point GetSnappedPos(Scene scene, Point p, SnapGridType type) { fixed(byte *sceneString = GetASCII("scene"), typeString = GetASCII("type"), posString = GetASCII("pos"), resultString = GetASCII("result")) { var pos = new[] { p.X, p.Y, p.Z, }; var result = new float[3]; fixed(float *posPtr = pos, resultPtr = result) { var array = new void *[] { sceneString, (void *)scene.Handle, typeString, &type, posString, posPtr, resultString, resultPtr, null, }; fixed(void **arrayPtr = array) SendMessage(Message.GetSnappedPos, (IntPtr)arrayPtr); return(new Point(result[0], result[1], result[2])); } } }
private static void DoSelectSpacingType(SnapGridType gridType) { s_DropDownSnapAxis.GridType = gridType; }
/// <summary> /// スナップ位置を取得 /// MQPoint MQCommandPlugin::GetSnappedPos(MQScene scene, const MQPoint& p, SNAP_GRID_TYPE type) /// </summary> /// <param name="scene">シーン</param> /// <param name="p">ポイント</param> /// <param name="type">種類</param> /// <returns>スナップ位置</returns> public unsafe Point GetSnappedPos(Scene scene, Point p, SnapGridType type) { fixed (byte* sceneString = GetASCII("scene"), typeString = GetASCII("type"), posString = GetASCII("pos"), resultString = GetASCII("result")) { var pos = new[] { p.X, p.Y, p.Z, }; var result = new float[3]; fixed (float* posPtr = pos, resultPtr = result) { var array = new void*[] { sceneString, (void*)scene.Handle, typeString, &type, posString, posPtr, resultString, resultPtr, null, }; fixed (void** arrayPtr = array) SendMessage(Message.GetSnappedPos, (IntPtr)arrayPtr); return new Point(result[0], result[1], result[2]); } } }