Overview Schemas Index

AIC_GEOMETRICALLY_BOUNDED_SURFACE (jsdai.SAic_geometrically_bounded_surface)


FUNCTION gbsf_check_curve
          (cv : representation_item) : BOOLEAN;

 IF  SIZEOF  ( [ 'aic_geometrically_bounded_surface.bounded_curve' , 'aic_geometrically_bounded_surface.conic' , 'aic_geometrically_bounded_surface.curve_replica' , 'aic_geometrically_bounded_surface.line' , 'aic_geometrically_bounded_surface.offset_curve_3d' ] * TYPEOF  ( cv ) ) > 1 THEN  RETURN  ( FALSE  ) ; END_IF  ; IF  SIZEOF  ( [ 'aic_geometrically_bounded_surface.circle' , 'aic_geometrically_bounded_surface.ellipse' , 'aic_geometrically_bounded_surface.trimmed_curve' ] * TYPEOF  ( cv ) ) = 1 THEN  RETURN  ( TRUE  ) ; ELSE  IF  ( ( 'aic_geometrically_bounded_surface.b_spline_curve' IN  TYPEOF  ( cv ) ) AND  ( cv \ b_spline_curve . self_intersect = FALSE  ) OR  ( cv \ b_spline_curve . self_intersect = UNKNOWN  ) ) THEN  RETURN  ( TRUE  ) ; ELSE  IF  ( ( 'aic_geometrically_bounded_surface.composite_curve' IN  TYPEOF  ( cv ) ) AND  ( cv \ composite_curve . self_intersect = FALSE  ) OR  ( cv \ composite_curve . self_intersect = UNKNOWN  ) ) THEN  RETURN  ( SIZEOF  ( QUERY ( seg <* cv \ composite_curve . segments | NOT  ( gbsf_check_curve ( seg . parent_curve ) ) ) ) = 0 ) ; ELSE  IF  'aic_geometrically_bounded_surface.curve_replica' IN  TYPEOF  ( cv ) THEN  RETURN  ( gbsf_check_curve ( cv \ curve_replica . parent_curve ) ) ; ELSE  IF  ( ( 'aic_geometrically_bounded_surface.offset_curve_3d' IN  TYPEOF  ( cv ) ) AND  ( ( cv \ offset_curve_3d . self_intersect = FALSE  ) OR ( cv \ offset_curve_3d . self_intersect = UNKNOWN ) ) AND  ( NOT  ( 'aic_geometrically_bounded_surface.polyline' IN  TYPEOF  ( cv \ offset_curve_3d . basis_curve ) ) ) ) THEN  RETURN  ( gbsf_check_curve ( cv \ offset_curve_3d . basis_curve ) ) ; ELSE  IF  'aic_geometrically_bounded_surface.pcurve' IN  TYPEOF  ( cv ) THEN  RETURN  ( ( gbsf_check_curve ( cv \ pcurve . reference_to_curve \ representation . items [ 1 ] ) ) AND ( gbsf_check_surface ( cv \ pcurve . basis_surface ) ) ) ; ELSE  IF  'aic_geometrically_bounded_surface.polyline' IN  TYPEOF  ( cv ) THEN  IF  ( SIZEOF  ( cv \ polyline . points ) >= 3 ) THEN  RETURN  ( TRUE  ) ; END_IF  ; ELSE  IF  'aic_geometrically_bounded_surface.surface_curve' IN  TYPEOF  ( cv ) THEN  IF  gbsf_check_curve ( cv \ surface_curve . curve_3d ) THEN  REPEAT i := 1 TO SIZEOF ( cv \ surface_curve . associated_geometry ) ; IF  'aic_geometrically_bounded_surface.surface' IN  TYPEOF  ( cv \ surface_curve . associated_geometry [ i ] ) THEN  IF  NOT  gbsf_check_surface ( cv \ surface_curve . associated_geometry [ i ] ) THEN  RETURN  ( FALSE  ) ; END_IF  ; ELSE IF  'aic_geometrically_bounded_surface.pcurve' IN TYPEOF ( cv \ surface_curve . associated_geometry [ i ] ) THEN  IF NOT gbsf_check_curve ( cv \ surface_curve . associated_geometry [ i ] ) THEN RETURN  ( FALSE  ) ; END_IF  ; END_IF  ; END_IF  ; END_REPEAT ; RETURN  ( TRUE ) ; END_IF  ; END_IF  ; END_IF  ; END_IF  ; END_IF  ; END_IF  ; END_IF  ; END_IF  ; END_IF ; RETURN ( FALSE ) ; 

END_FUNCTION; -- gbsf_check_curve

public class FGbsf_check_curve
          public static Value run(SdaiContext _context, Value cv)