//
Standard_Real tg1, tg2, aDA1A2, aTol2;
gp_Pnt aPApex1, aPApex2;
+
+ Standard_Real TOL_APEX_CONF = 1.e-10;
+
//
tg1=Tan(Con1.SemiAngle());
tg2=Tan(Con2.SemiAngle());
Standard_Real d=gp_Vec(D).Dot(gp_Vec(P,Con2.Apex()));
if(Abs(tg1-tg2)>myEPSILON_ANGLE_CONE) {
+ if (fabs(d) < TOL_APEX_CONF) {
+ typeres = IntAna_Point;
+ nbint = 1;
+ pt1 = P;
+ return;
+ }
x=(d*tg2)/(tg1+tg2);
pt1.SetCoord( P.X() + x*D.X()
,P.Y() + x*D.Y()
typeres=IntAna_Circle;
}
else {
- if (fabs(d)<1.e-10) {
+ if (fabs(d) < TOL_APEX_CONF) {
typeres=IntAna_Same;
}
else {
if (aRD2>(aR2+Tol)) {
iRet=0;
typeres=IntAna_Empty; //nothing
- //modified by NIZNHY-PKV Fri Mar 23 08:12:23 2012f
return;
- //modified by NIZNHY-PKV Fri Mar 23 08:12:29 2012t
}
//
iRet=1; //touch case => 1 line
--- /dev/null
+puts "========"
+puts "CR23644"
+puts "========"
+
+##########################################
+## Intersection between coaxial cones produces exception
+##########################################
+
+pcone cn1 10 0 20
+pcone cn2 20 0 20
+explode cn1 f
+explode cn2 f
+copy cn1_1 f1
+copy cn2_1 f2
+
+if [catch {bopcurves f1 f2} BOPLog] {
+ if { [regexp "Tolerance Reached=0\n has no 3d curve" ${BOPLog}] != 1 } {
+ puts "CR23644: Error"
+ }
+}