<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 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.
<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.
<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>
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
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_>
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]
<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)
<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
<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.
<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 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>
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.
<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
<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
<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
<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
<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.
<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?
<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>
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().
<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]