extor has quit [Remote host closed the connection]
snaked has quit [Ping timeout: 260 seconds]
ur5us has quit [Ping timeout: 260 seconds]
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
ur5us has joined #openscad
snaked has joined #openscad
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
J1A843857181423 has quit [Ping timeout: 260 seconds]
ur5us has quit [Ping timeout: 260 seconds]
J1A84 has joined #openscad
J1A8427 has joined #openscad
J1A842777 has joined #openscad
J1A84 has quit [Ping timeout: 260 seconds]
J1A84277784 has joined #openscad
J1A8427 has quit [Ping timeout: 260 seconds]
J1A8427778431 has joined #openscad
J1A842777843123 has joined #openscad
J1A842777 has quit [Ping timeout: 260 seconds]
J1A8427778431239 has joined #openscad
J1A84 has joined #openscad
J1A84277784 has quit [Ping timeout: 260 seconds]
J1A8427778431 has quit [Ping timeout: 260 seconds]
J1A842777843123 has quit [Ping timeout: 260 seconds]
J1A8410 has joined #openscad
J1A8427778431239 has quit [Ping timeout: 260 seconds]
J1A84 has quit [Ping timeout: 260 seconds]
<J1A8410>
would it make sense if in min() max() undef values get ignored?
ur5us has joined #openscad
J1A841096 has joined #openscad
J1A8410 has quit [Ping timeout: 260 seconds]
JordanBrown has quit [Quit: East bound and down, loaded up and truckin']
<Scopeuk>
I do wish some of those "android tv boxes" we're natively available with a base linux install instead, they would make a great sbc alternative but they are so hit and miss at what hardware is actually in any given case even planning to replace the firmware your self is risky
JakeSays has quit [Ping timeout: 272 seconds]
ur5us has quit [Ping timeout: 260 seconds]
J1A841096 has quit [Quit: Client closed]
J1A841096 has joined #openscad
castaway has joined #openscad
teepee has quit [Ping timeout: 255 seconds]
teepee has joined #openscad
fling has quit [Remote host closed the connection]
teepee has quit [Remote host closed the connection]
fling has joined #openscad
teepee has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
fling_ has joined #openscad
fling has quit [Remote host closed the connection]
fling_ is now known as fling
ToAruShiroiNeko has joined #openscad
pah has quit [Ping timeout: 248 seconds]
teepee_ has joined #openscad
pah has joined #openscad
teepee has quit [Remote host closed the connection]
teepee_ is now known as teepee
ToAruShiroiNeko has quit [Remote host closed the connection]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
gunnbr has quit [Remote host closed the connection]
gunnbr has joined #openscad
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
teepee_ has joined #openscad
teepee has quit [Ping timeout: 255 seconds]
teepee_ is now known as teepee
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Excess Flood]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Ping timeout: 260 seconds]
pah is now known as pa
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
extor has joined #openscad
TheAssassin has quit [Ping timeout: 255 seconds]
ToAruShiroiNeko has joined #openscad
TheAssassin has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
ToAruShiroiNeko has quit [Read error: Connection reset by peer]
ToAruShiroiNeko has joined #openscad
Sauvin has quit [Ping timeout: 260 seconds]
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
JakeSays has joined #openscad
TheAssassin has quit [Remote host closed the connection]
TheAssassin has joined #openscad
<JordanBrown[m]>
J1A8410: Sounds plausible to me. I can't think of any reasonable way that somebody could be depending on current behavior.
<JordanBrown[m]>
Continuing the (somewhat pointless) discussion of precision from yesterday, today's xkcd is relevant: https://xkcd.com/2696/
<Friithian>
obama cat
Sauvin has joined #openscad
la1yv has quit [Ping timeout: 255 seconds]
la1yv has joined #openscad
KimK_ has quit [Read error: Connection reset by peer]
epony has quit [Remote host closed the connection]
KimK has joined #openscad
la1yv has quit [Remote host closed the connection]
la1yv has joined #openscad
la1yv has quit [Remote host closed the connection]
la1yv has joined #openscad
JakeSays has quit [Ping timeout: 248 seconds]
teepee has quit [Ping timeout: 255 seconds]
<InPhase>
JordanBrown[m]: I don't know the original discussion, but I chuckled at "I can't think of any reasonable way that somebody could be depending on current behavior". :)
teepee has joined #openscad
<InPhase>
JordanBrown[m]: The min/max/undef item? I checked and that does not appear to have been part of the recent work on standardizing undef returns.
<InPhase>
I concur that we should basically be able to treat "undef" returns on this as "the behavior is not defined", and behavior which is not defined could be later defined.
<InPhase>
It is within sensible options to skip over undef for min and max, but this can actually cause problems as often as it can fix them. In many cases, undef is the only clue something has gone wrong with the calculations for a model.
<InPhase>
If you are doing min and max on a list of values, and you semantically really wanted to only consider the defined ones, then you'd want the filter. But if you were, say, using max to clamp some value, but that value was never calculated in the first place, then you don't want it replaced with your clamping value. You want to preserve the undef so you get a failure that you can identify and fix.
<InPhase>
One can do the filter pretty easily though, if that is actually a specific intent: function defonly(a) = [for (e=a) if (!is_undef(e)) e];
la1yv_a has joined #openscad
la1yv has quit [Ping timeout: 248 seconds]
la1yv_a is now known as la1yv
<InPhase>
I think that in most cases, undef is an error that needs attention rather than a sentinel value to utilize. I've heard of some people using it as a sentinel value, but this is probably a much more rare case compared to the frequency with which it arises from errors.
pah has joined #openscad
pa has quit [Ping timeout: 260 seconds]
pah is now known as pa
epony has joined #openscad
ur5us has joined #openscad
ali12341 has joined #openscad
ali1234 has quit [Remote host closed the connection]
<J1A841096>
but undef is not a result but a not defined variable
<J1A841096>
InPhase if i use you function .. it will return [] and vector cant work with other in a min/max .. and removing the vector results in "undef" again and is not working
rogeliodh has joined #openscad
<InPhase>
J1A841096: I don't understand what you said there.
<J1A841096>
var=min(defonly(5),defonly(undef)) ;
<J1A841096>
and defonly(undef)[0] is undef again
<J1A841096>
so this only work if i put in the list a
J1A841096 has quit [Quit: Client closed]
J1A841096 has joined #openscad
<InPhase>
J1A841096: That was designed for var = min(defonly([5, undef]));
<J1A841096>
yeah i wondered why you make this so complicated until i realized this is for list inputs
<JordanBrown[m]>
InPhase yeah, that's a good point, that it's for error detection not just missing data.
<JordanBrown[m]>
If only the things that generated the undef in the first place were fatal errors...
<InPhase>
JordanBrown[m]: Yeah... Ship, sailed, and over the horizon, unfortunately. ;)
<J1A841096>
i use a lot of modules that have module foo(d,r) and one of them will be undef
<JordanBrown[m]>
yeah, it makes you want to emulate JavaScript and have two different kinds of not-defined-ness. (Actually, they have three.)
<JordanBrown[m]>
(Four if you count empty strings, empty arrays, empty objects, et cetera.)
<J1A841096>
strings probably also didn't work with min max
<InPhase>
JordanBrown[m]: Literally nothing makes me want to emulate JavaScript. ;) But you seem to have had a different experience.
<JordanBrown[m]>
Indeed they don't. Which is kind of silly, because comparison is defined, more or less, for all data types. It's probably actually harder to *not* support strings than to support them.
<JordanBrown[m]>
There are things that I hate about JavaScript. I'm a strict-type static-analysis kind of guy, and JS is actively hostile to those things.
<JordanBrown[m]>
Normally I don't like the N different kinds of emptiness, but sometimes there are reasons for them.
<JordanBrown[m]>
(Oh, I missed one, NaN.)
<JordanBrown[m]>
But it *is* fantastically powerful.
<InPhase>
linext: My first suggestion is because top(); is commented out?
<linext>
nope
<InPhase>
Well, it is...
<linext>
line 54 doesn't render
<linext>
oh maybe it's mirror()
<InPhase>
What's mirror([0,0,0]) even supposed to do?
<linext>
it's mirror([i,0,0]){
<linext>
mirror the X
<JordanBrown[m]>
Oooh, don't mess with mirror([0,0,0]). People who do that disappear, never to be seen again.
<InPhase>
linext: You probably wanted for (i=[-1:2:1])
<InPhase>
linext: I'm not sure what mirror([0,0,0]) does but it might wedge an invalid geometry into there.
<linext>
that'sa anoter way to do it
<InPhase>
linext: Which could remove parts from your design.
<linext>
yea, i'll just use i=[-1:2:1] to fix it
<linext>
is there an argument to allow mirror() to work in CLI mode?
<JordanBrown[m]>
Does mirror([1,0,0]) do anything different from mirror([-1,0,0])?
<JordanBrown[m]>
How can mirror() *not* work in CLI mode?
<linext>
wasm uses openscad in command line mode
<linext>
i'll test it out in Windows to be sure
<InPhase>
JordanBrown[m]: Oh, right. Also that does nothing different.
<InPhase>
linext: JordanBrown[m]'s comment is correct.
<JordanBrown[m]>
Sure. But my question stands. mirror() is just an OpenSCAD transformation module. It doesn't know nor care how you're running OpenSCAD.
<linext>
the results from wasm differs
<InPhase>
linext: So first you should think about what you actually meant to do with that mirror.
<linext>
confirmed
<linext>
mirror fails on Windows CLI with the same args
<linext>
e=fast-csg-remesh --enable=lazy-union --export-format binstl --summary all -o C:\Users\Jesse\Desktop\test.stl
<JordanBrown[m]>
I think that mirror() with no arguments used to default to [1,0,0] and somebody broke it at some point, so if you have two different versions of OpenSCAD then that could be a factor. Other than that, it doesn't know.
<InPhase>
I see what's happening. mirror([0,0,0]) seems to be doing no mirroring. But this is not a thing to rely on, because it doesn't make sense.
<InPhase>
So it was actually the 0,0,0 that made it work out.
<InPhase>
Then the mirror of -1,0,0 and 1,0,0 were redundant.
<linext>
yea, it only needs i=[-1:1:0]
<InPhase>
I'm not sure if mirror([0,0,0]) being a no-op is specified or intended behavior.
<InPhase>
This might be an implementation artifact.
<JordanBrown[m]>
Yeah, I wouldn't depend on it. There's an excellent argument that it should be considered an error.
<linext>
so..
<linext>
it appears that mirror[0,0,0] does nothing
<linext>
and mirror[#,0,0] where # is a non-zero integer will mirror
<JordanBrown[m]>
It looks like you're trying to take an object and create a mirror duplicate of it, right?
<linext>
yes, the ears on the top need to be on each side
<InPhase>
linext: Yes, mirror takes only a vector specifying the normal of a surface. Only its direction matters, and 0,0,0 has undefined direction.
<JordanBrown[m]>
that is, you want two copies of the obejct.
<JordanBrown[m]>
I have a module mirrordup() for this purpose.
<JordanBrown[m]>
Something a lot like
<linext>
hmm...
<InPhase>
linext: I always handle this by putting it into a module, and doing EdgePiece(); mirror([1,0,0]) EdgePiece();
<JordanBrown[m]>
module mirrordup() {
<JordanBrown[m]>
children();
<JordanBrown[m]>
}
<JordanBrown[m]>
mirror([1,0,0]) children();
<linext>
is there a way to tell what arguments the GUI is using?
<JordanBrown[m]>
What do you mean by "arguments"?
<linext>
i wonder if it gets caught in WMIC
<InPhase>
JordanBrown[m]'s solution is another valid approach. Although it sure doesn't hurt to break down things into some extra modules.
<linext>
yes, i understand that it can be fixed
<linext>
i just don't understand why it breaks in wasm and not the regular GUI
<JordanBrown[m]>
That is indeed interesting.
<InPhase>
linext: It might be instability of the underlying libraries upon receiving an undefined direction for mirror.
<InPhase>
linext: Like between versions.
<JordanBrown[m]>
So strip it down to its barest pieces.
<JordanBrown[m]>
Hah. The implementation treats [0,0,0] as a no-op.
<JordanBrown[m]>
Like I said, take the program and strip it down to just the part that doesn't behave in the expected way.
<JordanBrown[m]>
Spacemouse WIreless is ~$180 at Amazon. Not cheap, but cheap enough that if you're DIYing for the price difference you need to get a job that pays better.
<JordanBrown[m]>
Hmm. I commented out the for and the mirror, and now it's taking forever to F5.
<JordanBrown[m]>
And now trying to create a new program just hangs loading the web page.
<Scopeuk>
with these there is also diy because 3dconnexion have a monopoly and that's bad for all of us
<Scopeuk>
also brining myself to spend 180 on a space mouse I'll use once in a while is hard compared to bring myself to spend 20 to 30 on parts to do a small project that ends up in having something fun
<JordanBrown[m]>
As I said, "if you're DIYing for the price difference".
<JordanBrown[m]>
If you're doing it for fun, that's a whole different question.
<Scopeuk>
I think I would be tempred to modify it to hold the pots in a printer frame rather than solder down to a large pcb but that is without doubt personal preference
<Scopeuk>
printed**
<JordanBrown[m]>
linext InPhase: it's at least partially a lazy-union problem.
teepee has quit [Remote host closed the connection]
teepee has joined #openscad
snakedGT has joined #openscad
snaked has quit [Read error: Connection reset by peer]