Introduction
I would like to announce for your enlightenment, edification, possible amusement, and probable befuddlement forIGES , a Modern Fortran library of utilities for reading and creating IGES CAD files for a selected subset of IGES CAD file entities described in the IGES 5.3 specification. The focus of forIGES is on geometric entities such as NURBS curves and surfaces. Therefore, the complete IGES specification is not supported. This release of forIGES should be considered a first beta release and potential users are requested to report any bugs they find and requests for additional support on the projects github site. The project README gives an overview of the project and lists the 38 entities currently supported. A more complete users guide in Markdown and PDF form can be found in the ./doc subdirectory.
Overview
The forIGES library code base consists of nine Fortran modules with utilities for reading the five sections of data found in standard ASCII IGES CAD files along with other utilities that will allow users to create IGES files from their own data. These nine modules comprise 16064 lines of code. A complete description of the function of routines in each module is given in the users guide. The code was tested using over 60 IGES files borrowed from the pyIGES project. These files were selected because they provided test data for a large number of the entiities supported by forIGES. However, not all entities supported by forIGES have been tested due to lack of data. Output files created by forIGES were verified by reading and displaying the results with FreeCad. Six tests programs that also serve as examples of how to do basic tasks with forIGES can be found in the ./test directory. A complete set of HTML documentation of the forIGES API can be generated using FORD.
Building forIGES
Currently forIGES is set up to build on Linux systems using recent versions of Intel, gfortran, and NVIDIA compilers. Attempts were made to use AMD AOCC flang but it failed to generate correct output files and is blacklisted for now. forIGES can be built using either my tried and true set of make files or FPM. Building with make will generate a shared object library (libforIGES.so) along with an archive (libforIGES.a). FPM appears to only generate an archive. However, due to the relatively small number of files that make up forIGES, Windows users should be able to create their own Visual Studio projects or use FPM. Also, if someone wishes to create some CMake files I wonāt object. That someone will not be me.
Requested User Feedback
- As I just stated I donāt do Windows but am willing to accept contributions from users to add Windows support to the project.
- If someone can provide some more IGES files that exercise some of the untested entities, I would be grateful.
- I would also be grateful if someone with access to the NAG compiler would try building forIGES with NAG and let me know the results
- Users with access to commercial CAD programs such as AutoCAD, Solidworks etc are requested to check if those systems will also read files created by forIGES
- Currently the workflow required to create an IGES file is very manual (mostly due to a strange circular āpointerā dependency in IGES files where Parameter Section data will reference entries in the Directory Entry section that then points back to a Parameter Section entity). Iām looking for ideas on how to improve that process.
- Finally I would like to hear about any user issues with the code, documentation and build systems. Iām always open to ideas on how to improve things.
Please post any comments, questions, etc you have about forIGES either here or as a github issue. I request bug reports and change request be only posted on the github site
Future Plans
My ultimate goal for this project is that it will support the translation of IGES non-NURBS entities into NURBS representations where possible and enable users to create their own NURBS specific CAD files. As shown in the References listed in the documentation, the techniques for doing this have been known for several decades now.
All for now,
RW