← Back to team overview

kicad-developers team mailing list archive

Re: update on STEP visualization

 

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 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.

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
>
>


Follow ups

References