Updated IGESToBRep_BasicCurve and Surface to work with geometry as is not scaled yet.
Updated IGESControl_IGESBoundary to check existence of fields w/o number of iteration.
Scaling appends only after creating geometry, that is why we need to compare with no scaled value
const Standard_Integer number,
Handle(ShapeExtend_WireData)& Gsewd)
{
+ (void)number;
Gsewd = new ShapeExtend_WireData;//local translation (for mysewd)
Handle(ShapeExtend_WireData) Gsewd3d = new ShapeExtend_WireData;//local translation (for mysewd3d)
Handle(ShapeExtend_WireData) Gsewd2d = new ShapeExtend_WireData;//local translation (for mysewd2d)
}
}
- if (number > 1) {
- okCurve = okCurve && Connect (saw, mysewd, Gsewd, (len3d > 1) || (len2d > 1), maxtol,
- distmin, revsewd, revnextsewd);
+ if (!mysewd.IsNull())
+ {
+ okCurve = okCurve && Connect(saw, mysewd, Gsewd, (len3d > 1) || (len2d > 1), maxtol,
+ distmin, revsewd, revnextsewd);
+ }
+ else
+ {
+ mysewd = Gsewd;
+ }
+ if (!mysewd3d.IsNull())
+ {
okCurve3d = okCurve3d && Connect (saw3d, mysewd3d, Gsewd3d, len3d > 1, maxtol,
distmin, revsewd, revnextsewd);
+ }
+ else
+ {
+ mysewd3d = Gsewd3d;
+ }
+ if (!mysewd2d.IsNull())
+ {
okCurve2d = okCurve2d && Connect (saw2d, mysewd2d, Gsewd2d, len2d > 1, maxtol,
distmin, revsewd, revnextsewd);
}
- else {
- mysewd = Gsewd;
- mysewd3d = Gsewd3d;
+ else
+ {
mysewd2d = Gsewd2d;
}
return okCurve;
// modif du 15/10/97 : test moins severe
// beaucoup de points confondus a GetEpsGeom()*GetUnitFactor()
- if (!Ps.IsEqual(Pe,Precision::Confusion())) { //:l3 abv 11 Jan 99: GetEpsGeom()*GetUnitFactor()/10.)) {
+ if (!Ps.IsEqual(Pe,Precision::Confusion() / GetUnitFactor())) { //:l3 abv 11 Jan 99: GetEpsGeom()*GetUnitFactor()/10.)) {
gp_Lin line(Ps, gp_Dir(gp_Vec(Ps,Pe)));
Standard_Real t1 = ElCLib::Parameter(line, Ps);
Standard_Real t2 = ElCLib::Parameter(line, Pe);
start->EndPoint().Y());
}
- if (!beg.IsEqual(end,Precision::PConfusion())) { //:l3 abv 11 Jan 99: GetEpsCoeff())) {
+ if (!beg.IsEqual(end,Precision::PConfusion() / GetUnitFactor())) { //:l3 abv 11 Jan 99: GetEpsCoeff())) {
gp_Lin2d line2d(beg, gp_Dir2d(gp_Vec2d(beg,end)));
Standard_Real t1 = ElCLib::Parameter(line2d, beg);
Standard_Real t2 = ElCLib::Parameter(line2d, end);
// Direction Reading Error : Null IGESEntity
return res;
}
- if (radius < Precision::Confusion()) {
+ if (radius < (Precision::Confusion() / GetUnitFactor())) {
return res;
}
if (radius < 0) {
return res;
}
- if (radius < Precision::Confusion())
+ if (radius < (Precision::Confusion() / GetUnitFactor()))
radius = 0.;
gp_Pnt Pt = Point->Value();
// Direction Reading Error : Null IGESEntity
return res;
}
- if (radius < Precision::Confusion()){
+ if (radius < (Precision::Confusion() / GetUnitFactor())){
return res;
}
// Direction Reading Error : Null IGESEntity
return res;
}
- if (major < Precision::Confusion()||minor < Precision::Confusion()){
+ if (major < (Precision::Confusion() / GetUnitFactor()) || minor < (Precision::Confusion() / GetUnitFactor())){
return res;
}
--- /dev/null
+puts "==================================================="
+puts "0033326: Data Exchange, IGES Import - Ignoring unit value for validating geometry"
+puts "==================================================="
+puts ""
+
+pload DCAF
+
+Close D -silent
+
+ReadIges D [locate_data_file "bug33326.igs"]
+vclear
+vinit View1
+XDisplay -dispMode 1 D
+vfit
+vdump "$imagedir/${casename}_src.png"
+
+Close D