<ccox>
Does OpenSCAD allow any unicode glyph in variable or function names? It appears to allow it, but doesn't work with many glyphs (russian, chinese)
<ccox>
ok, it doesn't work with anything other than basic low ascii.
<ccox>
Jake - fun, but a lot of cleaning needed to keep the chocolate edible. Also, so far they're all low resolution paste extruders.
<JakeSays>
ccox: well, it's chocolate. i wasn't expecting anything grand
<teepee>
no, not allowed right now and difficult with the current lexer
<teepee>
unicode is only available in strings and in comments I think
<ccox>
unfortunately that limitation does not seem to be documented anywhere I can find on the public websites.
<teepee>
documented probably not, but there's a ticket asking for unicode support for variables
ferdna has quit [Quit: Leaving]
raboof_ has joined #openscad
<InPhase>
teepee: I will make all my future OpenSCAD variables 0 followed by different numbers of zero-width spaces.
niyawe has joined #openscad
dTal_ has joined #openscad
<ccox>
^ and people wonder why developers don't like messing with unicode ;-P
HannoBraun[m]1 has joined #openscad
<InPhase>
:) 0_0 = function () 0_0; echo (0_0());
t-paul[m]1 has joined #openscad
raboof has quit [Ping timeout: 240 seconds]
wed has quit [Ping timeout: 240 seconds]
epony has quit [Ping timeout: 240 seconds]
dTal has quit [Ping timeout: 240 seconds]
HannoBraun[m] has quit [Ping timeout: 240 seconds]
<peeps[zen]>
also the str_utf8_wrapper class, defined in value.h, is meant for caching/memoizing the total char length to avoid performance hit
califax has quit [Remote host closed the connection]
<ccox>
peeps - I checked that and a few other functions I found. But so far the errors I've been looking at have been relatively simple.
califax has joined #openscad
<ccox>
I've still got one difficult to reproduce case to track down, but it only seems to happen sometimes, with 4 byte unicode in strings AND in a variable name.
<InPhase>
Jack22: Your last one there is an interesting parse effect. The lexer was working overtime on that one.
<Jack22>
i wonder how a literal can work in a loop .. but using the search result of the literal in itself as a cube size - priceless
<Jack22>
for( C8=[":)","C8","C8"])echo(C8); is clear but string:string:string is what?
LordOfBikes has joined #openscad
<ccox>
yes officer, I'd like to report several cases of parser abuse.
<Jack22>
what ... for( a=["a":a:a])echo(a); .. sorry can you repeat?
<Jack22>
i think this shouldn't work
<lf94>
does peeps(zen) mean you're high
<JakeSays>
is 0_0 a valid identifier?
stonkey has quit [Ping timeout: 256 seconds]
<ccox>
JakeSays: sadly, yes.
<ccox>
Really should change the lexer to require a leading character and only allow numbers or underscore after.
<ccox>
So right now __ is also a valid identifier. 0_0 = 1; __ = 3; echo( 0_0, __ );
<peeps[zen]>
lf94: no, it means my (Ry)zen computer had to auto-reconnect and peepsalot was still taken.
<JakeSays>
ccox: wonder how much code would break with that change
<JakeSays>
ccox: i assume you mean letter followed by alphanumeric + _
<JakeSays>
[a-Z]([a-Z0-0_]+)?
<ccox>
Jake - yes
<JakeSays>
er
<JakeSays>
[a-Z]([a-Z0-9_]+)?
fling has quit [Ping timeout: 240 seconds]
GNUmoon has joined #openscad
fling has joined #openscad
<ccox>
Jake - it breaks the fonts examples and text-search-tess that use 8bit_polyfont as a function name
<ccox>
s/tess/tests/
<ccox>
And the expression is "$"?[a-zA-Z][a-zA-Z0-9_]*
<JakeSays>
ccox: the a-Z is pseudo-shorthand for a-zA-Z
lastrodamo has joined #openscad
ferdna has joined #openscad
RB_ has joined #openscad
<RB_>
Hello :)
RB_ has quit [Client Quit]
BD has joined #openscad
ferdna has quit [Quit: Leaving]
<ccox>
Jake - you'd also find that your + is a mistake, because a variable named "a" would fail. Well, I now have the appropriate expression if we wished to change it, but probably won't because of fonts.scad.
* Jack22
thinks 2D and 3D are useful variable names and has 7Segment as a module
BD has quit [Remote host closed the connection]
BD_ has joined #openscad
epony has quit [Quit: QUIT]
epony has joined #openscad
<Jack22>
ccox so superseding keywords is not working - not sure if it wise to use but as i can redefine a `module cube()` which supersedes the original `cube()` it would be logical that this works for the keywords too
Zauberfisch_ is now known as Zauberfisch
<JakeSays>
ccox: it wouldn't fail because of the grouping
<JakeSays>
[a-Z]([a-zA-Z0-9_]+)? - would match 'a'
<Jack22>
ccox ok now i have used up all 10 Keywords - Ü
<JakeSays>
so has render() as a function gone anywhere?
<Jack22>
JakeSays: you mean to extract points?
<JakeSays>
Jack22: yeah
lastrodamo has quit [Quit: Leaving]
Guest7 has quit [Quit: Client closed]
<Virindi>
ooh, replacing cube()? That sounds great. I never use cube() anymore, I found it is 1000x more clear to define cubes by minx,maxx,miny,maxy,minz,maxz
<Virindi>
defining a size and then translating it becomes a huge mess everytime because the translation almost always includes some terms negating the size
Jack2286 has joined #openscad
<Virindi>
using center=true makes it even more confusing to read
dTal_ is now known as dTal
<JakeSays>
Virindi: i'm just the opposite - size makes a lot more sense to me
Jack22 has quit [Ping timeout: 256 seconds]
<Jack2286>
Virindi: probably what you are used to and one is easy to translate into the other
Jack2286 is now known as Jack22
<Jack22>
but in general you work with reference points which is either center or the corner
<Virindi>
with translate+size, the formulas for both are almost always more complicated and include duplicated terms :)
<Virindi>
I mean
<Jack22>
when you have multiple cubes in a loop you just need to translate them while in your case you need to alter the values that also change the size
<Virindi>
the most typical scenario for me is I have some formula for where I want the left side to be, and some formula for where I want the right side to be, etc
<Jack22>
translate moves this to the corner and size determine the other corner of the cube
<Virindi>
yeah but if you want one side to be at (a+b*c) and the other at (d+e*f), it is
<Virindi>
translate([a+b*c])
<Virindi>
vs.
<Virindi>
mycube(a+b*c, d+e*f);
<Virindi>
cube([(d+e*f)-(a+b*c)]);
<Jack22>
sometimes a cube that is centered only on xy is usefull .. which can be done with linear_extrude (10)sqare(10,center=true);
<Virindi>
if in the first one you are changing something and accidentally only change one copy of "a+b*c", you have a problem
<Virindi>
wow, sorry, your 'useful' even harder to read :P
walterwhip has joined #openscad
<Virindi>
the goal of code should be to be as simple and easy to read as possible :P
<Virindi>
linear extruding a square is just 'clever', takes a moment of looking at it to understand what you are trying to accomplish
<Jack22>
virindi that is why you can use and make modules - but also your mind will learn to parse complex code after a while when you are ready for it - just training
<Virindi>
more like you learn tokens. for example, if you use linear_extrude square often, you will remember it. but someone who hasn't ever seen your code will be confused
<Virindi>
even if they have used openscad for years
<Jack22>
another way is to use a cylinder($fn=4);
<Virindi>
oh my god, why
<Virindi>
is your goal in writing these to show off how clever you are :P
<Jack22>
or a sphere($fn=4);
<Virindi>
so you're saying your code is a flex
<Jack22>
i am using round corners a lot so i have my own modules i use .. and some have multiple options for "center"
<Virindi>
I have been using openscad for 10 years and I would have no idea what fn 4 with a sphere looks like, I would have to test it to find out
<Jack22>
it is a cube
<Virindi>
obviously.
<Virindi>
I gathered that from your statement.
<Virindi>
but I wouldn't have known.
<Virindi>
because who uses sphere() to make a cube??
<Jack22>
if you need the dimension over the corner .. instead you would use a cube(sqrt(2) size );
<Virindi>
that is incorrect unless both sides are the same length
BD_ has quit [Remote host closed the connection]
<Virindi>
whatever, it is silly, my goal is to use as little cleverness as possible, so a monkey could read and understand what I wrote :)
<Virindi>
and to that end, defining a cube by its min and max coordinates is very useful, that is all I was saying
<Jack22>
sphere(10,$fn=4);
<Jack22>
cube(sqrt(2)*9.9,center=true);
<Virindi>
in my version, I don't even make it min and max, but any two corners. It is so useful that I use it in 99% of cases and once I started using it I didn't want to use the stock one again
<Virindi>
any two opposing corners*
<Jack22>
lets say you need a chamferd cube that is size 50
<Jack22>
minkowski(){
<Jack22>
cube(40,true);
<Jack22>
cylinder(10,d=10,$fn=4,center=true);
<Jack22>
}
<Jack22>
if you do this with your version it needs more calculation
<Virindi>
I never use minkowski, it slows things down
<Virindi>
my version has chamfering builtin.
<Virindi>
it achieves it by subtracting an edge, etc
<Jack22>
no it doesn't if you use it for a cube .. only if used for concave objects
stonkey has joined #openscad
<Jack22>
virindi for simple objects your cube definition is nice .. when useing more complex arrangements it doesn't make things simple like you need an array of cubes for(x,y,z)
<Jack22>
Virindi: how does your code looks for this for (x=[0:2:10],y=[0:2:10],z=[0:2:10])translate([x,y,z])cube(1.5);
<Virindi>
First of all, 99% of the time I just need one cube. Second, that is not true. When I do an array I will compute a base coordinate at the top of the loop and then construct objects as an offset from that base
<Virindi>
making some complex 3d grid is definitely an unusual case
<Jack22>
as i said for simple things yours is fine .. i am using more complex geometry
<Virindi>
how are you going to manufacture that? a 3dp with soluble support or powder bed? not a normal 3dp or 5-axis cnc...
<Jack22>
but that is the great thing on openSCAD - a solution for everyone and every workflow
<Jack22>
the 3mf is also printable without supports
<Virindi>
sure, if you are making 'math demo' objects not mechanical assemblies :)
<Jack22>
where is the 3mf a "math demo"
<Jack22>
the animation is but not the printable geometrie
walterwhip has quit [Quit: My MacBook Air has gone to sleep. ZZZzzz…]
<Virindi>
just a big difference in what we are trying to accomplish
<Jack22>
however if you found a solution that is working for you - it is all that counts. But there is a reason why the standard cube definition is via a reference point in all CAD software or Unity or any 3D tool - at least internally
<Jack22>
i mean sure you can build all geometry as polyhedron without any rotate or translate - Ü
BD has joined #openscad
linext_ has quit [Read error: Connection reset by peer]
<teepee>
ccox: tip for PRs, if you reference the issue using "(fixes #1234)" at the end of the PR title, it will auto close those at merge
BD has joined #openscad
BD has quit [Ping timeout: 256 seconds]
BD has joined #openscad
BD has quit [Ping timeout: 250 seconds]
BD has joined #openscad
BD has quit [Quit: Leaving...]
<teepee>
poll: GSoC this year? ..... [ ] yes / [ ] no
ferdna has joined #openscad
<InPhase>
teepee: Yes. :)
<InPhase>
Although it would sure be nice if they switched back the format...
<teepee>
it's even more different this year, with both long and short projects possible
<InPhase>
Ok.
<teepee>
plus more people eligible, e.g. not just students
<teepee>
this can be a good thing, but there's potential for quite a mess too :)
<InPhase>
The short projects are structured such that if I were advising a strong student, I would specifically advise them to not pursue GSoC, because a strong student can generally get twice as much money and twice as much experience over the summer.
<InPhase>
Unless they had backpacking plans, or no need for money or something.
<teepee>
yeah, that's a good point
<InPhase>
But I'm sure google got that sort of feedback in multiples already.
<teepee>
probably, I did not follow the virtual mentor meetup, but there was some on the mailing list too
<teepee>
unsurprisingly quite different views, but I mostly ignored that as it's pretty much reading a crystal ball anyway
<Jack22>
i assume they don't offer a scad challange?
<teepee>
challenge in what way?
<teepee>
it's meant to show people how open source projects work by giving them a stipend over a span of time in the summer
<Jack22>
isnt GSoC that you have to master a task?
SamantazFox has quit [Ping timeout: 240 seconds]
<teepee>
there's project proposals but you can bring your own task too
<Jack22>
writing a library?
<teepee>
so I suppose the restriction is a bit like "it has to be coding which benefits the open source project in some way"
<teepee>
well, that's not strictly required, but if there's not even a hint of some useful outcome, the motivation to mentor is a bit low :)
<teepee>
as scad is code, I would assume this qualifies too
<Jack22>
and it is around 175-350h
<teepee>
I think we had a proposal for that at some point
<teepee>
yes, short ~175h and long ~350h projects possible this year
<Jack22>
so you sit 40 days in a lifestream with others ..
<teepee>
nope
<teepee>
you work on the project however you like and discuss via IRC :)
<teepee>
well, I guess it would be allowed to do streams but that means the mentor needs to have both the time and the matching timezone
<Jack22>
so it is like the support you guys offer here - but just for a bigger project and not hundreds of small client problems
<teepee>
I guess you could say that, yes
<teepee>
usually more targeting changing the C++ code base
SamantazFox has joined #openscad
Guest7 has joined #openscad
<Guest7>
One more question guys.. If the font is not in the help fonts list, how do I get it there? Do I have to redownload the font?
<teepee>
what OS?
<Guest7>
Windows
<teepee>
which one?
<Guest7>
64
<Guest7>
10
<teepee>
there's an issue with picking up fonts on win10, can you install system-wide (= "for all users")
<teepee>
?
<Guest7>
??
<teepee>
otherwise you could also put the font file into the same folder and and do "use <font.ttf>"
<teepee>
install font as administrator
<Guest7>
ah..okay let me do that
<teepee>
OpenSCAD has currently trouble picking up fonts only installed for the normal user account
<Jack22>
Guest7: you can use use<font.tty> to register the font independently from windows
<Jack22>
nothing new used here .. (just updated the template with the new version number)
<teepee>
indeed, just did git pull and it still complains :P
<teepee>
neat, I'll try that once the current print finishes
<Jack22>
i am sitting on my version .. as i am to lazy and like to have version 22|022 for a release - Ü
<lf94>
Have you guys tried conductive pla / material for printing
<lf94>
Imagine a dual extruder with TPU and that stuff
<lf94>
You could do buttons
<lf94>
Or print-in-place switches
<Jack22>
lf94 different plastic often didn't adhere
<Jack22>
so you have to work with undercuts
<lf94>
do some magic
<Jack22>
but a thin enamel wire is much smaller
<teepee>
I like that release number
<Jack22>
sadly it is already 22|025 (but nobody knows)
walterwhip has joined #openscad
ur5us has joined #openscad
GNUmoon has quit [Remote host closed the connection]
lastrodamo has quit [Quit: Leaving]
GNUmoon has joined #openscad
lostapathy has quit [Quit: WeeChat 2.8]
<teepee>
ah, I see, because it starts with 1 after solstice?
<teepee>
well, there's still 22|222
lostapathy has joined #openscad
<lf94>
I find date versioning is the best
<teepee>
that is date versioning :)
walterwhip has quit [Quit: My MacBook Air has gone to sleep. ZZZzzz…]
walterwhip has joined #openscad
ur5us has quit [Ping timeout: 256 seconds]
<gbruno>
[github] ChrisCoxArt opened issue #4050 (Error highlight not cleared after fixing error in documents with unicode text before the error location). https://github.com/openscad/openscad/issues/4050
SamantazFox has quit [Ping timeout: 240 seconds]
la1yv_b has quit [Read error: Connection reset by peer]
la1yv_b has joined #openscad
SamantazFox has joined #openscad
<InPhase>
Base 62 date versioning for today's date: m1f It has a y2k62 problem, but I should be retired before then so that's okay.
<InPhase>
I guess that needs to be M1F to ascii sort properly. Let's go with that.
qeed has quit [Read error: Connection reset by peer]
qeed has joined #openscad
<InPhase>
teepee: Self-reflecting on GSoC, I think my mentoring motivation was lower last year than previous years. It seemed like a small project and I was less enthusiastic about its impact, but I also remember I couldn't really think of things to suggest come project suggestion time.
<InPhase>
teepee: I'll try to rally myself more when it comes time to propose projects this year.
<teepee>
the time is pretty much now, deadline for application in about a month
<teepee>
and I have notes for a new one for improving the 3d view
<InPhase>
Things that pop to mind... Smashing something like ClosePoints into polyhedron. Requires someone undaunted by numbers and trig, but probably not a whole summer unless the multmatrix bonus features are integrated as well.
<InPhase>
Also we could really use some texturing options in the display. I know peeps[zen] was digging into that so we'd need to see where he got and whether he thinks it would be something appropriate for a summer student project.
<InPhase>
It's a good sales pitch feature if we can just make things look really pretty.
<teepee>
yeah, even just the shader part would open lots of options
<InPhase>
Yep.
<InPhase>
It would be easy to add commands to label material information on pieces, but I don't know how to handle propagating that or what to do with it after the labeling, so I suppose that's not viable yet until we get more of a clue about what we're doing. ;)
<peeps[zen]>
yeah i was working on integrating that magnum gl library, but didn't get very far. our cmake setup was not very good for submodules, but i've recently fixed that in the mimalloc PR, so that's one step closer at least
<teepee>
hmm, that sounds like a tricky gsoc project then
<InPhase>
peeps[zen]: Do you think it's more viable for a summer project in the current state? Consider we can label them easy, medium, and hard in the issue list.
<teepee>
current list of bullet points for the view is 1) allow different shaders 2) support quad display 3) integrate almost finished anaglyph
<InPhase>
teepee: What do you think about object literals?
<InPhase>
I'm really thinking about the frequent requests for tracking information about parts... But maybe object literals is the generic way to set us up for that.
<peeps[zen]>
the cmake stuff was just one little stumbling block, there's still a ton of work to do to implement a low level GL api like magnum, so I don't feel it would be good for a student project
<InPhase>
Ok.
<InPhase>
I thought maybe it would be more cookie cutter at that point, but that's why I asked. :)
walterwhip has quit [Quit: My MacBook Air has gone to sleep. ZZZzzz…]
<peeps[zen]>
the way the VBO feature is in there, its like the rendering code is duplicated in a way, was hoping to unify it by moving to that lib.
<peeps[zen]>
i suspect there is some discrepancy between the way that fixed function opencsg calculates depth values, and then the way that shader based painting fills them in
<peeps[zen]>
OpenCSG relies on GL_EQUAL for depth comparison in some places, so it has to be exactly the same calculation. i'm guessing the mix of fixed pipeline and shader are at odds
<peeps[zen]>
unrelated, but maybe a good project would be adding error/warning info to Geometry objects. that way CGAL errors might be easier to link back to source lines, and cached geometries can replay their warnings
walterwhip has joined #openscad
<Jack22>
inPhase what is M1F ?
<peeps[zen]>
that's just been on my mind recently, since it seems that the "mesh not closed" is tripping up a lot of users and not providing much feedback for what to fix
<InPhase>
Jack22: M = 22, 1 = 1, F = 15
<InPhase>
Jack22: Just take hex and keep on going through capital then lowercase.
<peeps[zen]>
i'm not sure adding that check was the right choice. it catches errors before they could cause a crash... but also is even more strict than before, as previously some geometries were able to pass through CGAL ops without error even though they may have been malformed
<InPhase>
peeps[zen]: error / warning info for geometry info would be great. I don't have a quick mental image of how that flows through the pipeline, but if you think it's achievable it would be a nice one.
<InPhase>
I don't think being a little extra strict is a problem, as I can imagine that being loose at things malformed just risks designs being mysteriously unstable under parametric adjustments.