teepee changed the topic of #openscad to: OpenSCAD - The Programmers Solid 3D CAD Modeller | This channel is logged! | Website: http://www.openscad.org/ | FAQ: https://goo.gl/pcT7y3 | Request features / report bugs: https://goo.gl/lj0JRI | Tutorial: https://bit.ly/37P6z0B | Books: https://bit.ly/3xlLcQq | FOSDEM 2020: https://bit.ly/35xZGy6 | Logs: https://bit.ly/32MfbH5
kintel has joined #openscad
<kintel> Conflict warning: I might merge smart pointers very soon: https://github.com/openscad/openscad/pull/4857
<kintel> guso78 I cannot see any python usage in LinearExtrudeNode in your branch. Is that something new?
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<gbruno> [github] kintel closed issue #4614 (Flaky test: manifold-cgalpng_example006) https://github.com/openscad/openscad/issues/4614
<InPhase> teepee: I started thinking about a calendar design this morning, but my thoughts kept going to something more ambitious than I might be able to finish.
<InPhase> I'll have to either think of a simplification to the implementation, or tone down to something more achievable. :)
<teepee> haha, yes, timeline has some restrictions ;-)
<teepee> there is nothing wrong with a bit simpler, todays lamp panel is pretty simple too
<InPhase> My brain just can't let go of the idea of implementing a parametric dancing balerina doing a floor routine.
<teepee> sounds like a good candidate for 2025 :D
<InPhase> But the floor and gravity interactions in a largely stateless system is, well, tricky.
<InPhase> Well actually it was my idea for 2022... But I couldn't figure it out. :-P
<InPhase> If I can trip into the right cheap trick, it will be doable. :)
<linext> did you see the video of 3d printing under water?
MatrixBot1234514 has quit [Quit: Bridge terminating on SIGTERM]
MatrixBot1234516 has joined #openscad
MatrixBot1234516 has quit [Quit: Bridge terminating on SIGTERM]
MatrixBot1234516 has joined #openscad
<JordanBrown> InPhase: state isn't all that hard. It just makes your animations quadratic. For each frame, you first calculate all previous states and then the one you need.
<JordanBrown> That's what I did for Life and something like what my train set does.
<JordanBrown> But also it of course depends on how geometric your floor program is. If, for instance, you were just trying to spin like a Disneyland teacup, it seems like you could go straight to the target state for the frame.
<JordanBrown> Hmm. Animated Disneyland teacups might be fun.
kintel has joined #openscad
LordOfBikes has quit [Ping timeout: 276 seconds]
LordOfBikes has joined #openscad
<gbruno> [github] kintel edited issue #4825 (Move manifold out of experimental) https://github.com/openscad/openscad/issues/4825
linext has quit [Quit: Leaving]
<JordanBrown> I want variables that let my program know the animation fps and the total number of frames, so that I can animate in terms of seconds.
<JordanBrown> Or a variable that reports directly in seconds.
<InPhase> JordanBrown: Yeah, I had your Life implementation in mind while contemplating it, and considered a full step-to-step dynamics simulation. Just, it's a mess. :) And probably that's not the optimal way to do a balerina implementation with a known floor routine.
<peeps[zen]> i did a bit of "yard work" today https://i.imgur.com/VP3bwj0.jpg
bozo16 has quit [Quit: Leaving]
mmu_man has quit [Ping timeout: 252 seconds]
<InPhase> peeps[zen]: Did you chainsaw the tree all the way into rectangles? :)
<peeps[zen]> yeah. i have to cut into tiny bits so the "brush" pickup will haul it off
<InPhase> Also, the underwater printing video linext linked above was pretty neat. It's impressive that it worked as well as it did.
<peeps[zen]> there's still a few medium sized logs on the end i'll have to get tomorrow, was too exhausted
<InPhase> peeps[zen]: Can't you just put "free firewood" on Craigslist? :)
<InPhase> peeps[zen]: And get someone else to do the splitting.
<InPhase> Or maybe that doesn't work as well in Texas.
<InPhase> Here wood is valuable enough that people will happily come pick it up.
<peeps[zen]> yeah, idk, might have worked, but i had some larger logs on my curb for month or two before and no one grabbed them until i cut them up. though, i didn't specifically advertise on craigslist that time either
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<JordanBrown> Teacups
<peeps[zen]> nice
<JordanBrown> General idea good for SCADvent? If so, would decorate them a bit more, maybe add people.
<JordanBrown> Fine tune shape, add saucers, et cetera.
<teepee> party!
<teepee> yes, that would be very nice to have, so far it's more printable stuff, some extra animation and color is great
J23k93 has joined #openscad
J23k19 has quit [Ping timeout: 250 seconds]
<JordanBrown> teepee, isn't it oh-dark-hundred for you?
<teepee> it's just always dark here currently
<JordanBrown> But you're in Germany at UTC+1 or so, right?
<JordanBrown> +2?
<teepee> +1
<JordanBrown> For some reason Alexa is giving the summer time offsets.
<JordanBrown> So 5:20 am. I guess that's not totally silly.
<teepee> days are too short anyway
<JordanBrown> 52N
<JordanBrown> that's a lot of north.
<JordanBrown> ~1200 miles north of me
<JordanBrown> ~2000km
teepee has quit [Remote host closed the connection]
<JordanBrown> Choke, that's way north of the Canadian border.
teepee has joined #openscad
<JordanBrown> Try reloading that imgur page: https://imgur.com/a/gTcb4Es
<JordanBrown> second draft
<teepee> lovely colors
<JordanBrown> Hmm. I forgot to reset the view to show all before I made the video, but I'm not sure that this isn't better.
<teepee> the perspective is not bad, maybe a bit more zoomed out, but having them dance a bit out of view make it maybe more interesting
<JordanBrown> Also closer to a spectator POV.
<JordanBrown> It's tempting to have a rider POV.
<JordanBrown> Refresh for high-res teacups and slightly different POV, zoomed out a little but still with some going out of sight, off center.
greenbigfrog has quit [Ping timeout: 256 seconds]
<JordanBrown> The turntables are synced with the length of the loop so there's no jump at the end. The individual teacups are not - they are spinning at random speeds, because different people spin them differently - but even looking for the jump I find it hard to see.
<JordanBrown> But I think I might make the individual teacups randomly pick speeds that just happen to repeat each time the loop repeats.
greenbigfrog has joined #openscad
<pca006132> kintel: yeah I understand the usecase, but it seems that we are not preserving polygons as well for Nef Polyhedron -> PolySet conversion
<gbruno> [github] gsohler synchronize pull request #4841 (Squashed commit of python_pr3) https://github.com/openscad/openscad/pull/4841
RichardP_ has joined #openscad
nelson_ has joined #openscad
JordanBrown_ has joined #openscad
JordanBrown has quit [Ping timeout: 245 seconds]
InPhase has quit [Ping timeout: 245 seconds]
RichardPotthoff has quit [Ping timeout: 245 seconds]
Joel has quit [Ping timeout: 245 seconds]
nelson__ has quit [Ping timeout: 245 seconds]
Joel has joined #openscad
InPhase has joined #openscad
Joel has quit [Max SendQ exceeded]
Joel has joined #openscad
<JordanBrown_> teepee any opinions on desirable frame rate?
teepee has quit [Remote host closed the connection]
teepee has joined #openscad
<JordanBrown_> https://imgur.com/a/gTcb4Es now has people, higher frame rate, and a few other tweaks. The people make it visually busier, which I don't like, but they're kind of cute.
<JordanBrown_> Technical note: real Disneyland teacups seat up to five. I tried that, and it was too crowded for my tastes.
<JordanBrown_> paste!
<othx> paste is https://www.3dcustomizer.net/paste for .scad files, https://bpa.st for text, https://pasteboard.co/ or https://imgur.com/ for images
<JordanBrown_> I dropped the frame rate back down to 10fps to get the file size down a bit. Opinions solicited.
<JordanBrown_> 20fps is definitely smoother.
<J23k93> can someone please confirm a  "Vec out of range" bug with manifold?   https://bpa.st/3T5Q  (version 2023.11.23)
<JordanBrown_> On a build from Nov 12, it gets me a segmentation violation. Don't know when the corresponding pull was.
<J23k93> did it render?
mmu_man has joined #openscad
<J23k93> (should have added that preview without render() looks fine)
<JordanBrown_> preview fine, F6 render boom, Segmentation fault, do not pass Go, do not collect $200.
<JordanBrown_> but again that is a several-week-old build so if you care about recent changes it doesn't apply.
<pca006132> j23k93 confirmed
<pca006132> will try to debug, thanks
<J23k93> Thank you!
<J23k93> in the original model it rendered only about 25 elements without any warning or error - changing the number resulted in that Vec error .. maybe it has to do with the precision
<JordanBrown_> I should give a few of the people Mickey Mouse hats. But right now I should go to bed.
<J23k93> hm no rounding the rotation didn't change anything but it is related to the radius and number  - starts around 120 with 30 radius.. ( and now my window got extended because  of the accumulation of progress bars )
* J23k93 is going  to fetch the end of the 2807px window
mmu_man has quit [Ping timeout: 252 seconds]
<pca006132> manifold should not have this Vec out of range error regardless of precision
<pca006132> so this is a pretty serious bug
<Scopeuk> Are we fully sorted for advent entries? I have nothing to hand but can probably come up with something if we are short
<J23k93> Scopeuk we are short as always - Ü
califax has quit [Remote host closed the connection]
califax has joined #openscad
<pca006132> j23k93: found the issue, but will take some time to investigate why it triggered the mesh simplification (the precision here should be fine)
<J23k93> i find this interesting as there are just cubes and  not intersecting. Maybe something how the recursive element list es used. Thanks for the update pca006132
<pca006132> no, it is the entire mesh somehow triggered mesh simplification routine in manifold erroneously, causing the entire thing to be wiped out of existence wrongly, and then the number of triangles does not match and triggered the issue
misterfish has joined #openscad
<pca006132> it should not trigger that...
<J23k93> the CSG tree has a big amount of brackets ( which i see as the main difference to other designs)
<pca006132> yeah I found the reason, it is indeed due to the CSG tree
<pca006132> we track the precision (max error) by a mix of floating point error in the coordinate representation and applied transformations
<pca006132> your design is doing a lot of transformations, and each transformation scale up the error a bit, until at some point the error is larger than 1 so everything smaller than it is wiped off by the simplification routine...
<pca006132> we should probably change the precision calculation, I think we are too conservative
<pca006132> maybe it should also be 3D so we can capture rotation better?
<J23k93> glad you could track that down.  I didn't see this error for linear transformations only if the rotation is added .. i assume this accelerate the error increase
MatrixBot1234516 has quit [Quit: Bridge terminating on SIGTERM]
MatrixBot1234516 has joined #openscad
misterfish has quit [Ping timeout: 245 seconds]
califax has quit [Remote host closed the connection]
califax has joined #openscad
misterfish has joined #openscad
<J23k93> https://i.redd.it/5bjl1ke0k24c1.jpg  Stringart with filamentchange looks nice
<Scopeuk> Someone at smrrf yesterday had. Machine turning out a bunch of stuff like that, was quite pretty
<Scopeuk> Also eye opening to see how much machines have moved on
<Scopeuk> Now if only I actually printed enough to make a new machine make sense
<J23k93> that filament change was manual .. besides AMS/MMU  the most development was done with slicer/software when i compare  5yr old prints with today (same printer)
mmu_man has joined #openscad
kintel has joined #openscad
<gbruno> [github] kintel closed pull request #4857 (Use more smart pointers) https://github.com/openscad/openscad/pull/4857
<gbruno> [github] kintel pushed 126 modifications 2 removals (Use more smart pointers (#4857) * Generally use more smart pointers, mostly for pointers to Geometry and subclasses * Update some functions which previously took PolySet as an output argument and return a smart pointer to PolySet instead * Remove memory.h, use std namespace instead) https://github.com/openscad/openscad/commit/c36e19b535287198b3659ce9b902dc2bf4554aba
<gbruno> [github] kintel edited issue #4851 (PolySet needs cleanup) https://github.com/openscad/openscad/issues/4851
<kintel> I'll try to get back to VBO rendering next. I wish we had a performance measurement tool which could measure render times post-VBO creation..
<pca006132> https://github.com/wolfpld/tracy is pretty good
<pca006132> it supports graphics stuff, as it is used for game developments
<pca006132> but will need some code to integrate it
<gbruno> [github] pca006132 synchronize pull request #4768 (add unity build support) https://github.com/openscad/openscad/pull/4768
teepee_ has joined #openscad
teepee has quit [Ping timeout: 240 seconds]
teepee_ is now known as teepee
<kintel> pca006132 I was wondering why I never tried tracy, and then I saw: Tracy on OSX: "OpenGL can’t be profiled". Meh
<pca006132> lol
<kintel> Back to apitrace and manually inspect GL calls : /
Guest99 has joined #openscad
Guest99 has quit [Client Quit]
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
mmu_man has quit [Ping timeout: 256 seconds]
RichardPotthoff has joined #openscad
RichardP_ has quit [Ping timeout: 268 seconds]
<gbruno> [github] HyperWinX opened issue #4873 (Latest openscad is bricked) https://github.com/openscad/openscad/issues/4873
<pca006132> ah, just noticed that there are two convexity parameters for PolySet, one from itself and one inherited from Geometry...
greenbigfrog has quit [Ping timeout: 245 seconds]
<pca006132> kintel the unity build windows CI passed
<pca006132> so probably something flaky
mmu_man has joined #openscad
greenbigfrog has joined #openscad
mmu_man has quit [Ping timeout: 276 seconds]
_whitelogger has joined #openscad
<gbruno> [github] t-paul edited issue #4873 (Issue with self compiled OpenSCAD) https://github.com/openscad/openscad/issues/4873
<gbruno> [github] pca006132 opened pull request #4874 (Polyset cleanup 3) https://github.com/openscad/openscad/pull/4874
<gbruno> [github] pca006132 edited issue #4851 (PolySet needs cleanup) https://github.com/openscad/openscad/issues/4851
<gbruno> [github] pca006132 edited pull request #4874 (Polyset cleanup 3) https://github.com/openscad/openscad/pull/4874
<gbruno> [github] pca006132 synchronize pull request #4874 (Polyset cleanup 3) https://github.com/openscad/openscad/pull/4874
<gbruno> [github] pca006132 edited pull request #4874 (Polyset cleanup 3) https://github.com/openscad/openscad/pull/4874
<gbruno> [github] pca006132 edited issue #4851 (PolySet needs cleanup) https://github.com/openscad/openscad/issues/4851
mmu_man has joined #openscad
JordanBrown has joined #openscad
<gbruno> [github] t-paul edited issue #4871 (CSG op issue when coordinates have resolution differences of more than 4 orders of magnitude) https://github.com/openscad/openscad/issues/4871
<pca006132> nice title
<teepee> still a bit long, but it's indeed difficult to name
<JordanBrown> teepee any requests for the teacups?
califax has quit [Remote host closed the connection]
<teepee> JordanBrown: no, I can't decide if I like it better with or without people, so you decide :P
<teepee> only technical request for the video to be square to fit the square doors
<JordanBrown> ah, indeed. preferred size?
<teepee> hmm, let me check last years animations
<teepee> meh
<teepee> ./HappyGrass/happy_grass.webp: RIFF (little-endian) data, Web/P image
<teepee> thanks dear file tool, very helpful
kintel has joined #openscad
<kintel> I've seen this a few times lately on the Windows CI, in case anyone has ideas:
<kintel> D:\a\openscad\openscad\tests\test_pretty_print.py:84: SyntaxWarning: invalid escape sequence '\('
<kintel> origin = ezsearch('^origin *?(.*?)\(fetch.*?$', data)
<teepee> I guess anything between 500x500 and 1024x1024 should be fine, larger probably would just increase file size
<JordanBrown> Need to (re-)figure out how to generate WEBP videos.
<kintel> Not sure how an escape sequence can be valid/invalid between runs : /
<teepee> JordanBrown: command line InPhase used: img2webp -v -loop 0 -d 33 -lossy -q 97 -m 4 frames/frame*.png -o caterpillar.webp
<teepee> your Live: img2webp -v -loop 0 -d 50 -lossy -q 30 -m 4 -o Life.webp
<kintel> ..or perhaps it's a bug in the python script, which is triggered by a flaky test: throwntogethertest_transform-insert
<teepee> ahem Life
<teepee> kintel: I've seen that, but I have no idea where it comes from
<teepee> it's python, so it should not trigger on local files or something as could happen with shell scripts
<JordanBrown> kintel IIRC some regular expression libraries like grouping using escaped parentheses \(whatever\) while others like naked parentheses (whatever).
<JordanBrown> That RE seems to use both styles.
<JordanBrown> If the intent is that the \ is just a character to match it might need to be doubled.
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<teepee> but how would it be different on subsequent runs? triggering due to picking up a different library at random would be surprising too
<teepee> hmm, maybe the fail cause some python code not to run so the library is initialized differently?
pca006132_ has joined #openscad
<pca006132_> what I can say is it should trigger everyrun
<pca006132_> this is indeed invalid
<pca006132_> you need raw string in python...
<JordanBrown> There may also be an interaction with string escaping. Docs recommend always using raw strings for REs.
<JordanBrown> section starting with '\'.
<teepee> oh, the: r"string" thingy?
<pca006132_> yes
<teepee> yeah, I've always used that with the "re" library
<JordanBrown> and, having never read the docs, I thought that r'foo' meant it was a RE. Now I know it stands for "raw".
<pca006132_> maybe python somehow treats invalid string escape sequence differently across versions? that could explain why it only fails on windows, but not sure about that
<JordanBrown> version differences are entirely plausible.
<JordanBrown> especially if they tweaked the behavior on Windows to make backslash paths (sometimes) work.
<JordanBrown> which seems like a bad idea, but not inconceivable.
califax has joined #openscad
califax has quit [Remote host closed the connection]
pca006132_ has quit [Quit: Client closed]
<JordanBrown> Python is a "naked parens" program, so in '^origin *?(.*?)\(fetch.*?$' the first open and close paren are for RE grouping, and the second open paren is just an open paren.
<JordanBrown> but it would be better to wrap it in r'...' to make the status of the backslash absolutely clear.
califax has joined #openscad
<teepee> this years fractal? https://imgur.com/a/2AuygSc
<teepee> printing would be interesting
califax has quit [Remote host closed the connection]
<JordanBrown> teepee are we on C++11 yet?
<teepee> c++17 mostly
<JordanBrown> so it is safe to use C++11 features?
<teepee> c++11 and c++14 are totally fine
<JordanBrown> thanks
<teepee> 17 is not 100% supported in Ubununt 20.04 which is about the baseline currently
<JordanBrown> I'm quite surprised that original C++ didn't include a way for one constructor in a class to call another. That seems pretty fundamental.
<JordanBrown> But it looks like C++11 does.
<teepee> Debian 11 has 10.2.1, Ubuntu 20.04 has 10.5.0
<teepee> well, original c++ was ancient :)
<teepee> https://gcc.gnu.org/projects/cxx-status.html#cxx17 -> C++17 mode is the default since GCC 11
<teepee> so I suppose c++17 is also pretty safe, even though it's not set as default in gcc-10
califax has joined #openscad
<JordanBrown> I hate changing Value.h since it causes most of the world to rebuild.
<JordanBrown> ... which really seems wrong and one day I will try to figure out the dependencies and break them. I don't understand, for instance, why the exporters include it.
<Scopeuk> maybe run includeWhatYouUse over the code base and see what it finds
kintel has joined #openscad
<JordanBrown> Scopeuk I think it's sort of legit, but I expect that it is usually that x.cc uses A1 and so includes A.h, and in A.h some thing A2 (not A1) uses B1 and so includes B.h, et cetera.
<kintel> In terms of the Python failure on Windows CI. I recently change the CI to prefer msys python over Windows native python. That may have triggered differences in behavior
<kintel> If that's the case, the issue should trigger on _any_ test failure. I'll look out for it..
<kintel> Alternatively, I also changed the CMake macro to look for Python 3, rather than any old python
<kintel> Scopeuk Yeah, setting up includewhatyouuse would be nice. Perhaps it's possible to run in similar ways as clang-tidy, which we have optional support for in our build system
<JordanBrown> Somebody did run it a while back and made a bunch of changes.
<JordanBrown> But running it routinely would be good.
<kintel> -> code style git bot :)
<JordanBrown> y
<kintel> Perhaps wait for GitHub to make that easy to use, as I'm sure they already have it lurking somewhere
Guest99 has joined #openscad
Guest99 has quit [Client Quit]
ipepe has joined #openscad
ipepe has quit [Quit: Client closed]
<JordanBrown> While I was working on teacups, I wanted a $ variable that told me the animation position in seconds, not in fraction-of-total. Also sometimes frame number would be helpful.
<JordanBrown> Rather than consuming more top-level $ variables for the purpose, I was thinking about defining a $animate variable that would be an object.
<JordanBrown> So $animate.seconds would be the time in seconds, et cetera.
<JordanBrown> But that style has a problem. You might like to allow the program to supply some values, e.g. FPS or total frames, rather like it can supply $vpr et al.
<JordanBrown> But you can't say "$animate.fps = 10;" because objects are immutable.
<gbruno> [github] jordanbrown0 synchronize pull request #4863 (Set $vpr, $vpt, $vpd, $vpf when run from command line. Fixes #4466.) https://github.com/openscad/openscad/pull/4863
<teepee> JordanBrown: function returning object?
<gbruno> [github] kintel opened issue #4875 (Set up and run non-experimental tests on the CI) https://github.com/openscad/openscad/issues/4875
<JordanBrown> kintel I was waiting to mark them resolved until after I pushed.
<kintel> sorry, was just reading the code and felt happy about it :)
nelson__ has joined #openscad
<gbruno> [github] kintel pushed 9 modifications (Remove -direct and -prealloc features. These are now always enabled. The main reason for enabling them is that glBufferSubData() is quite slow on macOS, so we'll standardize on one common, fast, code path.) https://github.com/openscad/openscad/commit/884182010c06f0bf09de2a45d395e2193f7d3ac0
<gbruno> [github] kintel synchronize pull request #4787 (VBO: Make vertex-object-renderers-direct and -prealloc enabled by default) https://github.com/openscad/openscad/pull/4787
nelson_ has quit [Ping timeout: 252 seconds]
<JordanBrown> No worries. It's actually better if the reviewer marks an item closed, but I don't know whether we have that protocol.
<JordanBrown> kintel^
mmu_man has quit [Ping timeout: 276 seconds]
<JordanBrown> I want a way to tell my IRC client (which is at the moment HexChat, but on my desktop is Ice-something) to color all messages from gbruno in gray or something, so that messages from real humans stand out more.
<buZz> many ircclients have script and color support
<teepee> we may have colors disabled here
<teepee> another option would be notices instead of normal messages, or redirecting to #openscad-ci
<JordanBrown> to be clear, I'm not asking for any server-side change, just wishing for a UI feature in the client.
<JordanBrown> Looking at HexChat now to see if it already has the feature.
<kintel> JordanBrown Yes, if the author gives good feedback on each issue, the reviewer can always mark it. I wish GitHub had a simple "done" button for that.
<JordanBrown> Do you mean that the author would click "Done" (rather than saying it as a comment), and the reviewer would click "Resolve Conversation"?
<kintel> yeah, plus that the view should show me the diff from last change inline :) GitHub's review tool is a bit promitive..
<kintel> (or perhaps I don't know how to use it efficiently)
<JordanBrown> WRT resolving issues, ideally there would be a way for the author to easily find issues that they don't yet consider done, and the reviewer should be able to easily find issues that the author considers done but haven't been approved.
<buZz> JordanBrown: 'nickname colors' would be a term to google for, fyi
<JordanBrown> kintel WRT recent diffs, you can of course look at the diffs from a particular commit, e.g. https://github.com/openscad/openscad/pull/4863/commits/4ec04ee8fb5187658c04da387e305d07b2fa666e
<JordanBrown> but I suspect that you want relevant diffs (however defined :-) to be shown in-line with your review comments.
<kintel> yeah, but requires two more clicks
mmu_man has joined #openscad
<JordanBrown> Thanks for the review. I'll look into tests for the vpr et al change.
<JordanBrown> With tests, I think that one is ready for prime time.
<kintel> ^ Yup, I agree
<JordanBrown> Binary arithmetic still needs more thought.
<kintel> Considering JS as a reference, I think binary arithmetic on numbers backed by double is well understood. Needs good docs though
<JordanBrown> I'm not sure that the tests are anything more than echoing the values and checking that they match the --camera values.
<kintel> ..and missing xor is a bit of a bummer
<kintel> Yeah, echo against manually verified .echo files should be sufficient. Just cover all variants
<JordanBrown> function xor(a,b) = (a & ~b) | (b & ~a);
<JordanBrown> isn't it?
<kintel> Heh, but not obvious to your average xor user : /
<JordanBrown> even if we were starting from zero, I'd say that ^ for exponentiation is more important for OpenSCAD than xor would be.
<kintel> I knew adding ^ as exponent was trouble : (
<kintel> We can always add a built-in xor function
<JordanBrown> y
<kintel> ..even if it evaluates to scad code
<JordanBrown> We really need to add a mechanism for "built-in" functions and modules written in the OpenSCAD language.
<kintel> Yup, that's another long-standing issue
<kintel> that, and "standard library
<JordanBrown> An automatic "include" of $PROGRAM/builtin.scad would seem to be a simple answer.
<teepee> not sure about that
<JordanBrown> We've got a standard library with MCAD, but nobody loves it.
<kintel> yeah, it was an early experiment which didn't pan out
<JordanBrown> teepee not sure in what way?
<teepee> it's probably the "easy" option but in regard to scoping it might be better to have it one level above
<JordanBrown> ah, indeed.
<kintel> Same place we create $ variables should be fine
<teepee> yep, the builtin context is one level higher than the top level file I believe
<JordanBrown> and this one should be inserted between those two.
<teepee> yes, having it separate might be a good idea
<JordanBrown> if I find that I am bored I may look into it.
<gbruno> [github] t-paul assigned issue #4875 (Set up and run non-experimental tests on the CI) https://github.com/openscad/openscad/issues/4875
<kintel> there's a fine balance, eventually, for how much global namespace pollution we want to do though vs. asking people to use <lib>
<JordanBrown> yes
<JordanBrown> definitely
<kintel> teepee ^ with that issue I was mostly thinking copy/parametrize each github CI workflow and add some execution rules. Should be pretty straight-forward
<JordanBrown> if we were starting from zero, there would be an argument for ripping out almost all of the modules and functions and putting them in libraries, even if they are magic libraries that lead to C.
<teepee> with the current release cycle, that standard lib *must* be as minimal as possible anyway
<JordanBrown> why do you say that?
<teepee> kintel: yeah, I think it should also be possible to setup a similar structure as the .github and .circleci folders
<teepee> e.g. have .openscad-ci and put ci descriptions there
<teepee> I have not tried that yet though
<kintel> yeah, that would be cool
<teepee> only started preparing a docker base image with all the compile stuff available
<kintel> the openscad-ci is still Linux only, so for the rest of the platforms, we'll have to rely on GitHub etc.
<teepee> I'm not liking all the git submodules a lot, but maybe cloning them in the CI instead of the docker image should give them some caching already
<teepee> JordanBrown: because we can't release a new version without releasing a new openscad release too
fling has quit [Ping timeout: 240 seconds]
fling has joined #openscad
<JordanBrown> teepee hmm. Not insolvable, but yeah. And having two release trains (bleeding edge core versus "safe" changes including library) is a pain in the neck.
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<guso78k12> believe, that people are not aware enough about MCAD
<guso78k12> i know that it exists, but I dont know know for which problems MCAD could help me (neither i have looked into it)
<guso78k12> if you want MCAD to become more popular, maybe show some cool applications of it next to the cheatsheet ? people regularily approach cheat sheet for help
<guso78k12> I like the idea of a "builtin" loaded functions a lot, but every designer has his own functions which he like, so it should be individually editable (and still automatically loaded)
<teepee> mcad started as collection of scripts which makes it a bit difficult to become a "normal" library
<teepee> there's not even a single license attached but every script may have it's own
<teepee> "I think I have it fully parametric in Fusion 360"
<teepee> also: here's the 3MF file only
ipepe has joined #openscad
ipepe has quit [Quit: Client closed]
califax has quit [Remote host closed the connection]
<teepee> hijacking all the hashtags! https://imgur.com/a/o3NDCRY :)
califax has joined #openscad
<JordanBrown> I'd say that "builtin.scad" should be considered a read-only part of the implementation of OpenSCAD, *not* something a user might edit. I would recommend *against* including a user-editable included-by-default library, because it would mean that a program could have invisible dependencies on it.
<JordanBrown> kintel I had forgotten FORTRAN-style ** for exponentiation. That would have been OK, and avoided the conflict with xor.
<teepee> yeah, maybe a configurable "new file" template which could have some local include
<JordanBrown> that would be OK
<JordanBrown> and you could use that to bring in MCAD or BOSL2 or whatever.
<teepee> oh my, >> You've been removed from the "openscad" team "Developers"
<teepee> I guess I'm the public relations team now :D
<gbruno> [github] jordanbrown0 synchronize pull request #4863 (Set $vpr, $vpt, $vpd, $vpf when run from command line. Fixes #4466.) https://github.com/openscad/openscad/pull/4863
<JordanBrown> developer is easier than PR
<teepee> yeah, devops somewhere inbetween :)
<J23k93> do we have some webstats on the calendar? - Not that we could change much but would be nice if we get at least some hits
<guso78k12> @kintel, i am trying to compile it again after your pointer magic
<guso78k12>  const std::shared_ptr<Literal> &lit=dynamic_pointer_cast<Literal>(expr);
<juri_> teepee: we're looking for unpaid developers over on implicitcad. :P
<guso78k12> does not compile anymore, could not find working templates  in the code...
foul_owl has quit [Ping timeout: 252 seconds]
<teepee> J23k93: on the calendar itself no, as that's hosted by github, but the image downloads should hit the file server, we should have some DSGVO compliant web logs :)
<teepee> juri_: let me read that haskell book first that is sitting here gathering digital dust ;-)
<juri_> you should read it regardless. :P
<teepee> agreed
<guso78k12> ahh, forgot std:: :')
kintel has joined #openscad
<JordanBrown> What, if anything, do I need to do to resync and pick up the latest changes to submodules like Manifold?
<JordanBrown> git submodule update --recursive?
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
teepee_ has joined #openscad
kintel has joined #openscad
<kintel> guso78 Also, you shouldn't assign the result of a dynamic_pointer_case to a const&, as it returns a new shared_ptr instance. const auto will do the job.
<kintel> If that was my code, I need to go through and clean up more stuff...
teepee has quit [Ping timeout: 240 seconds]
teepee_ is now known as teepee
<kintel> JordanBrown git submodule update --init --recursive, in case new submodules were added somewhere
<JordanBrown> I have deeply mixed feelings about "auto". It's certainly convenient, but reduces type safety.
<kintel> teepee I cleaned up the github teams to remove overlaps between Developers and Core Developers
<JordanBrown> also reduces readability in some cases - "auto x = foo();" has me saying "that's nice, but what type is it?" and needing to go read foo() to find out.
kintel has quit [Client Quit]
<teepee> kintel: I thought as much, just kidding. I was posting the calendar stuff on Mastodon while the notification mail came in
foul_owl has joined #openscad
<teepee> that said, I'm not the perfect PR team anyway as I'm not going to touch twitter for new posts. I might still do an occational reply, but otherwise mr technoking can go f himself, just like he suggested others do not long ago
<juri_> hear hear.
<teepee> well, not really anything new though ;-)
<JordanBrown> kintel thanks for the submodule answer.
<guso78k12> kintel nope, it's my code
<gbruno> [github] jordanbrown0 synchronize pull request #4833 (Bitwise operators, hexadecimal constants. Fixes #3345.) https://github.com/openscad/openscad/pull/4833
<gbruno> [github] gsohler synchronize pull request #4841 (Squashed commit of python_pr3) https://github.com/openscad/openscad/pull/4841
kintel has joined #openscad
<kintel> JordanBrown Yeah, reducing auto usage for readability purposes is good. but auto for the use-case above is nice as it just deduplicates the type.
<kintel> In other places auto can be good to make code more robust against refactoring, especially if the alternative would be some automatic copying being made when people forget to change the type everywhere. ..with the readability caveat
<guso78k12> kintel I agree, but otherwise it you write: auto variable = do_something()  its only clear to the compiler what type variable is and its hard to further work with the variable.
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<JordanBrown> "auto" is not nearly as bad as untyped languages like JS and Python, but I think it's a *feature* that when I change the type returned by a function I have to chase through all of the callers and update them. It forces me to be ensure that everything is consistent.
<Scopeuk> my experience of it, auto is nice when you are working with some iterator results from a search function or similar which has an ugly over verbose type and need it once in a local to work with
<Scopeuk> seeing one spooled across hundreds of lines and calls would hurt my soul
<Scopeuk> I don't claim to be a c++ specialist by any stretch though so feel free to ignore me
kintel has joined #openscad
linext has joined #openscad
<linext> is there a function to connect two 2D shapes at z-heights to points of their nearest neighbor?
kintel has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<gbruno> [github] jordanbrown0 opened pull request #4876 (Replace zip_get_num_files() with zip_get_num_entries().) https://github.com/openscad/openscad/pull/4876
<linext> sort of like hull but only between two 2d objects in the z-axis
<JordanBrown> linext certainly not built in, but looks like what some people call "skin".
<J23k93> you can extrude 2D shapes 0.01 then use hull in 3D but you always get a convex hull.  else you need to use polyheadra (or libraries that use them)
<Scopeuk> linext the closest I've done it to take a narrow slice of the two objects (intersection with thin cube) and then hull. I guess this is not quite what you are after
<linext> yep
<linext> JordanBrown, i could use a little help getting an example to work
<JordanBrown> A BOSL2 skin example? I don't know anything about it, other than what I see looking at that page.
<JordanBrown> But generally the BOSL2 examples just work. Make sure you have a recent BOSL2 installed.
<linext> how do i save this as a path? https://ibb.co/ydMMpHC
<linext> do the built-in functions like circle and octagon return paths?
<JordanBrown> no
<linext> can i pass in my own shapes to the skin function?
<JordanBrown> well, when you say "octagon" you're not talking about an OpenSCAD built-in. I believe that the BOSL2 octagon() is available as both a function and a module.
<JordanBrown> The OpenSCAD builtins are not available as functions.
<JordanBrown> Creating a circle is easy trig. The offset is harder. OpenSCAD doesn't have a native way to give you the points that would result from an offset.
<linext> seems like that might be useful
<linext> being able to convert 2D shapes into points without having to export first
<JordanBrown> However, BOSL2 does have a function version of offset().
teepee_ has joined #openscad
<JordanBrown> And yes, features like that would be useful. They are one of the reasons for PR#4478.
teepee has quit [Ping timeout: 240 seconds]
teepee_ is now known as teepee
<linext> what's the command for convex hull?
<JordanBrown> In PR#4478 you can say render({{ ... whatever OpenSCAD shape ... }}) and for 3D it will return a list of points and faces (like polyhedron), and for 2D a list of points (like polygon).
<JordanBrown> hull()
JordanBrown has quit [Read error: Connection reset by peer]
<linext> can you give an example of render({{}});
JordanBrown has joined #openscad
<JordanBrown> It's not merged yet; that's why I said "no" and talked about a PR.
<JordanBrown> I can't easily give you a running example at the moment; I don't have a copy of that build on this system.
<linext> what's the command to make a hull concave?
<JordanBrown> There is no mechanism for a concave hull.
<JordanBrown> And my understanding is that it's not well-defined.
<linext> in otherwords, not hulling itself with the max points
<JordanBrown> hull() is like you wrapped the object in stretchy rubber.
<linext> yea, oh well. i guess i'll just stick with making layers thinner than the printer layer height
<JordanBrown> That works too. But using a skin function is likely to be more general.
<linext> either that, or get rid of offset
<JordanBrown> BOSL2 has an offset function that can probably generate the points for you.
<JordanBrown> If you put that source into a paste (rather than a screen shot) I'd be willing to take a stab at converting it to use BOSL2's skin.
<pca006132> re. code style: for manifold we run every PR against code formatting automatically and fail the CI if it is not formatted correctly
<pca006132> works nicely, and does not require a bot to do the formatting for you, which makes git blame hard to trace
auctus has quit [Ping timeout: 240 seconds]
<gbruno> [github] t-paul closed pull request #4862 (Fix application icon not shown on Wayland) https://github.com/openscad/openscad/pull/4862
<gbruno> [github] t-paul pushed 1 modifications (Merge pull request #4862 from cjmayo/desktop Fix application icon not shown on Wayland.) https://github.com/openscad/openscad/commit/6661fcc9c9aec1ac89e1dae2b6e3a60336c30b15
<gbruno> [github] t-paul closed issue #4505 (App icon is incorrect under KDE Plasma Wayland session) https://github.com/openscad/openscad/issues/4505
<pca006132> kintel: it seems that there are third-party tools like https://reviewable.io/, that says it solves the problem you mentioned
<pca006132> free for public repo
pca006132 has quit [Remote host closed the connection]
auctus has joined #openscad
mmu_man has quit [Ping timeout: 268 seconds]