Exploring Heekscad extrude function using code::blocks debug

Ok….
Downloaded and compiled and fresh copy of heekscad.  Time to get that morning cup of coffee.

Last time I did something similar to this I hunted down the extrude icon which is stored as “extrude.png” .    Need to search on “extrude” and eventually choose an appropriate breakpoint for the c::b debugger.

src/HeeksFrame.cpp|742|if(!wxGetApp().CheckForNOrMore(wxGetApp().m_marked_list->list(), 1, SketchType, _(“Pick one or more sketches, to create extruded body from\n( hold down Ctrl key to select more than one solid )”), _(“Extrude”)))return;|
src/HeeksFrame.cpp|1331|AddMenuItem(solids_menu, _(“Extrude a sketch”), ToolImage(_T(“extrude”)), OnExtrudeButton);|
src/HeeksFrame.cpp|1424|AddToolBarTool(m_solidBar, _T(“Extrude”), ToolImage(_T(“extrude”)), _(“Extrude a wire or face”), OnExtrudeButton);|

Alrighty…. It looks like the magic term is OnExtrudeButton

src/HeeksFrame.cpp|740|static void OnExtrudeButton( wxCommandEvent& event )|
src/HeeksFrame.cpp|1332|AddMenuItem(solids_menu, _(“Extrude a sketch”), ToolImage(_T(“extrude”)), OnExtrudeButton);|
src/HeeksFrame.cpp|1425|AddToolBarTool(m_solidBar, _T(“Extrude”), ToolImage(_T(“extrude”)), _(“Extrude a wire or face”), OnExtrudeButton);|

Sooo.. I guess we need to set a breakpoint in here to follow along.

static void OnExtrudeButton( wxCommandEvent& event )
{
if(!wxGetApp().CheckForNOrMore(wxGetApp().m_marked_list->list(), 1, SketchType, _(“Pick one or more sketches, to create extruded body from\n( hold down Ctrl key to select more than one solid )”), _(“Extrude”)))return;
PickCreateExtrusion();
}

A couple of days ago I tried to extrude a circle it didn’t work. I was able to extrude a rectangle…. Lets try a circle first.

If I draw a circle, select it, and click on the extrude I get this message.

Pick one or more sketches, to create extruded body from
( hold down Ctrl key to select more than one solid )

So…. the break point was not stripped out…
Lets try… Selecting two intersecting surfaces and see what happens.
Same message… Hmmm…
Lets throw a rectangle into the mix to see what happens.
Ok…. the rectangle is extruded and nothing happens to the circles…. I suppose we should just mentally file that for now…

{
if(!wxGetApp().CheckForNOrMore(wxGetApp().m_marked_list->list(), 1, SketchType, _(“Pick one or more sketches, to create extruded body from\n( hold down Ctrl key to select more than one solid )”), _(“Extrude”)))return;
PickCreateExtrusion();
}

Well… Ok then PickCreateExtrusion is the path I want to do down but it seems like there is a whole bunch of stuff going on just prior to that, that I should probably understand.  Yikess… is there are bunch of stuff going on here… I’ve been stepping deep into the code, single stepping and exploring.  Eventually I get bored an choose continue. It seems off and on I  get this SIGPIPE broken pipe message from the IDE… I’m not sure is this is a heeks cad,  code::blocks, Linux, or I’m doing something really stupid issue at this point…  Googling seems to get some very non-helpful answers…..  So… for the moment .. Although this sort of explains it.
Well then again this explains it even better http://en.wikipedia.org/wiki/SIGPIPE
And this kind provides some more enligthenment:http://en.wikipedia.org/wiki/Pipeline_(Unix)
Ok.. Then… It seems there might be some timing out issues within the OS… Seems to make sense, since when I surfing and came back to single step through the debugger, I got the broken pipe….
So.. the moral to the story for the moment is to start the debugger after I get the cut of coffee… not before;)..
Heekscad seems to be making heavy use of lists from the standard template library STL.    I’m a little fuzzy on this STL stuff, but I seem to recall it being discussed in the Paul Kunz C++ lecture series… Lets see I believe I had the lecture series bookmark in my favorites…  I’m going to need to over sections 15 and 16 again….  Darn it…. This sight still doesn’t work in linux…. Time publish and see if I can go over to the wife’s windows machine…..
#$% Of course the wife has a brand new computer and doesn’t have the necessary plugin’s installed…..Let me see… I seem to recall there is another version of the lecture with less issues.. back to my notes.  (You’d think I’d have a search feature on my metalshaperman…. who designed this crappy website… )
Oh… this brings back some memories..

[Edit].
Setting a break point on this line for where things get interesting:

HeeksObj* CreateExtrusion(std::list<HeeksObj*> list, double height)

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *