Пример #1
0
 private static extern int findDiskCone(IntPtr context, uint index_1, uint index_2, uint index_3, ref _FS_FEATURE_RESULT result);
Пример #2
0
 private static extern int findThinRingTorus(IntPtr context, uint index_1, uint index_2, uint index_3, ref _FS_FEATURE_RESULT result);
Пример #3
0
 private static extern int findStripPlane(IntPtr context, uint index_1, uint index_2, ref _FS_FEATURE_RESULT result);
Пример #4
0
 private static extern int findRodCylinder(IntPtr context, uint index_1, uint index_2, ref _FS_FEATURE_RESULT result);
Пример #5
0
 private static extern int findSurface(IntPtr context, FS_FEATURE_TYPE type, uint start_index, ref _FS_FEATURE_RESULT result);
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }