Code Monkey home page Code Monkey logo

libiges's Introduction

25 Nov 2017:

  • Added support for Entity Type 406 Form 15.

29 Sep 2016

  • Fixed an output reformatting bug which restricted integers in the Directory Entry to the range -9999999 .. +9999999. The correct upper limit is +99999999.

10 Oct 2015

  • Install targets have been created; in a Release build the libraries, headers, and idf2igs tool can be installed to a staging directory.
  • Headers have been reorganized; the DLL wrapper headers are now in include/api.
  • A static library target has been created; configure with -DSTATIC_IGES to build a static library.

2 Oct 2015

  • Finished basic DLL wrapper routines and conversion of all tools and test programs to use the DLL wrapper. The code now compiles with MSVC 2013 with no errors and no warnings and produces the expected results. While *NIX systems built with gcc may directly access the core IGES objects, users are encouraged to use only the DLL wrapper objects to ensure cross-platform portability of the code. DLL wrappers shall be implemented or extended as required by users. In the interest of cross-platform portability and code maintainability please resist the temptation to use the lower level objects.

29 Sep 2015

  • Boost: All Boost dependencies have been removed.
  • Notes: If the library is configured with -DUSE_SISL=ON, a number of test programs will fail until IGES_ENTITY_126::GetStartPoint() and IGES_ENTITY_126::GetEndPoint() have been implemented.

28 Sep 2015

  • CHANGE OF LICENSE: As sole author of libIGES I am changing the license from GPLv3+ to LGPLv2.1+ to offer greater freedom to the users of this library. Note that the SINTEF SISL library uses the GNU Affero GPL Version 3 and that its terms apply to libIGES if libIGES is compiled with SISL support.

  • Use of SISL: SISL has been removed from the base IGES objects to allow users to take advantage of the LGPLv2.1+ license of libIGES. The INSTALL instructions have been updated to show build configurations with and without SISL.

30 May 2015

  • The idf2igs tool now exports IGES assemblies which include the PCB and component models. If your MCAD supports the color attribute of IGES then your model will be displayed in glorious color.

29 May 2015

  • Added the "idf2igs" tool (work in progress) based on the IDFv3 framework from the KiCad project. This tool is based on the idf2vrml source and as such currently contains a lot of cruft. At the moment bare PCBs with arbitrary boundaries and cutouts can be generated. Overlapping drill holes are handled correctly so that IDF files from ECADs such as Eagle, which represent slots using multiple overlapping drills, can be modeled.

    Intentional limitations to keep in mind when creating test IDF files:

    a. ensure that no drill holes or cutouts are completely outside the main outline and that no drill holes are completely inside another drill hole or cutout. Unfortunately ECAD software does not typically enforce this constraint so it is possible to generate such bad geometry.

    b. ensure that no zero-thickness walls are created, for example a drill hole tangent to a board edge or two tangent drill holes.

    c. Ensure that cutouts and drill holes intersect the main outline at no more than 2 points; this is to guarantee that the board will not be split into two separate bodies.

    The code has been generated on a number of test shapes and on the IDF models of the following boards: (a) pic_programmer demo from KiCad (b) video demo from KiCad (c) Arduino Due

    I intend for this tool to be refined to provide all the following features: a. A complete board assembly model in IGES (currently only a single bare PCB model is generated) b. embedded IGES models of all IDF component extrusions c. Colored PCB and components e. sensible naming of the parts (board model, component models, component instances)

24 May 2015 Updates:

  • The code is now capable of creating bare PCB models
  • The "mergetest" test program can now create assemblies with Manifold Solid B-Rep Objects which means output from more MCAD systems (including Pro-E) are now supported.
  • In principle the code now has all features required to create a PCB assembly with a correct PCB model and component models as provided by various sources.

Next step: Verify PCB model generation by converting IDFv2 or IDFv3 files to an IGES assembly.

6 May 2015

Update: The code can now read a variety of IGES files and create assemblies. Some files such as various Molex connector models cannot be read due to unimplemented entities; such files will typically make use of manifold B-Rep entities. Support will eventually be added for these but at the moment the tools needed to create a solid model of the bare PCB have the highest priority.

The outline manipulation code (addition/subtraction of closed loops consisting of a circle or lines and/or arcs) is finished and appears to work. There may be some corner cases which have not been tested so this code is not guaranteed to be bug-free. See the output of the "olntest" test program to see the results of the boundary manipulation code. At the moment the code can generate the vertical sides of the PCB; the code to generate the top and bottom planes of the PCB are next on the agenda.

8 Feb 2015

This is a work in progress; the aim is to create an implementation of the IGESv6 specification which is suitable for use in the KiCad project to create a board model and assembly model.

libiges's People

Contributors

cbernardo avatar hrobeers avatar nickoe avatar szebos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libiges's Issues

Feature Request: Plane (Type 108) Support

Requesting the addition of entity and DLL support for planes (type 108 entity). The entity is relatively simple, so I will give it a shot and issue a pull request when ready for review and integration.

DLL Support for BREP Entities

DLL API support is missing for must of the entities needed to define a BREP solid in IGES (types 186, 502, 504, 508, 510, & 514). To avoid having to use the lower level entities directly, would it be possible to add DLL wrappers for each of these?

If nobody is available to support this request, I may be able to add them with a little guidance.

Random robot leg assembly does not read by "readtest"

The iges model from [1], does not save to the output file. It do seem to read some entities, but then readtest gets unhappy.

Tested against ce4cfe6.

<snip>
-----
[INFO] Entity(100) Parameter Data Record for entity at DE 375
    100,9.5,20.,-15.25,20.840990258,-15.25,20.752754683,-14.875;         375
-----
[INFO] Entity(126) Parameter Data Record for entity at DE 377
    126,2,2,1,0,1,0,0.,0.,0.,1.,1.,1.,1.,1.,1.,0.104480445,              377
    0.80952332,0.,0.223171681,0.797761404,0.,0.334047892,                377
    0.783095189,0.,0.,1.,0.,0.,1.;                                       377
-----
[INFO] Entity(126) Parameter Data Record for entity at DE 379
    126,3,3,1,0,1,0,0.,0.,0.,0.,0.000128387680502786,                    379
    0.000128387680502786,0.000128387680502786,0.000128387680502786,      379
    1.,1.,1.,1.,20.375,-15.25,8.747245317,20.375,-15.25,8.79004121,      379
    20.375,-15.245551071,8.833013604,20.375,-15.237266683,8.875,0.,      379
    0.000128387680502786,0.,0.,0.;                                       379
-----
/home/nickoe/libIGES/src/iges/iges_helpers.cpp:82:CheckNormal(): 
 + [INFO] bad vector (cannot be normalized)
/home/nickoe/libIGES/src/entities/entity126.cpp:641:ReadPD(): 
 + [INFO] bad normal
/home/nickoe/libIGES/src/iges/iges.cpp:1497:readPD(): 
 + [INFO] could not read parameter data for Entity[PD:189]
/home/nickoe/libIGES/src/iges/iges.cpp:478:Read(): 
 + [INFO] problems reading file PARAMETER section
 + filename: '/tmp/assieme leg.IGS'
Oops - too bad, better luck next time
 + [INFO] Entities culled: 0
 + [INFO] Entities remaining: 0
/home/nickoe/libIGES/src/iges/iges.cpp:528:Write(): 
 + [INFO ] no entities to save

[1] http://www.3dvia.com/models/010A6437091B2D3F/assieme-leg

MSVC can not link to boost correctly

According to the discussion in #10 about the boost issues during linking, it should be required to add the define BOOST_ALL_NO_LIB in the add_definitions macro under the MSVC check.

I have used that with MSVC and it works. This seems to be the last issue to make libiges build on the KiCad Jenkins server. I post this issue because I am not with my dev machine now, and noting that @cbernardo did not need to do so according to #10 (comment). Which I think is strange. The boost build I tested against is the one from the Jenkins, which is also built with b2.

http://stackoverflow.com/questions/4736877/how-to-link-boost-in-a-dependant-static-library

Micro USB socket from Molex can not be read

This is against ec73b47

I tried to fetch a model from the Molex home page. If that direct link does not work, you should be able to deduce the partnumber and serach for it.

http://www.molex.com/elqNow/elqRedir.htm?ref=http://www.molex.com/pdm_docs/igs/47346-0001_igs.zip

┌─[nickoe ~/libIGES/build]
└─ $ ./readtest ../parts/473460001.igs 
/home/nickoe/libIGES/src/entities/iges_entity.cpp:1005:ReadDE(): 
 + invalid Structure pointer (1); must be <= 0
/home/nickoe/libIGES/src/entities/entity314.cpp:262:ReadDE(): 
 + [INFO] failed to read Directory Entry
/home/nickoe/libIGES/src/iges/iges.cpp:1426:readDE(): 
 + [INFO] could not read Directory Entry
/home/nickoe/libIGES/src/iges/iges.cpp:459:Read(): 
 + [INFO] problems reading file DIRECTORY section
 + filename: '../parts/473460001.igs'
Oops - too bad, better luck next time
 + [INFO] Entities culled: 0
 + [INFO] Entities remaining: 0
/home/nickoe/libIGES/src/iges/iges.cpp:528:Write(): 
 + [INFO ] no entities to save

build on windows platform

I have problem in build on a Windows platform using cmake 3.5.2

$ cmake -G "Visual Studio 14 2015 Win64" ..
-- The C compiler identification is MSVC 19.0.24210.0
-- The CXX compiler identification is MSVC 19.0.24210.0
-- Check for working C compiler using: Visual Studio 14 2015 Win64
-- Check for working C compiler using: Visual Studio 14 2015 Win64 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015 Win64
-- Check for working CXX compiler using: Visual Studio 14 2015 Win64 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:118 (install):
  install Library TARGETS given no DESTINATION!

Testing libIGES

Thanks for developing this. It's going to be a VERY useful tool.
I'd love to test it out, but as a Kicad user (not developer), I'm not sure how to install it.
Can you provide some brief instructions on how to install and run this program? (I'm running Ubuntu 14.04).

Thanks again!

Tutorial [error] curve is already closed

Hello,
I'm working on exporting geometry data as a .igs file.
Though when I try to run the tutorial given in the directory, the code reports the following error once the third NURB-Curve shall be added to the compound...

.../cbernardo-libIGES-2a44fdc/src/entities/entity102.cpp:739:AddSegment():

  • [ERROR] curve is aready closed

The same error appears when I run my personal written code as I want to add a third NURB-Curve Segment.
I'm aware that there is a condition (entity102.cpp l.231) in the source code that prohibits two consecutive entities 116,132. This does not refer to the tutorial case.
Does anyone one might have an idea for the cause of this error?
I really appreciate your answers

Best Regards

C Locale changed and not restored

I haven't had time to fully investigate, but users of my program with a custom locale set report writing corrupted files after exporting IGES files. My program uses the C locale -- until libIGES changes it to something matching their system settings.

IMHO, libIGES should either not set the locale -- or it should restore the locale after it is done doing whatever it needs to set the locale for. At a minimum, the docs should make it very clear that libIGES may change the locale.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.