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
califax has quit [Remote host closed the connection]
GNUmoon2 has joined #openscad
califax has joined #openscad
<peeps> STL in gist will show in a handy 3d viewer
<peeps> not sure if that's ascii only
<InPhase> dalias: I wish git allowed the inclusion of non-version-controlled binary files.
<InPhase> dalias: As an option, of course.
<InPhase> dalias: There are files that are binary which you need version controlled along with, and then there are some where you really just want the latest version up there, because it belongs with the repository for a natural usage reason, but for which the past versions have diminished utility (such as they can be regenerated).
<InPhase> I know enough of what I'm doing to be able to specify that without breaking things. :)
<dalias> inphase, they shouldn't be non-version-controlled but external hash refs
<InPhase> dalias: But I genuinely want people to be able to clone the repository, and they get those files too.
<dalias> so you can clone the repo without getting them but pull them from some hash-indexed store (ala ipfs) if you want them
<dalias> i mean i think this could be fixed without changing the repo format, even
<InPhase> And if they go checkout the past of the repository, those files simply don't change.
<dalias> just make a mode you can set by default that's similar to shallow clone but that omits large leaf objects from the clone
<dalias> and instead just pulls them from some ipfs-like backing on checkout (not on clone)
<dalias> and only if you ask for them
<InPhase> I do want them to be able to be added (or a similar alternative) and pushed as well too. It's not necessary for them to have commit messages, although it would be optionally okay as like a changelog, just with the understanding it doesn't matter which commit you pull, you only get the latest.
<dalias> that's really awful and contrary to everything about git
<InPhase> colloquially pull, which I should call checkout.
<InPhase> dalias: It is contrary to how git handles things now, because git aims for version control. But that doesn't mean everything accompanying a set of data requires it. :)
<peeps> InPhase doesn't git lfs do something like that?
<dalias> forcing something something that's confusingly version-control-breaking into git just because github is called github is a nasty antifeature
<InPhase> Ultimately the right featureset is about workflows. And the reality is 90%+ of git usage workflows are working with the current repository state, and not the past.
<dalias> no no no
<dalias> breaking what's right because ppl use it wrong != cool
<peeps> breaking stuff is always cool
<InPhase> peeps: Well, I was under the impression lfs is about externally hosted versioning of large files, and trying to make it act like it's part of the repository.
<dalias> if you want to publish "generated artifacts of current version" just upload them as artifacts to github or your website and put something in the repo to automate downloading them
<InPhase> dalias: And if that's the desired outcome, why require a second step?
<InPhase> Purity of principle? :) It's okay to have different types of things specified.
<InPhase> The validity of it depends on usage.
<dalias> so that you're not violating the property that what git gives you is permanent and reproducible
LordOfBikes has quit [Ping timeout: 260 seconds]
<dalias> invariants like that actually matter
<dalias> they're what make it so people can reason about tooling and have faith that it does what they expect
<InPhase> The things I want to add in this way are in fact reproducible. I just want to provide the convenience of not NEEDING to reproduce them.
<dalias> git pull should not be a lossy operation!
<dalias> they're only reproducible under usage that explicitly assures they are
zauberfisch has joined #openscad
<peeps> InPhase: i haven't used lfs, but I figured the external hosting could just only store the latest one. unless the interface requires all revisions kept *shrug*
<InPhase> peeps: I suppose one could attempt to do it that way.
LordOfBikes has joined #openscad
J1A8465 has joined #openscad
<InPhase> dalias: And that wouldn't change for anything tracked. I'm just saying it would be convenient as a repository designer to be able to declare certain things as untracked and perfectly fine to update to latest regularly.
<InPhase> I don't fear the existence of such a feature. I already don't trust git as much as other people seem to. I don't consider it a very good backup system.
J1A84 has quit [Ping timeout: 252 seconds]
<dalias> git is simply not the tool for what you want
<dalias> the functionality you're asking for is completely contrary to its purpose
Colere has quit [Ping timeout: 252 seconds]
<peeps> InPhase: i'm trying to decide if I should add this to beginning of my merge conflict fixing script: https://gist.github.com/thehans/022a8713c9afca29ea2dda9a33f76ac2
<peeps> basically run beautify.sh then initiate the merge. actually would need a git commit in between those actions
<peeps> dunno how rare it is but I sometimes have thehans/openscad as my "origin" and openscad/openscad as "upstream", so kinda want to have that as an argument
<peeps> unfortunately the current scripts/beautify.sh has origin/master hardcoded
<InPhase> peeps: Yeah, seems reasonable to parameterize that with a fallback to origin/master
<peeps> alternatively I could just have those lines of script as optional instructions in documentation somewhere
<InPhase> peeps: You could also make beautifying optional in your fixer script. I have no strong view on the default.
<peeps> yeah i could make it an interactive Y/n prompt
<peeps> handling bash arguments always feel like brittle hacks, never quite sure how to proceed
Colere has joined #openscad
<InPhase> dalias: The only real core promise of git is supposed to be that committed data isn't lost unless you use the 10-15 some commands that cause commits to be lost. (Which is a pretty weak promise already.) But none of that would change with what I proposed. :) I'm just suggesting augmenting the workflow options with accompanying data. I don't expect any developers of git to think it's a good idea, and
<InPhase> am just daydreaming about a more useful tool for public sharing of code, rather than just for collaboration, as public sharing has become a modern use of it.
<InPhase> It's just that it is common that a git repository on github commonly has 10 to 100 (or more) times more readers than contributers, yet the featureset does not really take this into account.
<peeps> like, should I be using getopt/getopts?
<InPhase> Probably not portable.
<peeps> i don't do enough bash to be very comfortable with it
<InPhase> Do you expect any other options?
<peeps> i mean for modifying beautify.sh, which has optional "--all". I guess that's mutually exclusive with providing a DIFFBASE to compare against
<InPhase> https://bpa.st/PUOQ This example does the right thing for most sensible inputs.
<InPhase> I think. :)
<InPhase> Does beautify by default, with --beautify, or with --beautify=yes, but not with --beautify=no
<InPhase> And all internal.
<InPhase> I suppose those two other [ ] should be made into [[ ]] to assertively declare it all internal.
GNUmoon2 has quit [Remote host closed the connection]
<InPhase> Technically that's for bash or zsh, but that should be portable. I just noticed you had a .sh extension. The script fails in /bin/sh
<peeps> which script fails in /bin/sh/ ?
pbsds has quit [Quit: The Lounge - https://thelounge.chat]
pbsds has joined #openscad
<InPhase> peeps: The one in my pastebin, with [[ ]] which I used for the *"="* expansion to handle --beautify alone. Superfluous and removable if one wants to cram it into /bin/sh features.
<InPhase> I don't really think in /bin/sh terms anymore, but every once in a while someone wants to support the ancient ways.
rawgreaze has quit [Ping timeout: 260 seconds]
rawgreaze has joined #openscad
rawgreaze has joined #openscad
rawgreaze has quit [Changing host]
rawgreaze has quit [Ping timeout: 252 seconds]
rawgreaze has joined #openscad
rawgreaze has joined #openscad
rawgreaze has quit [Changing host]
ur5us has quit [Ping timeout: 244 seconds]
aiyion has quit [Remote host closed the connection]
aiyion has joined #openscad
teepee has quit [Quit: bye...]
teepee has joined #openscad
qeed has quit [Read error: Connection reset by peer]
qeed has joined #openscad
lastrodamo has joined #openscad
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
fling has quit [Ping timeout: 268 seconds]
fling has joined #openscad
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
TheAssassin is now known as TheAssass1n
TheAssass1n is now known as TheAssassin
fling has quit [Remote host closed the connection]
teepee has quit [Remote host closed the connection]
fling has joined #openscad
teepee has joined #openscad
TheAssassin has quit [Ping timeout: 268 seconds]
TheAssassin has joined #openscad
califax has quit [Ping timeout: 268 seconds]
califax has joined #openscad
TheAssassin has quit [Remote host closed the connection]
califax has quit [Remote host closed the connection]
TheAssassin has joined #openscad
califax has joined #openscad
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
TheAssassin has quit [Ping timeout: 268 seconds]
TheAssassin has joined #openscad
J1A8465 has quit [Quit: Client closed]
J1A8465 has joined #openscad
aiyion has quit [Remote host closed the connection]
aiyion has joined #openscad
aiyion has quit [Remote host closed the connection]
aiyion has joined #openscad
califax has quit [Quit: ZNC 1.8.2 - https://znc.in]
califax_ has joined #openscad
califax_ is now known as califax
califax has quit [Ping timeout: 268 seconds]
califax has joined #openscad
epony has joined #openscad
qeed has quit [Quit: qeed]
qeed has joined #openscad
snaked has quit [Quit: Leaving]
aiyion has quit [Ping timeout: 268 seconds]
aiyion has joined #openscad
J1A8465 has quit [Quit: Client closed]
J1A8465 has joined #openscad
<J1A8465> any idea when fast CSG fixed the "can't add triangle to 3mf export" .. and why do i need to restart after "WARNING: Normalized tree is growing past 1100000 elements. Aborting normalization."  -  it is not possible to recover from  this.
<InPhase> J1A8465: Is that the preferences/advanced/opencsg/ Turn off rendering at ___ elements thing?
<J1A8465> 2022.06.22  also seems to be 2 month old
<InPhase> I keep mine set at 10 million.
<J1A8465> InPhase öh  don't know i get this warning sometimes .. restart and set render() before
<InPhase> I think that value had smaller values probably to align with computers from almost a decade ago.
<InPhase> We could maybe boost the default.
califax has quit [Remote host closed the connection]
<J1A8465> hm i changed the number to 5mil  but the msg still warn  past 11000000 elements
<InPhase> Try a restart?
<InPhase> I don't recall which of those values require it.
califax has joined #openscad
<J1A8465> nope no change after restart
<InPhase> The value is grabbed from your prefernces stored as advanced/openCSGLimit
<J1A8465> it it is more or less frozen  .. i can move the view (empty) but  no  F5 F6 ..
<InPhase> So whatecer is in ~/.config/OpenSCAD/OpenSCAD.conf for the line like: openCSGLimit=10000000
<J1A8465> Execution aborted  seems to be permanent even with new windows or open files
<InPhase> s/whatecer/whatever/
<J1A8465> intresting now set to 15mil   got  "growing past 31000000"
<J1A8465> seems  roof doesn't like to be in a loop  .. Ü
<InPhase> Well, that's weird. The output value should be the value in the file, except that it will wrap at 2^32
<InPhase> Oh, no it won't.
<InPhase> size_t normalizelimit = 2 * Preferences::inst()->getValue("advanced/openCSGLimit").toUInt();
<InPhase> Twice that value. :)
<InPhase> It has been ages since I've seen that warning.
<InPhase> I think you could set it as high as 2 billion, but then should expect the program to become very unresponsive once it starts getting there. So maybe just change the design if it's going over the 15 million setting.
<J1A8465> i think it is fine to get the warning .. but not that it causes  the  program to become unresponsive after the warning .. i mean that is what the warning should prevent isn't it?
pah is now known as pa
<InPhase> Does it become unresponsive even when the value is set low?
<J1A8465> it was  1Mil  (set 550,000  or so)
<J1A8465> yes even with 500  (1000 elements )  no recovery
<InPhase> J1A8465: That's probably a bug then.
<InPhase> Probably worth an issue.
<J1A8465> funny that  loop (10)  of roof of a square with offset  caused this insane amount of elements
<InPhase> That sounds pretty odd.
<J1A8465> seems the intersection with the roof  is slowing things down
<J1A8465> difference instead of the intersection dosn't help either
<J1A8465> InPhase  can you try https://bpa.st/BDUA   .. this is extremly slow here
<J1A8465> a render() in front of the intersection makes it behave normal
<InPhase> Total rendering time 0.071 seconds.
<InPhase> There are some artifacts though due to overlap issues.
<J1A8465> not the render .. the view
<InPhase> translate([0,i*5,-0.001]) I swapped that to translate([0,i*5,-0.001]) to get rid of overlap.
<InPhase> Yeah, rendering time is 0.071 for preview.
<InPhase> With my 2022.08.20 build.
<J1A8465> it say render 0.135  but it literally takes 5 sec
<InPhase> Nope, takes an indiscernibly small amount of time for me.
<J1A8465> 2022.06.26  win    ..  the view is also like  .5 fps
<InPhase> Hitting render is also instant.
<J1A8465> (overlap doesn't help)
<J1A8465> render is fast here too
<InPhase> I'm getting about 2 fps on rotating the preview.
<J1A8465> but even after render .. hitting F5  makes it unusable
<InPhase> After fixing that translate: Normalized tree has 24576 elements!
<InPhase> After render it's super fast to navigate around.
<InPhase> Maybe try fixing that overlap and try again, just for a common reference point.
<J1A8465> yes after render it is (with the render view not the CSG F5 view)
<J1A8465> already did .. no change
<InPhase> Maybe a fresh build from the master branch?
<J1A8465> you have linux ?
<InPhase> Yes.
<J1A8465> it is the most current version to download
<InPhase> Sometimes the nightlies stop building until teepee gets a chance to figure out why.
<InPhase> Oh, nevermind.
<InPhase> They stopped building because nothing changed since 2022-06-26. :)
<InPhase> So we have the same version, I just built mine later.
<J1A8465> the moment i add render()  or  remove the cube in the intersection .. runs smooth
<InPhase> I guess no one merged anything in 2 months.
<J1A8465> 0.02  animation time  but with the cube (even a 500 cube bigger than the object)   .2s  and  not usable anymore
<J1A8465> i get an image every 2 seconds  (even the render time is 0.2 sec)
<J1A8465> ok it is not roof .. i get the same issue with linear_extrude
<InPhase> This version previews even faster, and navigation is instant now: https://bpa.st/LHOA
<J1A8465> a loop with 5 running still ok .. 7 is  getting slow .. 10 is crap
<J1A8465> yes what i said  - when you add a render() the problem is gone
<J1A8465> this was my solution to not running in the warning " past  11000000 elements"
<J1A8465> may be teepee can check with his windows  if he get the same awkwardness   https://bpa.st/BDUA   (maybe increase the loop to 20)
<J1A8465> checked with 2019 build and also the same ..
<InPhase> It is a bit laggier than I'd expect for the amount of stuff.
J1A8465 has quit [Quit: Client closed]
J1A8465 has joined #openscad
<J1A8465> i guess there is more computing than i estimate ..  ( assume you tried with loop 20 and it got "bit laggier")
<InPhase> If you swap intersection for union, it runs super fast again.
<InPhase> It's really the intersection, because intersection(){cube([5, 2, 2], true); cube(2,true);} produces the same slow result as linear_extrude with the square.
<InPhase> But switching to union makes it fast.
<J1A8465> an intersection with a big cube so there is 100%  intersection is not changing it .. and i am sure a difference will have the same result
<InPhase> Nope, difference is fast too.
<InPhase> Only intersection is slow here.
<J1A8465> oh ..   ( ah the difference didn't changed the problem with the  warning of elements )
<InPhase> And here's why.
<InPhase> Compare Display, CSG Product, between union and intersection.
<InPhase> I do NOT understand what that intersection is doing there.
<InPhase> But that is REALLY long.
<InPhase> Like some sort of combinatorial explosion.
<InPhase> That seems to be far more components than required by the result. :)
<InPhase> I don't know the internal logic done there on the intersection, but that feels wrong.
<J1A8465> i am glad i am not the only one Ü
<InPhase> Did you see the length of that?
<InPhase> I'm using that for simplicity.
<J1A8465> hahaha
<InPhase> Or heck, we can do cube(2); cube(2); and it still explodes.
<InPhase> (With true in there for alignment)
<J1A8465> it is like  an intersection_for   where it exponentially grows with the loop
<J1A8465> or at least quadratic
<InPhase> https://bpa.st/KILQ Okay, this is as simple as I can make it. The CSG product still explodes.
<InPhase> The CSG product has 54 times as many characters for i from 0 to 10 as for i from 0 to 5.
<InPhase> I do not understand how that happens. :)
<J1A8465> but only hapens in a difference  not in a union
<InPhase> peeps: Oh great wise one of staring at CSG products in the past. Why does this happen?
<J1A8465> and not in an intersection
<J1A8465> yes the chain doubles with every additional loop
<J1A8465> 2 has 4 .. and 3 has 8  ...
<InPhase> So going from 5 to 10 is 32 times bigger plus a lot of parentheses.
<InPhase> That sure explains why it's getting out of hand, but not why it's happening. :)
<J1A8465> how do you get 32?   isn't this  2^5
<J1A8465> oh ..  that is 32  Ü
<InPhase> For sufficiently two-like values of 2. :)
<J1A8465> And  if  you use a normal loop  .. the number of elements is the correct one  (set to 500 .. warning 501)  .. and the system recovers from this and is not stuck
<J1A8465> so  this seems to be a result of  the difference with an intersection
Killy has joined #openscad
qeed has quit [Read error: Connection reset by peer]
qeed has joined #openscad
paddymahoney has quit [Ping timeout: 252 seconds]
califax has quit [Remote host closed the connection]
califax has joined #openscad
rawgreaze has quit [Ping timeout: 244 seconds]
noonien has quit [Quit: The Lounge - https://thelounge.chat]
noonien has joined #openscad
rawgreaze has joined #openscad
rawgreaze has quit [Changing host]
rawgreaze has joined #openscad
jimusmallard has joined #openscad
<peeps> the CSG products are Disjunctive Normal Form (sum of products), which in the worst case is 2^n in length IIRC
<peeps> basically for the same reasons that the SAT problem is NP hard
<J1A8465> so this can't be improved..  thx for explaining!
<J1A8465> but there is still the problem that this operation can break  the  elements warning and lead to a stall state
<InPhase> If not for color loss on render(), we could probably have an automatic threshold for dropping in a render when the CSG product is about to explode like that.
<InPhase> And thanks peeps. I have read that FAQ entry a few times, but never really made the mental map that this exact scenario is the worst case of it. (Which is exactly what's spelled out there.)
<peeps> no problem
<InPhase> Perhaps a version of this could even be added to the manual to help future versions of me make that mental map, as an example of how things go very wrong. :)
<InPhase> I will think about that in the evening or this weekend if no one else gets the urge.
milza has joined #openscad
jimusmallard has quit [Ping timeout: 252 seconds]
<teepee> hmm, I would not even know how to explain it in clear terms if I would not try to stay alive without getting a heat stroke ;-)
<teepee> and it's not even that hot, but probably 120% humidity
<InPhase> Remember to leave some space for air in the water you're breathing.
teepee- has joined #openscad
<teepee-> InPhase: good point, instead of buying tonic-water, I should have bought tonic-air :)
teepee has quit [Ping timeout: 268 seconds]
teepee- is now known as teepee
<teepee> that said, I'm happy a collegue on travel in dallas did not have too much water in his life the last couple of days
linext_ has joined #openscad
linext__ has quit [Ping timeout: 252 seconds]
ur5us has joined #openscad
ur5us has quit [Remote host closed the connection]
ur5us has joined #openscad
ghee has joined #openscad
j1mu5 has joined #openscad
j1mu5 has quit [Client Quit]
ur5us has quit [Ping timeout: 260 seconds]
j1mu5 has joined #openscad
j1mu5 has quit [Quit: Client closed]
noonien has quit [Quit: The Lounge - https://thelounge.chat]
noonien has joined #openscad
<J1A8465> the aspect ratio "lock" is not saved ..
<teepee> hmm
qeed has quit [Read error: Connection reset by peer]
qeed has joined #openscad
qeed has quit [Remote host closed the connection]
qeed has joined #openscad
<J1A8465> and as the  numbers doesn't change the window but only the image within .. nothing is saved
<teepee> yep, right now there's no code trying to save anything
<teepee> but it might make sense to add this
<J1A8465> if the numbers would change the window the window pos is saved  .. not sure what is easier
<teepee> there will be no window changes
<teepee> it simply does not work
<J1A8465> Ü thought so  -  saving the values would be nice though
<InPhase> There is an aspect ratio lock somewhere?
<J1A8465> checkbox
<teepee> yes, viewport control window
<InPhase> Oh. That thing is permanently hidden for me.
<teepee> how so?
<teepee> the "hide" menu entry not working?
<InPhase> Works fine if you actually click on it, which I never do. ;)
<InPhase> But I see it now.
<teepee> :)
<teepee> all features Michael likely uses for creating animations
<teepee> I wonder if that OpenGL fixing helps with the issues I've seen with his other still open PR for allowing animation export independent of the window size
<InPhase> That would be a reasonable feature. I'm regularly deforming my window for export, but it seems clunky.
<InPhase> Although the plus is you know what you're going to get. But it's a bit strange, and it means you can't go larger than what you're willing to try fit on the screen while making your window larger than the screen.
<teepee> hm?
<teepee> the PR uses an offscreen buffer so you can just define the size within limits of what the gpu driver allows
<InPhase> I mean that in the normal approach, if you want to export screen sized, you have to make the whole openscad window significantly bigger than the screen.
<InPhase> So the PR fixing that awkwardness would be a good thing. :)
<teepee> yep, although I had the issue clicking on "dump images" and the whole GUI went black
<InPhase> Ah, so still not working right.
<teepee> it does work most of the time, it sounds like the same or similar issue as the one with the right click
<InPhase> Oh. :( So maybe we have to actually track down where that other value is arising from.
<InPhase> We did give it a really good try.
<teepee> yeah, I now
<teepee> *know
<InPhase> Perhaps a breakpoint in Qt or recompiling it with a stacktrace dump or something would do it, but that sounds like a lot of effort.
* teepee runs away screaming
<InPhase> I have the stacktrace dump code already... But recompiling Qt doesn't sound fun.
<peeps> isn't that what debian dbg packages are for?
<teepee> normally yes
<teepee> I don't know if there's dbg for Qt though
<InPhase> Not in my ubuntu repository.
<InPhase> Or at least not that I have found.
<teepee> W: Cannot find debug package for /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (1c45f904da0d943ea454cf22801c8011962f4906)
<peeps> you have to add debug symbol repo to your software sources
<peeps> its an optional checkbox for me, on mint 21
<teepee> ah, I was searching for that
ur5us has joined #openscad
<teepee> right, "debian-debug" https://wiki.debian.org/DebugPackage
<teepee> yes, with "deb http://deb.debian.org/debian-debug/ testing-debug main" the find tool gets all the dbgsym packages
Colere has quit [Read error: Connection reset by peer]
Colere has joined #openscad
lastrodamo has quit [Quit: Leaving]
zingos8 has joined #openscad
tcurdt has joined #openscad
galaxy_knuckles has joined #openscad
dTal has quit [Ping timeout: 244 seconds]
Wolf481pl has joined #openscad
ecraven has quit [Ping timeout: 252 seconds]
redlizard_ has joined #openscad
Scopeuk has quit [Ping timeout: 268 seconds]
juri__ has joined #openscad
TheCoffeMaker_ has joined #openscad
LordOfBikes has quit [*.net *.split]
splud has quit [*.net *.split]
redlizard has quit [*.net *.split]
juri_ has quit [*.net *.split]
TheCoffeMaker has quit [*.net *.split]
zingos has quit [*.net *.split]
marcus has quit [*.net *.split]
Wolf480pl has quit [*.net *.split]
gknux has quit [*.net *.split]
tcurdt- has quit [*.net *.split]
galaxy_knuckles is now known as gknux
zingos8 is now known as zingos
LordOfBikes has joined #openscad
marcus has joined #openscad
splud has joined #openscad
teepee_ has joined #openscad
teepee has quit [Ping timeout: 268 seconds]
teepee_ is now known as teepee
dTal has joined #openscad
ecraven has joined #openscad
teepee has quit [Remote host closed the connection]
teepee has joined #openscad
Scopeuk has joined #openscad
snaked has joined #openscad
ran has joined #openscad
qeed_ has joined #openscad
qeed has quit [Ping timeout: 252 seconds]