califax has quit [Remote host closed the connection]
califax has joined #openscad
J2346 has joined #openscad
snaked has quit [Quit: Leaving]
J23 has quit [Ping timeout: 260 seconds]
snaked has joined #openscad
J2346 has quit [Quit: Client closed]
J2346 has joined #openscad
GNUmoon has quit [Ping timeout: 255 seconds]
GNUmoon has joined #openscad
J2346 has quit [Quit: Client closed]
J2346 has joined #openscad
teepee has quit [Ping timeout: 255 seconds]
teepee has joined #openscad
qeed has quit [Quit: qeed]
aiyion has quit [Ping timeout: 255 seconds]
little_blossom has quit [Ping timeout: 252 seconds]
qeed has joined #openscad
aiyion has joined #openscad
teepee has quit [Quit: bye...]
teepee has joined #openscad
qeed has quit [Quit: qeed]
qeed has joined #openscad
hyperair has joined #openscad
little_blossom has joined #openscad
germ has quit [Ping timeout: 246 seconds]
germ_ has joined #openscad
abff has quit [Ping timeout: 264 seconds]
abff has joined #openscad
qeed_ has joined #openscad
qeed has quit [Ping timeout: 268 seconds]
guso78 has joined #openscad
<guso78>
JordanBrown[m], I cant find linear_extrude things in other files than LinearExtrudeNode.*, GeometryEvaluator.cc and NodeVisitor.h
<guso78>
my path_extrude worked with OpenCSG just out of the box, because the polygons were created in GeomtryEvaluator.cc.
<guso78>
i am looking for the place, which enables correct OpenCSG display of Offset3D specifically(and i could not find the hints in linear_extrude or path_extrude)
<peepsalot>
so it just calls out to GeometryEvaluator
<JordanBrown[m]>
Yeah, if you found the right pattern for path extrude, that's also the right place for pretty much anything else. You've got to generate triangles. I think that just means creating a GeometryEvaluator::visit(..., Offset3DNode).
<JordanBrown[m]>
Or, more likely, augmenting GeometryEvaluator::visit(..., OffsetNode).
guso7862 has joined #openscad
<JordanBrown[m]>
Side note: it seems wrong that LeafNodes use an inheritance pattern, where something calls LeafNode::createGeometry(), and operator nodes use a visitor pattern, where there are a bunch of GeometryEvaluator::visit(..., SomethingNode) methods. So far I don't like the visitor pattern.
<JordanBrown[m]>
But they should be the same pattern.
guso7862 has quit [Ping timeout: 260 seconds]
KimK has quit [Ping timeout: 252 seconds]
KimK has joined #openscad
snaked has joined #openscad
<guso78>
Jordan, actually dont unstanderstand all this stuff about visit. I was just templating the linear_extrude as path_extrude and it worked out of the box. So i cant understand, why offsetting would not work as it also just creates polygone.
<guso78>
JordanBrown[m], when using an offset() object as 2nd child to difference, its handles as nothing instead.
<guso78>
I believe that somewhere hidden in the code, offset is still considered as 2d thing and is disregarde for this reason as a valid object in a 3d operation. i just cant find out, there this happens.
<JordanBrown[m]>
What happens when you F6? For F6, difference will complain if you try to mix 2D and 3D.
<JordanBrown[m]>
But my guess is that you've got the C++ structure right, but the geometry wrong - in particular, that you are in some way producing invalid polyhedra.
<JordanBrown[m]>
Try looking at them with View/Thrown Together. See if there's any purple. I suspect that F5 will be in trouble if you have purple.
use-value has quit [Remote host closed the connection]
use-value has joined #openscad
<peepsalot>
guso78: does your OffsetNode inherit AbstractPolyNode ?
<guso78>
peepsalot. yes it does. (but i did not change here) i just coded addtional handling for the 3d case
<guso78>
JordanBrown[m], i did not yet consider that Offset could get invalid polihedra, because during my offset i just alter the coordinates a little bit without changing the overal strucure at all.
<guso78>
but yes, i can check
<JordanBrown[m]>
I don't know how AbstractNode versus AbstractPolyNode relate.
<peepsalot>
guso78: if the shape is not convex, then triangles should shrink and disappear as you offset some of them
<JordanBrown[m]>
That could be an issue. I would look at other node types that support both 2D and 3D to see what they do - hull, for instance.
<guso78>
i did a thrown-together view of offsetNode, but nothing purple(did on a sphere)
<guso78>
size of the offsetted sphere was correct in the throwntogther renderer
<guso78>
yes, i can look into hull
ubitux has quit [Quit: WeeChat 3.5]
ubitux has joined #openscad
<peepsalot>
AbstractNode is the virtual base CSG Tree node type. AbstractPolyNode is another CSG node which inherits AbstractNode, and I guess, generates a new polygon or polyhedron from its children, and I guess isn't a CSG Operation, nor CGAL based? The distinction definitely isn't very clear
<JordanBrown[m]>
LeafNode inherits from AbstractPolyNode, and things like cubes are LeafNode.
<peepsalot>
ah, ok, well drop "from its children" from my description
<peepsalot>
i mean, its seems to be used a basically a catch-all for types that need no other special handling in CSGTreeEvaluator
snaked has quit [Ping timeout: 248 seconds]
<guso78>
Thanks guys, i will study your input later.
<guso78>
I just implemented some other inspiration from ImplicitCad ..
<guso7860>
You propose that i shall try to Service offsetnode from abstractpolynode.yes this ist Worth a trial.
guso7860 has quit [Ping timeout: 260 seconds]
<JordanBrown[m]>
You would not be changing AbstractPolyNode. OffsetNode is, and should be, a subclass of AbstractPolyNode.
<JordanBrown[m]>
You need to ensure that GeometryEvaluator::visit(..., OffsetNode) does the right thing.
guso7885 has joined #openscad
guso7885 has quit [Ping timeout: 260 seconds]
ur5us has joined #openscad
Guest7 has joined #openscad
Guest7 has quit [Client Quit]
guso7875 has joined #openscad
teepee_ has joined #openscad
teepee has quit [Ping timeout: 255 seconds]
teepee_ is now known as teepee
guso7875 has quit [Ping timeout: 260 seconds]
Av8r has joined #openscad
<Av8r>
peepsalot gave me the pointer to the AUTOUIC flag for cmake, and I was successfully able to compile my Qt dialog .ui file. (Thanks again!) In the process, I made an observation which is puzzling and seems like another learning opportunity. Specifically, to get make to run uic on my .ui file, it was necessary for me to add the AUTOUIC flag
<Av8r>
to the cmake command. However, this is NOT necessary with a clean build environment. (Eg, if I run cmake -DEXPERIMENTAL=1 and then make OpenSCAD in a clean build folder, autogen produces all the ui_<widget>.h files in the autogen include directory. But when I simply add the new .ui file to the src/gui directory, and add the corresponding
<Av8r>
include statement to an existing .h file in the gui directory, autogen does not process the .ui file. I looked through Cmakefiles.txt for clues (and through the Makefiles) but I'm not finding any clues. Can someone provide a pointer to an explanation?
L29Ah has joined #openscad
<peepsalot>
Av8r: as I understand, cmake scans the **source** files for includes, so you have to add something to the target_sources for it to scan
<peepsalot>
so did you add a source file to the GUI_SOURCES like I said before?
<peepsalot>
target_sources is the cmake command, and GUI_SOURCES is our list of gui-specific files, which ends up being added to the target_sources call
<Scopeuk>
there is an extra layer of qt tooling cmake isn't able to make "intelligent" build decisions, if you have an empty file that extra step gets run, but the dependency based variant as you might be used to for source code doesn't
<peepsalot>
adding "AUTOUIC flag to the cmake command" doesn't make sense. if you are doing a build of openscad, then it already sets that in our CMakeLists.txt
<peepsalot>
also, AUTOUIC isn't even a flag, you would have to set CMAKE_AUTOUIC
<peepsalot>
AUTOUIC on its own is a property to be set on a specific target
ur5us has quit [Remote host closed the connection]
ur5us has joined #openscad
linext has quit [Read error: Connection reset by peer]
ur5us has quit [Ping timeout: 260 seconds]
<Av8r>
so here is specifically what happened.
<Av8r>
added exportPdfDialog.ui to src/gui. added #include "ui_exportPdfDialog.h" to existing src/gui/MainWindow.h.
<Av8r>
make -j5 OpenSCAD. Compile failed, "ui_exportPdfDialog.h" not found.
<Av8r>
Then cmake -DEXPERIMENTAL=1 to regenerate Makefiles, make -j5 OpenSCAD. Compile failed, #include "ui_exportPdfDialog.h" not found again (and of course it was not in the autogen/include directory.)
<Av8r>
Then cmake -DEXPERIMENTAL=1 -DCMAKE_AUTOUIC=1 to regenerate the makefiles, then make -j5 OpenSCAD. Success! And of course the ui_exportPdfDialog.h was in autogen/include.
<Av8r>
I'm happy, but then I'm thinking: why did THAT run cause uic to run? I was using the same process/options that are on the "compiling Openscad" section on the github page, and each time I'd done that in a clean repository (or after modifying non-gui code) it worked. So I deleted the build directory and started clean with new build directory.
<Av8r>
(and cmake -DEXPERIMENTAL=1). That time it also worked. So the implication is that something in the makefile makes a global decision on whether uic is to be run.