← Back to team overview

kicad-developers team mailing list archive

Re: update on STEP visualization

 

On 8/16/2016 3:07 AM, Simon Wells wrote:
> Hey Bernhard, was that before cirilo changed all the code at waynes
> request to use wxwidgets instead of fopen and friends. As the problem
> i see at the moment with how the plugins have been done, for user
> based plugins either kicad will always have to be in the same place so
> that the plugins can access the libs included with kicad or every
> plugin will have to be distributed with wxwidgets which seems a bit
> excessive.

I would have been OK with C++ istream and ostream.  What I didn't want
to do, was limit the input and output sources to a file.  The only other
thing that may pull in wxWidgets is wxString which is used pretty much
everywhere in our low level objects.  If the pluging touches these
objects, then I don't know how your going to get rid of wxWidgets
without replace wxString in our low level object.

> 
> I ran into this issue when building the oce plugin in a slightly
> different way that it is building its own scenegraph stuff currently
> due to the lack of headers being distributed with kicad. (This could
> be fixed by making the scenegraph dylib as a framework including the
> headers) but currently there would be some override work required in
> cmake to not copy in the new scenegraph.
> 
> The plugin also depends on wxwidgets which isn't too bad at the moment
> as the plugin would need to be bundled in the .app anyways but still a
> bit of an annoyance in the long term as it does restrict what can be
> done.
> 
> I was discussing this (well more ranting and not making much sense)
> with cirilo on irc earlier. And way trying to get the point across
> that if we want to keep using wxwidgets to do all the string support
> and richio do all the fileIO (richio really needs to be profiled as
> the quick look i have had at it i am not sure it is efficient at all
> based on doing per character io) then kicad should be handling most of
> that and just converting it into a standard string to hand off to the
> plugins so that plugins aren't required to be linked with anything
> outside of their purpose. In this example the plugin would be linked
> to OCE but not wxwidgets and preferably not to the scenegraph either.

If you want to profile richio and can improve our parsing speed, I'm all
for that.

> 
> Below is the current dep list for the oce plugin file
> 
> kicad-app/step/build/kicad/kicad.app/Contents/Frameworks/libkicad_3dsg.2.0.0.dylib
> (compatibility version 2.0.0, current version 0.0.0)
> 
> /usr/local/opt/oce/lib/libTKBinXCAF.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKFeat.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKMeshVS.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKSTL.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKVRML.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKXCAFSchema.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKXDEIGES.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKXDESTEP.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKXmlXCAF.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
> (compatibility version 1.0.0, current version 275.0.0)
> 
> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
> (compatibility version 2.0.0, current version 157.0.0)
> 
> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
> (compatibility version 1.0.0, current version 22.0.0)
> 
> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
> (compatibility version 1.0.0, current version 492.0.0)
> 
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
> version 1226.10.1)
> 
> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
> (compatibility version 1.0.0, current version 1.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_osx_cocoau_gl-3.0.dylib (compatibility
> version 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_osx_cocoau_aui-3.0.dylib (compatibility
> version 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_osx_cocoau_adv-3.0.dylib (compatibility
> version 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_osx_cocoau_html-3.0.dylib
> (compatibility version 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_osx_cocoau_core-3.0.dylib
> (compatibility version 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_baseu_net-3.0.dylib (compatibility
> version 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_baseu-3.0.dylib (compatibility version
> 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_baseu_xml-3.0.dylib (compatibility
> version 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/wxmac/lib/libwx_osx_cocoau_stc-3.0.dylib (compatibility
> version 3.0.0, current version 3.0.0)
> 
> /usr/local/opt/oce/lib/libTKBin.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKBinL.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKStdSchema.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKPCAF.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKStdLSchema.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKPLCAF.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKShapeSchema.10.dylib (compatibility
> version 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKPShape.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libPTKernel.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKIGES.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKOffset.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKFillet.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKBool.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKSTEP.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKSTEP209.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKSTEPAttr.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKSTEPBase.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKXSBase.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKXCAF.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKXml.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKCAF.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKBO.10.dylib (compatibility version 10.0.0,
> current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKPrim.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKV3d.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKHLR.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKMesh.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKService.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/freeimage/lib/libfreeimage.dylib (compatibility version
> 3.0.0, current version 3.17.0)
> 
> /usr/local/opt/oce/lib/libTKShHealing.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKTopAlgo.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKGeomAlgo.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKBRep.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKGeomBase.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKG3d.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKG2d.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/freetype/lib/libfreetype.6.dylib (compatibility version
> 19.0.0, current version 19.5.0)
> 
> /usr/local/opt/oce/lib/libTKXmlL.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKLCAF.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKCDF.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/oce/lib/libTKMath.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/tbb/lib/libtbb.dylib (compatibility version 0.0.0,
> current version 0.0.0)
> 
> /usr/local/opt/oce/lib/libTKernel.10.dylib (compatibility version
> 10.0.0, current version 10.0.0)
> 
> /usr/local/opt/tbb/lib/libtbbmalloc.dylib (compatibility version
> 0.0.0, current version 0.0.0)
> 
> /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
> 
> 
> On Tue, Aug 16, 2016 at 6:40 PM, Bernhard Stegmaier
> <stegmaier@xxxxxxxxxxxxx> wrote:
>> Both MacPorts and homebrew have a port/formula for oce 0.17.2.
>> According to release notes should also have the fixes which are mentioned
>> in https://github.com/cbernardo/kicad_oce_3D/issues/1
>>
>> I just checked MacPorts and it installs without problems.
>>
>>
>> Regards,
>> Bernhard
>>
>> On 16 Aug 2016, at 04:32, Simon Wells <swel024@xxxxxxxxx> wrote:
>>
>> i am currently looking into it... I have also got spice working on my
>> build script, which requires a few extra brew deps and pulling it from
>> git/building, When i have the oce plugin stuff done i will send you
>> the resultant script
>>
>> On Tue, Aug 16, 2016 at 1:22 PM, Adam Wolf
>> <adamwolf@xxxxxxxxxxxxxxxxxxxx> wrote:
>>
>> I have a bit of a long list of KiCad OS X stuff to do. I am not sure how
>> soon I can tackle this. If Simon or another person makes some headway on
>> this and we need it to be tested on the OS X nightlies system, I can do
>> that.
>>
>> I am really impressed with this work and I think people will like it--do not
>> take this as a criticism of the work!
>>
>> Adam Wolf
>>
>> On Mon, Aug 15, 2016 at 7:05 PM, Simon Wells <swel024@xxxxxxxxx> wrote:
>>
>>
>> Does your/the plugin handler just search for plugins in system dirs or
>> does it also look in user-based plugin directories?
>>
>> On Tue, Aug 16, 2016 at 11:45 AM, Cirilo Bernardo
>> <cirilo.bernardo@xxxxxxxxx> wrote:
>>
>> Hi Wayne,
>>
>> There are 2 parts to this:
>>
>> 1. Have a suitable OCE build on Windows and OSX that we can put the
>> 3D OCE plugin into the main branch. This plugin will always be a
>> conditional compile of course since there is no sense in forcing all
>> users to have OCE if they don't need it. The reason for putting the
>> 3D OCE plugin into the main branch is so that it doesn't remain just a
>> little-known third party add-on. From the installer point of view, we
>> can
>> provide general users with a second installer which would install OCE
>> and the plugin so anyone who needs it can simply add it on.
>>
>> 2. STEP export. I imagine a large number of professional users will
>> require STEP export, so we need it at some stage in the future.
>> I imagine it would only take me a few days to add code to pcbnew
>> to provide an Export function. The reason I haven't done this is that
>> we cannot do this in a modular fashion at the moment. If someone
>> wants STEP export then they will have to recompile KiCad with that
>> option. On our end we would have to provide 2 KiCad installers: one with
>> OCE and the STEP export and one without. If the export tool can be
>> kept separate, as in a dynamically loaded plugin, then users can add
>> STEP export when they need it via a much smaller installer.
>>
>> There is one compromise I can think of which would allow us to
>> add STEP export in the short term. I can add code to search for
>> the STEP conversion tool when pcbnew starts; if it is found then
>> a menu item is added and if the tool isn't found then no menu item
>> is created. This would make it possible to install OCE and the
>> export tool using a second installer without installing a specially
>> compiled version of KiCad. In this situation the export tool can also
>> be moved into the KiCad main branch and can be distributed in
>> the same installer as the 3D OCE plugin. That way anyone who
>> requires MCAD can simply download and run this installer. For
>> people who build from source, all these tools will be available
>> once they install OCE and compile kicad with a flag to build
>> the components which depend on OCE.
>>
>> - Cirilo
>>
>> On Tue, Aug 16, 2016 at 3:52 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx>
>> wrote:
>>
>>
>> Cirilo,
>>
>> I'm not sure what you are asking.  Ideally, any conversion tool such as
>> STEP would be part of Pcbnew where a simple export->step menu entry
>> would be available.  Users generally prefer this to running and
>> external
>> tool.  What is the end goal of this?
>>
>> Cheers,
>>
>> Wayne
>>
>> On 8/14/2016 11:45 PM, Cirilo Bernardo wrote:
>>
>> Hi Folks,
>>
>> Thanks mostly to nickoe we have been able to build the
>> OCE-based 3D plugin for visualization of STEP (and IGES) files on
>> Windows. I believe that regardless of the availability of some form
>> of OCE on Windows, it is best if we distribute a known good version
>> of OCE which has been built with gcc.
>>
>> Back in May I also received some tips on building the plugin for
>> OSX: https://github.com/cbernardo/kicad_oce_3D/issues/1
>>
>> However I have been advised that, as in the case of Windows, it
>> is probably best if we provide our own OCE as part of the
>> installer.
>>
>> There is still some cleaning up to do with regards to getting a
>> Windows build but I believe Nick has sorted out all the biggest
>> problems.
>>
>> We still need a volunteer to do some work to get an OSX build
>> of OCE and the 3D plugin, and from there I can put the 3D plugin
>> *and* a kicad_pcb to STEP converter into KiCad. (Any
>> volunteers?)
>>
>> Currently the 3D plugin can be found here:
>> https://github.com/cbernardo/kicad_oce_3D
>>
>> The kicad_pcb to STEP converter is here:
>> https://github.com/cbernardo/kicad2mcad
>>
>> The PCB to STEP converter is currently a stand-alone tool
>> since integration as a plugin to KiCad requires the implementation
>> of a PCB API and I just haven't got time to work on that at the
>> moment.
>>
>> - Cirilo
>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
> 



References