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 or report bugs: https://goo.gl/lj0JRI | Tutorial: https://bit.ly/37P6z0B | Books: https://bit.ly/3xlLcQq | FOSDEM 2020: https://bit.ly/35xZGy6 | Logs: https://libera.irclog.whitequark.org/openscad | don't ask to ask
snakedGT has quit [Quit: Leaving]
Jack21 has quit [Quit: Client closed]
snaked has joined #openscad
snaked has quit [Remote host closed the connection]
snaked has joined #openscad
ubitux has quit [Ping timeout: 264 seconds]
ubitux has joined #openscad
LordOfBikes has quit [Ping timeout: 256 seconds]
nspuma_ has quit [Remote host closed the connection]
LordOfBikes has joined #openscad
nspuma has joined #openscad
af has quit [Ping timeout: 256 seconds]
crazy_imp has quit [Ping timeout: 264 seconds]
nspuma has quit [Ping timeout: 256 seconds]
crazy_imp has joined #openscad
crazy_imp has quit [Changing host]
crazy_imp has joined #openscad
nspuma has joined #openscad
nspuma has quit [Remote host closed the connection]
ferdna has joined #openscad
nspuma has joined #openscad
nspuma has quit [Ping timeout: 260 seconds]
submariner has quit [Remote host closed the connection]
nspuma has joined #openscad
peeps[zen] has joined #openscad
peepsalot has quit [Ping timeout: 256 seconds]
af has joined #openscad
ferdna has quit [Quit: Leaving]
ccox_ has joined #openscad
ccox has quit [Ping timeout: 268 seconds]
Junxter has quit [Ping timeout: 268 seconds]
Junxter has joined #openscad
peeps[zen] has quit [Quit: Connection reset by peep]
submariner has joined #openscad
Colt has quit [Quit: Leaving]
Colt has joined #openscad
Jack21 has joined #openscad
aiyion1 is now known as aiyion
ubitux has quit [Quit: bbl]
ubitux has joined #openscad
ubitux has quit [Client Quit]
ubitux has joined #openscad
arebil has joined #openscad
arebil has quit [Quit: My keyboard has gone to sleep. ZZZzzz…]
<Zauberfisch> is there an easy way to make a transition between to top walls and the bottom walls
<Zauberfisch> (see the gap)
<Zauberfisch> I want a nice transition between those
<Zauberfisch> would linear_extrude work here?
<ali1234> no
<teepee> are the 2 parts based on 2d shapes?
<ali1234> the easiest way to handle this is to model the inside and the outside separately
<teepee> then you could hull 2 thin versions
<ali1234> hull will fill the inside
<ali1234> so hull all the outside shapes, then hull all the inside shapes, then difference the two results
<ali1234> rather than trying to join together two hollow objects
<Zauberfisch> not based on 2d
<Zauberfisch> ali1234: I think that's what I am already doing. at least partially
<Zauberfisch> the bottom (in my code it's called middle) and the top part are each 2 hulls: difference() {outer(); inner();}
<ali1234> yeah thats the problem
<ali1234> differencing should be the very last step
<ali1234> because once you difference you can't join the two pieces together easily
<Zauberfisch> oh
<Zauberfisch> now I get it
<Zauberfisch> ah
<Zauberfisch> thank you
<Zauberfisch> you are right
<Zauberfisch> hull will make this very easy
<Zauberfisch> man, I love openscad
<Zauberfisch> never thought I'd be able to build 3d objects
<teepee> if you don't mind using a library, UB.scad has something for creating those kind of shapes
<ali1234> there's a million box/tray generators :)
<teepee> no, not boxes specifically
<ali1234> i think everyone makes their own at some point while learning openscad
<teepee> but some sort of polygonal rotate extrude :)
<Zauberfisch> I figured there probably are libraries
<Zauberfisch> but it's a good learning project
<teepee> like you define a 2d shape and it will move it around rectangular or hexagonal or so
<ali1234> openscad really needs a standard library that ships with the main program, if you won't add stuff to the core program :)
<teepee> true, doing things without libraries brings more insight
* teepee disagrees
<Zauberfisch> but also, my boxes need to be specific
<ali1234> it can have obvious trivial functions like mirrorkeep in it
<teepee> we need a better and easier way to discover and use libraries
<ali1234> well, modules
<Zauberfisch> I am building inserts and trays for the new tanos/festool systainer system
<ali1234> i use mirrorkeep in almost everything i do
<ali1234> it really should be an option on mirror()
<Zauberfisch> basically, I am rebuilding this: https://www.thingiverse.com/thing:4867741 in openscad so I can modify the wall-strength and generate the sizes I need
<othx> Zauberfisch linked to "Systainer Organiser Boxes by matthijsbos" on thingiverse => 1 IRC mentions
<ali1234> or mirror should be renamed flip() and mirror() should always keep the original
<ali1234> "discover and use libraries" pls don't turn it into node
<Alicia> I usually do mirrorkeep as a for-loop instead, for(mirrorx=[1,0])mirror([mirrorx,0,0]){/*stuff to mirror*/}
<ali1234> mirrorkeep(x) : children(); mirror(x) children();
<ali1234> fillet() and round() (and both together) are other ones that turn up everywhere
ubitux has quit [Quit: WeeChat 3.3]
ubitux has joined #openscad
<teepee> Rundrum(x = 40, y = 60, r = 5) shape();
<teepee> module shape() offset(-1) offset(2) offset(-1) { square([4, 20]); translate([2, 20]) square([4, 20]); }
<teepee> something like that :)
<teepee> well, not the complete box yet, still needs to be closed at the bottom
<ali1234> skin() is either the inside or the outside
nspuma has quit [Remote host closed the connection]
lastrodamo has joined #openscad
<gbruno> [github] mwbogucki opened issue #3981 ([Enhancement / wish-list] Add preference option to swap left and right mouse buttons.). https://github.com/openscad/openscad/issues/3981
noonien has quit [Quit: Ping timeout (120 seconds)]
noonien has joined #openscad
fling is now known as ciphersalad
ciphersalad is now known as fling
nspuma has joined #openscad
ur5us_ has joined #openscad
ur5us_ has quit [Ping timeout: 264 seconds]
nspuma has quit [Remote host closed the connection]
nspuma has joined #openscad
<gbruno> [github] t-paul edited issue #3981 (Add preference option to swap left and right mouse buttons.). https://github.com/openscad/openscad/issues/3981
_xxoxx has joined #openscad
Junxter has quit [Ping timeout: 260 seconds]
<InPhase> Zauberfisch: This is not the way I'd approach it from scratch. I'd try to go back and plan ahead for the junctions. But as an exercise in how to reuse your material, I tried using a projection, and it works out okay. https://bpa.st/TOOA But in the end I had to borrow a lot of variables from above to constrain and position it just right.
<Jack21> teepee  i feel honored ..  what about this Rundrum(x = 40, y = 60, r = 5) SBogen(2D=2,dist=3,r1=2);
<Jack21> if the recess  is angeled ( 75° instead of 90) you can print this without supports )
<teepee> nice
<teepee> even better than my version :)
<teepee> feature request: pick up $fa / $fs if fn is not given :P
<Jack21> yes i am working on that - if you use include it is given and automatically changed for render or (hires=true)
<Jack21> the problem is that i have to change every module that is using rotate_extrude instead of RotEx() where i already have included that
<teepee> ah, no rush, the default seems quite good
<Jack21> and i am just started with testing <use>  but a lot of things are not working, like the clearance (padding) variables are missing which are used in a lot of modules to overlap else you get these nasty z-Fighting and worse  sometimes gaps or non manifold geometry
<teepee> what would be a good approach to give that box shape a bottom?
<Jack21> whoa just checked Rundrum without $fn creates  the rot_extrud corners with $fn6 circles while the straights are $fn=5 how annoying
<teepee> ah, right, that's not visible with the flat top I think
<Jack21> Rundrum()
<Jack21>  Rund(0.9,5){SBogen(2D=2,center=false);
<Jack21>   mirror([1,0])square([20,2],center=false);
<Jack21> }
<Jack21> I can see the benefit of $fa and $fs but i don't like having no control over the fragments if their seize determine them - so you could have a small circle extruded with a large rotate_extrude
ur5us_ has joined #openscad
<Jack21> and uneven fragment numbers can surprise you .. had this sometimes that i got gaps because the flat edge didn't overlap .. so i work with 36 and 72 or 144 fragments
<Jack21> and for small details sometimes 24 or 12
<Jack21> this would be a new approach to the problem if   $fa would be quantisized depending on the size of an object.
<InPhase> Jack21: Rundrum does work pretty nicely for this problem. Next we need to get you to use spaces in your library if it's going to go and be useful for stuff like that. :)
<Jack21> everything below 1mm gets 12 fragments everything above 100mm gets 144
<Jack21> spaces?  what do you mean? the format.. there shouldn't be tabs
<Jack21> (and thx btw)
<InPhase> Jack21: Yeah like, between stuff. :)
ur5us_ has quit [Quit: Leaving]
<Jack21> [ 1 , 1 , 1 ]  instead of [1,1,1] ?
<InPhase> Some serious code golfing goes on and I get lost: rotate(-angle/2)rotate_extrude(angle=angle,convexity=5,$fn=fn)Strebe(skew=0,h=h,d=d,d2=d2,rad=rad,rad2=rad2,sc=1,grad=0,single=single,spiel=spiel,fn2=fn2,name=0,2D=2,help=false);
<Jack21> did you find that in Strebe itself .. i think for the 3D version it is calling itself  and so extruding its own 2D version
<Jack21> .oO (only thought people using the lib never thought some would look into the code - Ü could be embarrassing )
ferdna has joined #openscad
<InPhase> Jack21: An example of rearranging that section. https://bpa.st/CAXQ
<InPhase> There are many good choices for how.
<InPhase> And, yeah. As soon as you release a library like that, people are going to dive right into the code even if just to see how to use it. :)
<InPhase> ... which reminds me I still have a pile of openscad library github issues to process...
<InPhase> People started submitting a lot more stuff since I moved them from thingiverse to github.
<InPhase> Although this is probably a good sign that we have a vibrant community going on somewhere out there.
<Jack21> when copying that it looks weird - maybe because of my window size  but i try to merge this PR
<InPhase> That might have extended too far to the right. I was editing it in the pastebin instead of my code editor.
<InPhase> It was only intended to illustrate the general principles really.
<InPhase> Whitespacing to indicate logical divisions of things.
<Jack21>  i totally agree with you -  but i was amazed when i made the easter egg (line 652)  and want to hide some code ..  how well i still could read that  (probably not in two weeks anymore )
<Jack21>  Btw the idea of the help in the modules is that you don't need to look at the code just type Rundrum(help=true) and you get everything  (some modules have also some instructions but i got lazy to add all that text )
<teepee> I really would like to have that as dedicated feature
<teepee> e.g. having a documentation string with """ that is shown in editor
<Jack21> InfoTxt("title",v=["x",x],name=true);
<Jack21> v are text an value you wanna show
<Jack21> InfoTxt(help=true); Ü   (it is not v i have called the vector string  - what the hell was i thinking?
<Jack21> probably because it is converted into a string
lastrodamo has quit [Quit: Leaving]
<Jack21> as rotate extrude calculates $fs depending on the child size ..  this isn't something i can do with a module or?
Guest61 has joined #openscad
Guest61 has quit [Client Quit]
<InPhase> teepee: An easy approach for that is that any comment lines immediately preceding a function or module should be accessible from a right click menu, stripped of the comment marker, as help text.
<JakeSays> it'd be very handy to be able to tag a set of objects and then be able to 1) apply actions/attributes to a tag, and 2) be able to highlight a tag in the UI and get information on it (like bounding box, etc)
ferdna has quit [Quit: Leaving]
<InPhase> help(Foo); could be a special module to print those same comments to console.
<JakeSays> so if i did #tag("foo"); everything labeled as foo would be highlighted
<InPhase> help(Foo.scad) could follow the same logic, but any contiguous comments at the top of an external file, and with right click drop downs.
<InPhase> This is a common enough strategy anyway that many libraries would already work with it.
* JakeSays would prefer to see anything help related in something other than the console.
<InPhase> Well, a right click menu in the editor would be the primary method I think for people using the editor.
<JakeSays> it would be cool to support documentation comments (///<summary>...</summarY>)
<InPhase> But another method would be needed for all the people using other operating modes like command line or external editors.
<JakeSays> well external editors would use the language server :D
<JakeSays> and yeah for command line it would render to the shell console
<InPhase> We could later add in comment parsing, but just "dump the comments in these locations" would work as a first attempt I think.
<JakeSays> i vote for another tool window
<JakeSays> something that i can dock
<InPhase> But when do you output to it?
<JakeSays> when i click the |?| button
<InPhase> I wouldn't mind a separate help window, but I don't have a good mental image for the workflow.
<InPhase> Or, help tab.
<InPhase> I probably wouldn't undock it.
<JakeSays> well, without a language server proper it's not going to be much more useful than dumping to the console, but at least it wouldn't disappear when other stuff writes to the console
<InPhase> Like what, put a text entry in it where you do lookups like Rundroom then click [Get Help String].
<JakeSays> ugh. seriously. if i had the time i'd love to write a language server for this
<JakeSays> i thought it'd just dump comments in the currently focused editor window
<JakeSays> that would mean you'd have to view the module in the editor to get help
<JakeSays> at least by pushing a button
<JakeSays> or how about help <some/module.scad>
_xxoxx has quit [Ping timeout: 240 seconds]
<JakeSays> that would dump to the 'help' window
<JakeSays> that way you could get help on any module from an external editor
<Jack21> as we have these nice suggestions  for the build in objects -  is it possible to add own modules to that list? (haven't found a json for that)
<InPhase> It could also be from the dropdown menu, Help, Help Navigator, and then it opens a separate window with persistent state while the program is open that lets you do those lookups in the context of whatever the current tab is.
<InPhase> So if the current tab uses or includes modules, you get access to the help on all those.
<JakeSays> ah yeah that'd work well too
<JakeSays> i like that
<JakeSays> Jack21: what do you mean?
<Jack21> when i type  circle(  then i got this overlay with the options
<JakeSays> ah yeah right
<JakeSays> well, we need a language server, dammit
<JakeSays> i might have to find the time to write one
<Jack21> something different - why does i get a warning for this  echo(search("a",[["b"],["c"]]));    i expect that not everything is in the list and how can i disable the warning
<JakeSays> what's the warning
<Jack21> "a" not found
<JakeSays> ah
<Jack21> WARNING: search term not found: "a" in file , line 7
<JakeSays> interesting.
<Jack21> and annoying at the same time - Ü
<InPhase> search is a bit of a questionably designed beast by this point in the language's evolution.
<Jack21> when searching for multiple this doesn't occur
<Jack21> so i guess i have to loop not the query but the results
<InPhase> Jack21: What I'd recommend is making a CleanSearch function that appends the target of the search, then filters out the last entry.
<JakeSays> InPhase: did my tagging idea make sense?
<Jack21> in that case i would need to add all targets to the list ..   - just try to get something like " found target in list" (true)  and not a vector of results
<InPhase> JakeSays: There is a need to mark things in some manner, like marking subcomponents, marking colors, and marking materials, but I'm not sure how the tagging you proposed fits into the general needs I'm picturing for markup.
<JakeSays> InPhase: well, here's an example: i have a screw mask that i use to put screw holes in a design. lets say i have 25 screw holes and i want to # them all. if each one was tagged as "screw" then i could just do something like #tag("screw");
<JakeSays> basically it's a way to semantically group objects
<JakeSays> then i could do 'color("blue") tag("screw");
<JakeSays> which would overwrite any coloring on those objects, etc
<Jack21> haha  $parent_modules is an unknown variable if there are no parent modules
<InPhase> JakeSays: That sounds awkward. Effects could come from all over?
<InPhase> What if color("blue") tag("screw"); is in one module, does it affect other screws in other modules?
<InPhase> Do these follow special variable scoping? Lexical scoping?
<InPhase> Are they global variables one per propgram that could propagate upward from anywhere?
<InPhase> s/propgram/program/
<JakeSays> actually no i was thinking they were module specific
<InPhase> Do they affect called modules within a module?
<JakeSays> i dont think so
<JakeSays> well, no. they'd be scoped to the file, not the module
<InPhase> We don't have a file scope.
<JakeSays> ah. that's too bad
<InPhase> We could of course introduce one if sufficiently justified, but mismatched structures of stuff can be confusing.
<JakeSays> it's a design aid
<JakeSays> pretty much like color
<Jack21> how can i check for a non existing variable?
<JakeSays> is_undef()
<JakeSays> InPhase: having a file level scope would be great for 'private' values
<Jack21> JakeSays that worked (while variable?true:false didn't)  thx