private static extern int findDiskCone(IntPtr context, uint index_1, uint index_2, uint index_3, ref _FS_FEATURE_RESULT result);
private static extern int findThinRingTorus(IntPtr context, uint index_1, uint index_2, uint index_3, ref _FS_FEATURE_RESULT result);
private static extern int findStripPlane(IntPtr context, uint index_1, uint index_2, ref _FS_FEATURE_RESULT result);
private static extern int findRodCylinder(IntPtr context, uint index_1, uint index_2, ref _FS_FEATURE_RESULT result);
private static extern int findSurface(IntPtr context, FS_FEATURE_TYPE type, uint start_index, ref _FS_FEATURE_RESULT result);
public FS_FEATURE_RESULT?RunFindThinRingTorus(uint index_1, uint index_2, uint index_3) { _FS_FEATURE_RESULT _tmp = new _FS_FEATURE_RESULT(); return((findThinRingTorus(context, index_1, index_2, index_3, ref _tmp) == 0) ? _GetResult(_tmp) : null); }
public FS_FEATURE_RESULT?RunFindRodCylinder(uint index_1, uint index_2) { _FS_FEATURE_RESULT _tmp = new _FS_FEATURE_RESULT(); return((findRodCylinder(context, index_1, index_2, ref _tmp) == 0) ? _GetResult(_tmp) : null); }
public FS_FEATURE_RESULT?RunFindSurface(FS_FEATURE_TYPE type, uint start_index) { _FS_FEATURE_RESULT _tmp = new _FS_FEATURE_RESULT(); return((findSurface(context, type, start_index, ref _tmp) == 0) ? _GetResult(_tmp) : null); }
private FS_FEATURE_RESULT?_GetResult(_FS_FEATURE_RESULT result) { FS_FEATURE_TYPE type; FS_RESULT_PARAMS param = null; switch (result.type) { case FS_FEATURE_TYPE.FS_TYPE_PLANE: { type = FS_FEATURE_TYPE.FS_TYPE_PLANE; FS_PLANE_PARAMS p = new FS_PLANE_PARAMS( new Vector3(result.param1, result.param2, result.param3), new Vector3(result.param4, result.param5, result.param6), new Vector3(result.param7, result.param8, result.param9), new Vector3(result.param10, result.param11, result.param12) ); param = p; } break; case FS_FEATURE_TYPE.FS_TYPE_SPHERE: { type = FS_FEATURE_TYPE.FS_TYPE_SPHERE; FS_SPHERE_PARAMS p = new FS_SPHERE_PARAMS( new Vector3(result.param1, result.param2, result.param3), result.param4 ); param = p; } break; case FS_FEATURE_TYPE.FS_TYPE_CYLINDER: { type = FS_FEATURE_TYPE.FS_TYPE_CYLINDER; FS_CYLINDER_PARAMS p = new FS_CYLINDER_PARAMS( new Vector3(result.param1, result.param2, result.param3), new Vector3(result.param4, result.param5, result.param6), result.param7 ); param = p; } break; case FS_FEATURE_TYPE.FS_TYPE_CONE: { if (result.param7 == result.param8) { type = FS_FEATURE_TYPE.FS_TYPE_CYLINDER; FS_CYLINDER_PARAMS p = new FS_CYLINDER_PARAMS( new Vector3(result.param1, result.param2, result.param3), new Vector3(result.param4, result.param5, result.param6), result.param7 ); param = p; } else { type = FS_FEATURE_TYPE.FS_TYPE_CONE; FS_CONE_PARAMS p = new FS_CONE_PARAMS( new Vector3(result.param1, result.param2, result.param3), new Vector3(result.param4, result.param5, result.param6), result.param7, result.param8 ); param = p; } } break; case FS_FEATURE_TYPE.FS_TYPE_TORUS: { if (result.param7 == 0.0f) { type = FS_FEATURE_TYPE.FS_TYPE_SPHERE; FS_SPHERE_PARAMS p = new FS_SPHERE_PARAMS( new Vector3(result.param1, result.param2, result.param3), result.param8 ); param = p; } else if (result.param7 == float.MaxValue) { type = FS_FEATURE_TYPE.FS_TYPE_CYLINDER; FS_CYLINDER_PARAMS p = new FS_CYLINDER_PARAMS( new Vector3(result.param1, result.param2, result.param3), new Vector3(result.param4, result.param5, result.param6), result.param8 ); param = p; } else { type = FS_FEATURE_TYPE.FS_TYPE_TORUS; FS_TORUS_PARAMS p = new FS_TORUS_PARAMS( new Vector3(result.param1, result.param2, result.param3), new Vector3(result.param4, result.param5, result.param6), result.param7, result.param8 ); param = p; } } break; default: return(null); } FS_FEATURE_RESULT ret = new FS_FEATURE_RESULT(); ret.type = type; ret.rms = result.rms; ret.param = param; return(ret); }