<HimeHaieto>
well...they're talking about 3d modelling, not 3d cad, not the same thing
ur5us has quit [Ping timeout: 260 seconds]
TheCoffeMaker has quit [Ping timeout: 260 seconds]
J231 has joined #openscad
J23 has quit [Ping timeout: 260 seconds]
ali1234 has quit [Remote host closed the connection]
ali12341 has joined #openscad
fury999io has joined #openscad
hypera1r has joined #openscad
hypera1r has quit [Changing host]
hypera1r has joined #openscad
fury999io has quit [Remote host closed the connection]
fury999io has joined #openscad
fury999io has quit [Client Quit]
guso78 has joined #openscad
guso78 has quit [Client Quit]
ur5us has joined #openscad
milza has joined #openscad
ur5us 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
voxpelli has quit [Ping timeout: 255 seconds]
voxpelli has joined #openscad
Guest25 has joined #openscad
L29Ah has quit [Read error: Connection reset by peer]
stevegenoud has joined #openscad
ur5us has joined #openscad
Guest25 has quit [Quit: Client closed]
ur5us has quit [Read error: Connection reset by peer]
L29Ah has joined #openscad
stevegenoud has quit [Quit: Client closed]
L29Ah has quit [Read error: Connection reset by peer]
L29Ah has joined #openscad
J231 has quit [Ping timeout: 260 seconds]
J23 has joined #openscad
stevegenoud has joined #openscad
<stevegenoud>
Hei, I have been working for a little while on a js library for code CAD in the browser. https://replicad.xyz/ I'd be interested if some of you would like to try it and send me some comments!
<InPhase>
stevegenoud: The display is pretty. What sort of language have you gone with there?
<stevegenoud>
It is just javascript (typescript). So you can create any kind of pure frontend app with it. https://deckinabox.sgenoud.com/ is the project that led me into writing this. I wanted to be able to generate boxes with separators with a nice interface. It led me to create my own API on top of opencascade
<JordanBrown[m]>
Hmm. In replying to #4520, I realized that although it is expensive to get the bounding box in the general case, it's quite cheap in a lot of cases - as long as there are no differences or intersections involved. Probably some other restrictions. Perhaps, once we have geometry literals, we should also have a bbox() function that derives a bounding box, optimizing when possible. It wouldn't need to do a full render if there are no
<JordanBrown[m]>
problematic operations. (For extra credit, if the bounding box of the inputs to a difference or intersection is a subset of the bounding box of another part of the model, you don't have to render that difference or intersection.)
<teepee>
depends on the need of *minimal* bounding box :)
stevegenoud has joined #openscad
<teepee>
and even for minimal there's at least 2 different ones supported by CGAL
<Scopeuk>
I think bounding box xyz (possibly pairs to define box position also) fixed to the axis of the part are probably more useful, I have to imagine most people want it for relative positioning
<JordanBrown[m]>
And indeed maybe a "maximal" bounding box function, which *would* be cheap, would be valuable.
peeps[work] has joined #openscad
<JordanBrown[m]>
When I say "bounding box" I mean both the origin and size of that box.
<teepee>
I guess the normally expected one is what cgal calls aligned, so it's axis aligned regardless of the object orientation
<JordanBrown[m]>
At least I think a maximal bounding box function would be cheap. It would be cheap for union, difference, intersection, hull, and I think minkowski. Not sure about resize; I'd have to reread the docs.
<JordanBrown[m]>
Yes, I assume axis aligned.
<JordanBrown[m]>
"the smallest rectangular prism that can enclose the model" is an interesting idea, but seems much much harder.
stevegenoud has quit [Ping timeout: 260 seconds]
<JordanBrown[m]>
Am I the only one who is annoyed that the simple concept of a rectangular prism requires such a complex phrase to say?
<teepee>
IIRC CGAL has that, no idea about performance though
<guso78>
I catched this up when merging master by accident. this checkin happened, after you have created the python-support branch, so the file still has the older version in python-suport.
fury999io has quit [Quit: Konversation terminated!]
guso78 has quit [Ping timeout: 260 seconds]
RichardPotthoff has quit [Ping timeout: 246 seconds]
fling has quit [Remote host closed the connection]
fling has joined #openscad
RichardP_ has joined #openscad
RichardPotthoff has quit [Ping timeout: 255 seconds]
ur5us has joined #openscad
qeed_ has quit [Quit: qeed_]
fling has quit [Remote host closed the connection]
qeed has joined #openscad
fling has joined #openscad
<InPhase>
JordanBrown[m]: What I like about objects WITH bounding boxes, is that it's "free" as long as you were already planning on using the object.
<InPhase>
It's just an interception, grabbing some data, and then usage.
<InPhase>
The only price for it is having to use fastcsg render speeds instead of preview speeds for preview cases, which are in most cases close enough anyway.
<InPhase>
It should not require redoing things, like a separate bounding box feature would.
use-value has quit [Remote host closed the connection]
use-value has joined #openscad
ali1234 has joined #openscad
ali12341 has quit [Remote host closed the connection]
peeps[work] has joined #openscad
peeps[work] has quit [Changing host]
<JordanBrown[m]>
Right - it is render vs preview that I was thinking of.
<peeps[work]>
JordanBrown[m]: CGAL (and maybe Eigen iirc) abbreviate Axis-Aligned Bounding Box as "AABB"
J23 has quit [Quit: Client closed]
J23 has joined #openscad
<JordanBrown[m]>
I think that the axis-aligned case is what people usually think of, so I'm happy just using "bounding box" to refer to that case.
<JordanBrown[m]>
In thinking about it more, even ignoring difference and intersection bounding boxes are not as cheap as I thought. In particular, across rotation and skew you need to know all of the vertices, and transform them, and find the bounding box of the transformed vertices. That's a lot more intrusive than the cases I was initially thinking of, where you could just do operations on the bounding boxes to find the modified boxes. That is,
<JordanBrown[m]>
while bbox(translate(x)) is the same as translate(bbox(x)), bbox(rotate(x)) is not the same as rotate(bbox(x)). It's still a lot cheaper than generating a mesh, but it's more expensive than the "nearly free" I was thinking of.
fling has quit [Ping timeout: 255 seconds]
linext has quit [Read error: Connection reset by peer]