Sean, your tips were very helpful. On Thu, Oct 9, 2014 at 6:27 AM, Christopher Sean Morrison <brl...@mac.com> wrote: > > AHA... there's a major bug that invalidates the output right there on 2723 > and demonstrated in your output file. You can have empty fields, but putting > a space in the field is not the same as an empty field... (", , ," vs ",,,") > The IGES file format is very field-sensitive. > > We have automatic code formatters that automatically put spaces after commas > in the source code. The code was "modernized" (looks like in 2011, commit > 42149) to clean it up and spaces were inadvertently injected within many > string literals in that converter. This needs to be undone. > > Care to test if that fixes your case? Basically want to run "svn diff > -c42149 src/conv/iges" and identify all the string literals that had spaces > injected, and undo them. The trick we use elsewhere that allows the > beautifier to still work is to have a #define COMMA ',' and add them to the > print string with %c so it will cause a compiler error if ',' is ever changed > to ', '.
As you probably noticed, I meant 'the IGES file format'. And you're right. I changed back the string constants so that commas are no longer followed by spaces. Also, handling spaces the same way as commas and semicolons in write_freeform() is no more needed. Now, using g-iges and iges-g to convert models from *.g to *.igs and then back to *.g will result in valid BRL-CAD databases. Unfortunately, FreeCAD and gCAD3D still don't open the IGES file. I inspected the source code of FreeCAD and I found that the function responsible of opening IGES files is Part::ImportIgesParts()[1], which uses Open Cascade libraries and basically follows the procedure described in a tutorial on their website[2]. On that page it is also a list of all the entities that Open Cascade can translate into shapes and it turns out that entities which are frequently used by g-iges such as 322, 406, 168 or 150 are not supported (there actually exists support for identifying them[3][4][5][6] and, as I tested, Interface_CheckTool::CompleteCheckList()[7] successfully checks them against errors, but they can't be converted into TopoDS_Shape[8] objects, which FreeCAD processes). As to gCAD3D, I was unable to find the source code. There is an article on ubunuguide.net[9] which states that it is open-source, but only a development package is available[10], containing the source code of the toolbox and some plugins and all the header files, but not the code where input files are parsed. > The entire 5.3 specification is available online: > http://www.uspro.org/documents/IGES5-3_forDownload.pdf The link you provided doesn't work for me, but I found the document in many other places. I really don't know how come I didn't find it by myself, sorry. Even if the files generated by g-iges look conformable to the specification, I can't be sure whether they are actually correct or not because there doesn't seem to be many IGES viewers for Linux, thus further testing may be needed. Cheers! Stefan ------------------------------------------------------------------------------ Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer http://p.sf.net/sfu/Zoho _______________________________________________ BRL-CAD Developer mailing list brlcad-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-devel