View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0021994 | Community | OCCT:Data Exchange | public | 2010-09-03 09:10 | 2012-01-11 15:58 |
Reporter | Assigned To | ||||
Priority | normal | Severity | trivial | ||
Status | assigned | Resolution | open | ||
OS | All | ||||
Summary | 0021994: Incorrect reading of inconsistent IGES header | ||||
Description | This problem has been reported by OCCT user Cauchy Ding on Forum thread 19132: http://www.opencascade.org/org/forum/thread_19132 -------------- I find a strange iges file. I read it in other three CAD/CAE softwares, and find the model sizes are all about 270. But I read it in my software using OCC, the model size is about 6000. Yes, most of these problems are caused by different unit reading. But I find it's not in this case. I debug it and find a potential (maybe it's not a bug, :)) bug in void iges_param (Pstat,ligne,c_separ,c_fin,lonlin) , this function is in analiges.c file. void iges_param(Pstat,ligne,c_separ,c_fin,lonlin) int *Pstat; char c_separ,c_fin, *ligne; int lonlin; { int i,i0,j; char param[80]; char unpar; if (*Pstat == 0) reste = 0; if (*Pstat != 2) numcar = 0; if (*Pstat < 3) nbcarH = 0; else { numcar = nbcarH; if (numcar > lonlin) { iges_addparam(lonlin,ligne); nbcarH -= lonlin; /* ??? enregistrer ... ??? */ return; } else { iges_addparam(nbcarH,ligne); nbcarH = 0; /*******Start: I add a line here to try to fix the potential bug*************/ reste = 0; /*******End: I add a line here to try to fix the potential bug*************/ } } I attached a iges head file, you can copy these contents and replace head contents in your iges file. And compare it with your raw iges file. You will find the model will have two different sizes. PS: The system ID segment is a long string and crosses two lines. The occ treats this head file as scale = 2.0, unit=null. -------------- The reason of the problem is inconsistent IGES header: missing comma after string identifying preprocessor (between "INC." and "6H980406"). The comma is declared as field separator in the first field of the global section (and it is also default separator), and it must be used to separate fields. Lack of comma causes fields to be incorrectly enumerated, and the result is incorrect unit interpreted by OCCT IGES translator. It might be reasonable to improve OCCT IGES reader to be able to treat such cases more correctly (probably the correction suggested above will do the job). Attached is sample file with incorrect header (file bearing.iges from OCCT distribution with header replaced by the one submitted in the problem report) | ||||
Tags | No tags attached. | ||||
Test case number | |||||
Date Modified | Username | Field | Change |
---|---|---|---|
2011-08-02 11:12 | bugmaster | Category | OCCT:DTE => OCCT:Data Exchange |
2011-12-15 16:12 |
|
Project | Open CASCADE => Community |
2012-01-11 15:58 |
|
Note Added: 0019084 | |
2012-01-11 15:58 |
|
Assigned To | bugmaster => gka |
2012-01-11 15:58 |
|
Status | new => assigned |