static Standard_Boolean IsIntersect(const Handle(Adaptor3d_HCurve)& theC,
const gp_Ax1& theAxe)
{
- const Handle(Geom_Line) aL = new Geom_Line(theAxe);
+ const gp_Lin anAxis(theAxe);
+ //Quick test for circle
+ if (theC->GetType() == GeomAbs_Circle)
+ {
+ gp_Circ aCirc = theC->Circle();
+ const gp_Pnt& aCentr = aCirc.Location();
+ Standard_Real anR2 = aCirc.Radius();
+ anR2 -= Precision::Confusion();
+ anR2 *= anR2;
+ if (anAxis.SquareDistance(aCentr) > anR2)
+ {
+ return Standard_False;
+ }
+ }
+ const Handle(Geom_Line) aL = new Geom_Line(anAxis);
const GeomAdaptor_Curve aLin(aL);
const Standard_Real aParTol = theC->Resolution(Precision::Confusion());
const Standard_Real aParF = theC->FirstParameter() + aParTol,
--- /dev/null
+puts "========"
+puts "0031460: Modeling Algorithms - Regression: Revolution not done."
+puts "========"
+puts ""
+
+circle cir 3 2.9999999999989 0 0 0 -1 -1 0 0 3
+trim cir cir 4.71238898038469 6.28318530717959
+mkedge e cir
+
+## sector
+revol r10 e 0 0 0 1 0 0 10 1
+
+if { [isdraw r10] == 1 } {
+ if { [regexp "valid" [checkshape r10]] && [regexp "OK" [bopcheck r10 4]]} {
+ puts "OK: valid shape is created"
+ } else {
+ puts "Error: algorithm created wrong shape"
+ }
+} else {
+ puts "Error: algorithm did not create shape"
+}
+
+## full revol
+revol r360 e 0 0 0 1 0 0 360 1
+
+if { [isdraw r360] == 1 } {
+ if { [regexp "valid" [checkshape r360]] && [regexp "OK" [bopcheck r360 4]]} {
+ puts "OK: valid shape is created"
+ } else {
+ puts "Error: algorithm created wrong shape"
+ }
+} else {
+ puts "Error: algorithm did not create shape"
+}