//File: CadGeometryExtens.idl //CAD Services V1.2 #ifndef CADGEOMETRYEXTENS_DEFINED #define CADGEOMETRYEXTENS_DEFINED #include "CadGeometry.idl" #include "CadFoundation.idl" #include "CadUtility.idl" #pragma prefix "omg.org" module CadGeometryExtens{ module CadSurface{ interface BoundedSurface; //forward reference enum TransitionCode{DISCONTINUOUS, CONTINUOUS, CONT_SAME_GRAD, CONT_SAME_GRAD_SAME_CURVATURE}; struct SurfacePatchStruct{ BoundedSurface parent_surface; TransitionCode u_transition; TransitionCode v_transition; boolean u_sense; boolean v_sense; }; interface BoundedSurface : CadGeometry::Surface { SurfacePatchStruct bsurface_info() raises (CadUtility::CadError); }; struct ConicalSurfStruct{ CadUtility::TransformationStruct location; double radius; double semi_angle; }; interface ConicalSurf : CadGeometry::Surface{ ConicalSurfStruct cs_info() raises (CadUtility::CadError); }; struct CylinderStruct{ CadUtility::TransformationStruct location; double radius; }; interface Cylinder: CadGeometry::Surface { CylinderStruct cylinder_info() raises (CadUtility::CadError); }; struct HyperbolaStruct{ CadUtility::TransformationStruct location; double semi_axis; double semi_imag_axis; }; interface NurbsSurface : BoundedSurface{ CadUtility::NurbsSurfaceStruct nurbs_info() raises (CadUtility::CadError); }; interface OffsetSurface : CadGeometry::Surface { CadGeometry::Surface basis_surface() raises (CadUtility::CadError); double distance() raises (CadUtility::CadError); boolean self_intersect() raises (CadUtility::CadError); }; interface SurfaceRev : CadGeometry::Surface { CadGeometry::Curve swept_curve() raises (CadUtility::CadError); CadUtility::RayStruct axis_line() raises (CadUtility::CadError); }; struct SphereStruct{ double radius; CadUtility::TransformationStruct location; }; interface Sphere: CadGeometry:: Surface{ SphereStruct sphere_info() raises (CadUtility::CadError); }; struct ToroidStruct{ CadUtility::TransformationStruct location; double major_radius; double minor_radius; }; interface Toroid : CadGeometry::Surface{ ToroidStruct toroid_info() raises (CadUtility::CadError); }; interface Plane : CadGeometry::Surface{ CadUtility::TransformationStruct location() raises (CadUtility::CadError); }; interface SurfLinExtrusion : CadGeometry:: Surface{ CadGeometry::Curve swept_curve() raises (CadUtility::CadError); CadUtility::VectorStruct extrusion_axis() raises (CadUtility::CadError); }; }; module CadCurve{ struct CircleStruct{ CadUtility::TransformationStruct location; double radius; }; interface Circle : CadGeometry::Curve{ CircleStruct circle_info() raises (CadUtility::CadError); }; struct CompositeCurveStruct{ long count; CadGeometry::CurveSeq segments; CadUtility::BooleanSeq senses; }; interface CompositeCurve: CadGeometry::Curve{ CompositeCurveStruct comp_curve_info() raises (CadUtility::CadError); }; struct ParabolaStruct{ CadUtility::TransformationStruct location; double focal_distance; }; interface Parabola : CadGeometry::Curve { ParabolaStruct parabola_info() raises (CadUtility::CadError); }; interface Hyperbola : CadGeometry::Curve { CadGeometryExtens::CadSurface::HyperbolaStruct hyperbola_info() raises (CadUtility::CadError); }; struct LineStruct{ CadUtility::PointStruct the_point; CadUtility::VectorStruct direction; }; interface Line : CadGeometry::Curve { LineStruct line_info() raises (CadUtility::CadError); }; struct OffsetCurveStruct{ double distance; CadUtility::VectorStruct ref_direction; boolean self_intersect; }; interface OffsetCurve : CadGeometry::Curve{ OffsetCurveStruct offset_info() raises (CadUtility::CadError); }; struct EllipseStruct{ CadUtility::TransformationStruct location; double semi_axis_1; double semi_axis_2; }; interface Ellipse : CadGeometry::Curve { EllipseStruct ellipse_info() raises (CadUtility::CadError); }; struct TrimmedCurveStruct{ CadUtility::PointStruct trim_1; CadUtility::PointStruct trim_2; boolean sense_agreement; }; interface TrimmedCurve : CadGeometry::Curve{ TrimmedCurveStruct t_curve() raises (CadUtility::CadError); }; struct SurfaceCurveStruct{ CadGeometry::Curve curve_3d; long basis_count; CadGeometry::SurfaceSeq basis_surfaces; }; }; }; #endif