FoDES - Future of Design & Engineering Software

Tassos Hadjicocolis, CEO of Phenometry on Phi which Models Organic Shapes

Roopinder Tara Season 1 Episode 15

Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.

0:00 | 55:40

Tassos Hadjicocolis, CEO of Phenometry, and Stephanos Androutsellis-Theotokis, CTO and founder, give a detailed demo of Phi, a browser-based modeler that makes organic shapes quickly and precisely, then sends results to Onshape as clean NURBS for downstream CAD operations. 

• Running Phi inside or alongside Onshape
• Direct push–pull of vertices, edges, faces
• Curvature combs and smoothen for fairing
• Precise move, rotate, and scale with inputs
• Image‑based modeling and pop‑out extrusions
• Exporting to STEP with tight NURBS tolerance
• Snapping to Onshape faces and edges
• Dissolve to replace face groups with a single patch
• Mirror vs symmetry for flexible constraints
• STL attachment and flatten for surface control
• Limits of round‑trip import and current workarounds
• Roadmap toward G2/G3 continuity and shape optimization




Introductions And Episode Setup

Roopinder

Hello, and welcome to FoDES, the Future of Design and Engineering Software Podcast. My name is Roopinder Tara. On the show, we will have guests that will discuss tools and technology that engineers will find interesting and useful. Today I have Tassos Hadjicocolis Kokolis and Stephanos Androutsellis-Theotokis. Tassos is CEO and co-founder of Phenometry, and Stephanos is the CTO and founder. I met Tassos at the DEVELOP3D conference in the UK earlier this year, and he told me of their software that uses their own modeler to create shapes. Not just prismatic shapes, all the MCAD programs do that, but organic shapes, all MCAD programs, don't do that. After years of kvetching about MCAD's difficulty with organic shapes and generative design's abuse of organic shapes, I just had to have a deeper look. So here are Tassos and Stephanos to give me a more detailed demo.

Tassos

Nice to meet you. Nice to meet you too. I've been following your work group for many years now. And so I think I speak for the team when I say it's exciting for us to all be in a call together and to be discussing our work. And thank you for that.

What Phi Is And How It Runs

Roopinder

Glad to do it. I'd like to recognize good technology and promote it.

Freeform Editing: Vertices, Edges, Faces

Stephanos

So hopefully I was able to share my screen. This is Phi now running from inside Onshape. We have two options. One is to run as an Onshape add-on, in which case it appears in an Onshape tab, as you see here. Or you can run it independently on its own in another browser window and still be connected with Onshape if you want. You can authenticate with Onshape and pull your documents and work into Phi. Once we skip this welcome window, which by the way also leads to if you click here, it points to various tutorials and videos that are helpful for getting started. But once we are out of that, you can start your design either by selecting one of these basic shapes that we provide. Or if you have already saved some other model within Onshape or on file, you can upload it. For a quick intro, I will work with one of these objects and then I'll give you two, three other examples. So let's assume I select a cube, I can give it some dimensions, and I can also give a name to my new design. I'll just call it test one, whatever. And so we load this cube here. And I'll very quickly walk you around the interface. So first of all, you can rotate, zoom, pan, and all of the usual interactions you have in any cut system. And one of the things that immediately strikes as a little unusual is that with Phi you can select any element of your model. So, for example, this vertex or this edge, and you can just pull it and deform. And the surfaces follow the deformation of the edges and adapt accordingly in a natural way. So this is a very, very quick way to manipulate your objects and change their shapes. And of course, there's a lot more you can do, and I'll quickly give some examples. We look at the bottom of the screen, it's mostly visualization tools. So for instance, I can hide my vertices or my edges, or I can hide either all of my faces, or select a few and hide just those, so I can look inside my object. Then I can rotate down the X, Y, or Z axis, so I'm looking along an orthogonal direction. If I am too zoomed out, I can click this button here and bring everything back in the scene. I can also select any face, regardless of whether it's flat or very curved, like this. And with this button here, I can rotate so I'm looking roughly down perpendicular to this face. Of course, if it's very curved, it will be an approximation. I showed you that you can freely rotate around any axis, but you can also lock your rotation. So it now happens only around a vertical axis or around a horizontal axis. And this is sometimes useful to inspect your object without losing track of where you are. Okay, I will not waste a lot of your time to go over everything, but just two, three more examples. You can select various edges, and when you hit this button here, you get a curvature comb which interactively adapts. So now whenever I hover my mouse over any button, I get a quick explanation of what it does. And for the top buttons, which are the tools that you have for your design work, and I'll go over them in a moment, you get more than that. So, for example, if I hover over this first button, I get a little video showing me how it works. And if I hit read more, I get a bigger window with a complete description of this functionality and how I can use it, shortcuts, etc. So we try to put a lot of help within the application very close to the user's actions. Back to the bottom row, we have a grid where you can snap, and we can also work in a section view. So here we create this block around the model, and then you can push this in. And as you do that, it cuts through the model so you can have a section view. And you can also hide the section planes and still do your design work within this section environment. Or I can turn it off and then I'm back into normal workplace.

Roopinder

It still shows a section view, and you act on the section view, it's still affecting the whole model, correct?

Stephanos

The entire model is there, you just don't see all of it. Okay, got it. Right. Things happen in the parts that you don't see. You will see it when you go back into the left side. We have more control things like undo and redo. This button is a restart, so you start with a fresh new model. You can also bring in another part. So, for example, with this load model into current one, I can select a cylinder, for instance. And now the cylinder was added actually exactly on my queue, but that's fine. I can select it and move it out of the way. So now I have two models in my scene, and I can actually even select these two faces, and I'll quickly show you a bridge between the two. So they were these two were naturally merged into one. We calculated some new faces to add there, and this is a new body, a new single body with result of this merge. Okay.

Roopinder

But when you move the part, can you control it? Can you control the movement to have it only along one axis or the other?

Navigation, Views, Sections, And Curvature Combs

Stephanos

Yes, so to do that, I'll jump to this move tool here that I haven't had a chance to describe yet. So I can either select the entire body or I can select a part of the body or even just a single vertex. And if I hit this button, I get the move manipulator. There's a shortcut for it. This allows me to move either along the X, Y, or Z. I'm sure you're familiar with many such tools, or rotate around there. And as you see, the rest of the model that is not being moved adapts so it elongates, etc. So this is the move tool. As I mentioned earlier, you can add vertices on your edges. So there's a there's also a shortcut V. So anywhere I am, I hit V and I have a new vertex, or shift V and I have a vertex in the middle of the edge. Or for example, I can select a face, and then if I hit V, the vertex will be added onto all of the edges around it. And there's many more variation of these. So it should get tools that when you become familiar with, they make your work a little faster.

Tassos

Interrupt, sorry, Stephanos, because we you covered the move tool because Roopinder asked for it. But I think an interesting aspect of the move tool, and it exists in some other tools too, is that you can actually be precise. You can ask, let's say, for uh yeah, okay. So you can take so you can ask for a rotation of a certain degree, or Stephanos can demonstrate some of these.

Roopinder

Uh instead of dragging, can you type in a number?

Stephanos

Yeah, exactly. So if instead of moving dragging my axis, I click on it, I get a little odds and I can give it, I don't know, 0.2 centimeters. And so I get a movement by precisely this amount, and the same for rotations.

Roopinder

Very nice.

Stephanos

So 10 degrees. So you have more control over there. Let me just go back here on the left menu, then before I show you a few more of our tools. I was mentioning that you can load another object in your scene and then do operations between them. This is the icon to save your model. You can give it a new file name and save it within Onshape on the cloud, or even download it on file to keep it. This is a very interesting button that I will demonstrate in a moment, which directly, if I hit it, sends the entire model that I am working on into Onshape. So, what it does behind the scenes, it converts it into first into a step format, converting our surfaces into NURBS surfaces with very high accuracy. And then it sends this over to the OnShape API. So it goes into my document in Onshape, and then Onshape takes over and it converts it into their standard format, which will be a part studio. And I will demonstrate this, but I'll do it in a moment with a little more interesting example so we can I can show a couple of things.

Roopinder

One question. When you convert it to NURBs, you're going from n n-sided patches to NURBs. Can you adjust the accuracy of the conversion or is it just one setting?

Stephanos

The accuracy is already pretty high. It is roughly 10 to the minus six.

Roopinder

Oh, 10 to the minus six. Okay. So a percentage as a ratio or as a yeah, if you if the patch is in a unit box, yeah, so it is roughly of unit size, the accuracy is 10 to the minus six.

Stephanos

Got it, very good. So we have an internal parameter that we haven't exposed, which could determine the resolution of the NURBS export. We just haven't had the need to export it yet. So in theory, yes, it is adjustable. It's not a small number of control points. Especially with some extra work that we're doing now, we can reduce the number of control points in the NURBS and establish a trade-off between the accuracy and the control points.

Roopinder

Got it. Okay, understood.

Stephanos

So I think what I'll do is I will switch to another more interesting example, and I will use that to walk you through some more of the tools we have.

Roopinder

Okay, before you move on from that, I was gonna ask if what would it take, or maybe you're gonna show this, but what would it take to blend those edges into smoother edges?

Stephanos

Because that'll okay, very good. So let me answer it in two ways to blend the edges into smoother ones. You're probably thinking of an operation such as a filleting, for example.

Roopinder

Yeah, I think you could probably do better than that.

Multi‑Body Scenes And Precise Move Tool

Stephanos

So, what we have is what we call a smoothen command. Smoothen has various ways in which you can use it. The general idea is that you give it one edge or a chain of edges, and you ask it to round or smoothen or fair all of them with some conditions. Let me give some examples. The most basic use would be I select these two edges, they have a sharp corner here. I hit smooth, I get in the way a little bit. The result is that it gave it this curvature, and so these two edges are now tangent. And if I move the vertex around, the same happens.

Roopinder

So on that on that top edge now, if I wanted to make sure that it's the curvature matches along the first first derivative or second derivative match. Do you know what I mean? Like if it's if it's tangent curvature continuity or it's second order continuity, like they can do you can do that in Kata, actually match it quite well. Is there anything like that here, or is it just push and pull?

Stephanos

So, with what I did now, I asked, I cannot specify if I want G1 or G2 continuity.

Tassos

Yes, correct. And we're working on that. We're working on uh something we will call Phi 2.0, and we would go even further than that, allow G3 continuity and stuff like that.

Roopinder

Okay, all right. So, right now, I don't know how important that is, but I was just uh if I was coming at this from CATIA, I'd want to know. But I think you do a really good job of this. So if you want to get continuity like G1 or G2, you'd have to use at the moment use the combs. You don't have you only use combs. Is that the only tool to match the curves, or is there also sometimes they use zebra striping to detect?

Stephanos

So, no, we don't have zebra stripes, but if you export the model to Onshape, we utilize Onshape's zebra stripes to exactly okay.

Roopinder

So by the way, I have to say I love the interface, they is so clean, it's a really good blend of power and simplicity. I didn't have to use documentation once, but I found myself able to manipulate shapes. And that's very unusual for a CAD program.

Stephanos

Simplicity was always a goal here.

Tassos

Thank you. That's great to hear, Roopinder, because you've used all the tools, so your opinion counts.

Stephanos

I wanted to very quickly mention something else here. You saw earlier that, for example, I deformed these two edges, made them a little more curved, and then I started moving this vertex around. And you see how they have some elasticity and they gradually fall back into the simplest possible shape. So this is an intentional behavior of our edges. We try we want them to respect the constraints, so for example, be tangent where they have to be tangent, and of course, interpolate vertex, but as we move them with every move step, we reduce the complexity and we remove curvature to try to get to the most fair shape. And if of course you wanted to maintain a more curved shape, you can always go in and add a vertex, and the vertex will lock the shape at its location.

Roopinder

Stephanos, when you're adding a vertex, is it going to the center of the edge or is it going near your cursor?

Stephanos

If I just hit V, it goes near the cursor. If I hit Shift V, it goes to the center.

Roopinder

Ah, okay. Nice.

Tassos

Shift is one of the most commonly used keyboard modifiers that changes the behavior of many of the tools in ways that Stephanos will explain. And to come back into this freedom in our first versions of Fi, we had allowed what turned out to be way too much freedom to the users. And the designers sometimes got confused because they could turn things inside out very quickly. And so they started telling us, No, you need to constrain me more. You know, if I want more detail, I'll find a way to do it, but more freedom rather. But you know, you need to constrain me more. So, you know, some of those things are in place because of that. And still, there's a lot of ways to mess your shape up. I mean, you know, if you randomly just pull it, you will create self-intersecting surfaces that we are not preventing, and you know, and so on. Right, right.

Roopinder

Who takes the credit for the UI here and your team? That would be funny. Very good.

Stephanos

Yeah, we it it evolved a lot, it gradually became what it is now.

NURBS Export To Onshape And Accuracy

Roopinder

It is one of the best I've seen, if not the best. So very good. Thank you. Thank you.

Stephanos

I moved to a different example just to demonstrate a couple more things. First of all, you see here an image. With Phi, you can load images into the scene as many as you want, and then you can move them around, position them as you want, and these are also stored within your model. So next time you load it, they're all there. And this I recognize is the handle of one of these Italian coffee mocha machines. It's a simple shape, but still it's a very, I don't know, at least I identified it as an interesting, very free-form shape that it's not exactly obvious how you would model it. I mean, it's kind of like a tube that has been twisted and it's thin here and thicker there. So we thought this makes for an interesting case. So I just wanted to show you the steps that one could take, I would try, to design this thing with Phi. So I loaded the image, I I saved you the time of loading it, and then I brought in this cylinder in a standard shape. So, what I'm going to do is using the move tool that we discussed earlier, I will rotate the cylinder and put it in place roughly at a starting position, and I will also scale it to try to trace this handle. And I know from having seen the actual machine that it's not really cylindrical, it's a little squashed. So again, I will do a squash of the cylinder to make it more realistic.

Tassos

Now, this is not exactly correct, but the squashing was done by scaling along a single axis rather than. Am I right, Stephanos?

Smoothen Vs Fillet And Continuity Questions

Stephanos

So again, the manipulator, you have your axis, you have your arcs for rotating, and these three balls are for scaling. So when I pull on one, it scales along that direction. I position my cylinder and then I grab one face only, and I will scale this to get it roughly on the hand. And now obviously I can go in and deform my edges to capture the shape. Now, the interesting thing is that I can do what we call a pop-out. A pop-out is basically an extrusion, and it's one of the tools that we use most often. I selected this bottom face, and there is this pop-out button here, but the shortcut is P. So what happened now is that this face was extruded to give me some new volume. And I can just pull it, brings up the manipulator immediately for me. So I can pull it all the way down here to try to follow the shape of this model. And again, I can go in and do a little editing. And I can repeat this as many times as I want. So for instance, I will straighten this a little bit, and then I'll do one more pop-out, and I'll bring it down here, and I will rotate it, and one last pop-out, and there we are. So clearly, this is not a very good shape and it's not even very free for me. It's all straight lines and stuff, but it's very easy to take care of this. Let me first move this roughly there. And now what I will do is I will grab these chains of edges and I will smoothen them, as we saw before. But there is again one option. If I hold the shift key again, it will smoothen my chain without moving my vertices. And that's what I want in this case, because the vertices are supposedly exactly where I want them to be on my model. So I want to just smoothen my edges. And in smoothening, sometimes the shape is not exactly what I want, but it's really easy to go in and move things around and trace my shape. So we okay, I would like to demonstrate also that if I select, for example, this ring of faces, another tool that I have now is fixing. So with this button here, these turn gray, and it means that they are not allowed to change in any way. So I'm, let's say, protecting these faces from whatever. And for example, what I will do is I will select these four edges and I will smoothen them to give the curvature that I want in the bottom side of this handle. And I do the same thing in the opposite, smoothen it again. So I have created a very nice rounded finish for my handle. I will go here on the left is the menu to bring in images, and I can also hide my images. So this allows me to look at my model a little better. And I can, for example, pull this vertex out and change the curvature, or I can select these four faces and move them any way I want. So I have a lot of freedom to control the shape of my model. And let me bring in the image again. And in the same way, I can continue going up and trace the entire shape of the handle. You get the general idea.

Roopinder

The initial shape that you brought in, that the whole coffee thing, what was that? Was that a solid model or a surface model? Or just a picture? But just a picture. It's just a okay, just a 2D picture. Okay, got it.

Tassos

Actually, maybe you can show Roopinder how you can bring in images for all the axis and change them and scale them.

Stephanos

Yeah, I will show it in the next module. But let me finish this design because I would like to demonstrate how I can throw this into on and then finish it off over there, which is an easy all right.

Roopinder

So you're basically using this this image, a 2D image, as a tracing over it with a 3D shape, right? And exactly. Okay, good, good, nice. On the table, and then you try and eyeball it on your screen. This is nice.

Stephanos

But I think that designers, at least in concept design phase, they do this quite a lot. They have some idea of what they want to achieve, possibly an image.

Tassos

And they use it or something they've sketched on with pencil and paper. Right.

Stephanos

Okay, so now that I have this handle here, let's assume that it's good enough. I hit this button which sends it to Onshape. So I will call it the brand of this thing. And so now what happens is first we send this over to our server. On our server, we convert this to step and nerves. And from there we send it over Onshapeo. And as you see here, it says the model has now left Phi and it's traveling towards Onshape. And it appears in a few moments as a new Onshape Parts Studio. And there it is at the bottom left. You see this new tab. This is exactly what we designed. The scale is of, but that's fine. So this is our handle. And I hide the Onshape planes. That's it. And this is a perfectly valid B- rep object. So you I can go in and do filleting, for example. This is a Parasolid.

Roopinder

At this point, yes, because Onshape converted it to okay, and and does it it shows it demos well, but do you have any cases where it doesn't convert properly? It's not watertight. There are issues.

Stephanos

I'll tell you, if if I do something weird in Phi, because Phi doesn't put any guardrails. So if I wanted, I could, for example, take this edge here, do something very stupid now, and pull it all the way up so it intersects the model itself. So obviously, if I send this over to Onshape, it will complain. It might reject this face or something like that.

Roopinder

Okay.

Stephanos

But other than that, it's quite unusual that we build something in Phi and then we don't see it as it should be in Onshape. Actually, I think Parasolid is doing a very good job at converting and bringing it into Onshape.

Roopinder

Okay.

Tassos

Well, our description, you know, it's a simple because everything is watertight in Phi, even taking into account that say the self-intersecting surfaces, although you create a non-manifold. If the shape is, you know, it's not doing something crazy, then it's a straightforward thing to just send the NURBS matches as uh all as one to create the step file, and then for the step translator of parasolids to bring it in and turn it into a B rep.

Roopinder

I understand the connection to Onshape because you're both cloud-based. But since it's making a Parasolid model, why not develop a or is that the next step? A SolidWorks model. Yeah, absolutely.

Tassos

We get I mean you could do anything. In fact, it's not even creating a parasolid model at this stage, although we experimented with that, it's creating a step file. So it's something that's even more widely used. And you can save it as a step file and so bring it into SolidWorks manually, but you're absolutely right. We could integrate with other CAD software, definitely.

Design Philosophy: Constraining For Fair Shapes

Stephanos

And I just wanted to take this one little step further. Just now I now I'm mostly talking about not so much the capabilities of Phi, but what we consider to be the design process, the recommended design process, let's say. So what I'm doing here is I brought in this new cylinder and I'm placing it roughly over there. I will pull out this vertex of it, and I will also smoothen everything like that. So I have this, let's say, bullet shape, and I'm going to select it and make a copy of it. I rotated it instead of moving it. So I select it, Ctrl-C, and I'll move it over there. So it's roughly symmetric. By the way, we also have a mirror and symmetry commands. I can talk about and so what I'm attempting to do here is the following. If I hide all of my objects and we look at the image only, you will see here at this area there is an it's like part of the of the body is missing.

Roopinder

Cavity.

Stephanos

Exactly, a cavity. So the way I'm suggesting you could go about this is create these two shapes, which at least in my mind represent the negative space of the cavity. Send over this entire thing to on shape. And by the way, what you will see now in this tab is that we have what we call live update. So any change you make into Phi will automatically update within Onshape. So this is gonna take a few more moments.

Roopinder

So, Stephanos, you in the first time you did this, you actually did a conversion and sent it over into step and then into Onshape. Are you saying now everything you do to the fee model is automatically step to On shape, or do you have to still push a button?

Stephanos

I had to push a button. The same exactly I got the question. I pushed a button. There's no constant, it's not constantly updating.

Roopinder

No, okay.

Stephanos

That's possible, but I think it would be very slow and possibly not exactly what you want.

Roopinder

Yeah, it would be checking all the time and it would be a good thing.

Stephanos

Yeah, I think it would make things very fast.

Roopinder

It would be a very nice feature. Can you do it from the other end? Is there anything you can say in On shape once you're there? Say update this model with Phi?

Stephanos

No, it's a one-way thing.

Roopinder

One way, okay.

Stephanos

Yeah, because we have lost the there's no association between the two parts. Uh I mean the two worlds.

Roopinder

Yeah.

Stephanos

So there's no way to tell on shape for on-shape to tell us. Uh and also many of the operations that you would do in Onshape, we do not support in a symmetric way, let's say. So if you were to do something here, we wouldn't probably know how to uh do it in our world.

Roopinder

I see.

Tassos

Okay. With the underlying representations too, because it's the Parasolid model and the Phi model are entirely different in structure, in concept, in you know, they're totally different. So you cannot have a one-to-one correspondence. Right, right.

Roopinder

You can you do this? Can you take an on-shape model that's made that's now okay? Let's say now you've taken this, you put it on the on shape, now you make a lot of changes, you do your Boolean operation just like you did there. Now, can you send that to Phi to to Phi? I'm sorry, I'm just saying Phi or Phi. Yeah, and and then work, can it convert back to an n-sided patch then so you could do something or or no?

Stephanos

Okay, the answer is that in most cases, no. Okay. So I can give you an example. I'm back into Phi now. I will actually start a new model. Let's forget about this. Okay.

Image‑Based Modeling: Coffee Handle Walkthrough

Roopinder

Load something. Couldn't you easily create a step file from this and then can you read the step file or uh no, no, we cannot read.

Stephanos

What we attempt to do is to read on-shape models. So I'll give you an example. This first button is to bring things in from on-shape. So here are the models that I have in my current document. And you see, this is the handle that I just created. I can select the entire part studio and I can import it. And it will import it, but by default, it will not attempt to convert it. Let me hide this. So here it is. But this is not editable now. This is just a reference object that I can use to attach to it, etc. Try this once again just to demonstrate this. I select the same part, and we have this plug here which says attempt to convert it. Okay, so we will try to recreate in Phi all of these surfaces. And the thing is that in this process, it is not guaranteed to work. So in this case, actually, it did it an honest effort. Here is the model that we brought in from Onshape. It rejected some faces, and the reason it rejected them mostly I think it's due to the fillets.

Roopinder

Oh, okay.

Stephanos

There are some requirements that our faces have that, for instance, you cannot have a face that has disconnected loops of edges around it. A cylinder, like a can of coke, for example. The cylindrical face has a loop at the top and one at the top at the bottom, and the two do not touch, they're not connected. So we don't like that. So if you were to import that, we would request that you slice it in the middle vertically to create two faces that are proper for us. And there's a bunch of other constraints like how many corners you have which are not sharp and things like that. And the result is that unfortunately, in many cases, we we reject part of the faces. I think a designer would not be very happy with this. They would expect, I mean, either either tell me that it works and it always works, or tell me to forget about it.

Roopinder

This half the way I'd say it's 90% there, but I think this would be, in my mind, in my opinion, this would be important because you do such a good job of getting it over to on shape in the first place. But I think that as a product designer, I'm going to want to go back to fee because I'm going to discover things that I can't do in Onshape, and I'm gonna need to go back to V to do that, right? So it's I'm asking for a lot because the programming here is probably intense, but to be able to do that, I think is very important to the process to be there back and forth, to allow that to happen. I think to me, that'd be critical. Instead of a one-shot deal, you have like the ability to go back and forth. It would be a more useful companion to just make a can.

Stephanos

I have this thing I've done in uh on-ship, can I bring it into Phi and then play with it? Yeah, absolutely, you're correct. Yeah, a different way to look at it might be if you consider, for example, in a fusion 360, where you have the ability to create some surfaces with sub-D tools or something like that, then you can build on those by doing uh CAD operations like Booleans and et cetera. It's like you're working in two layers. There's the fundamental layer where you do the surface work, and then these locks, and you go into the layer where you do the Boolean operations, etc. And in that sense, I think Phi gives you that possibility. So if you go back to Phi and change something, it reflects in the own ship world. But we don't have that yet.

Tassos

When you get your next round of funding, you're going to yes, you could always find cases that will break down, but that doesn't matter because if you cover the vast majority of the cases, that's great. So you could write heuristics to deal with some of the problems we described, like the fact that the difference in the underlying infrastructures means that even if you bring in all the edges correctly, which is easy to do actually to bring the edges correctly, that we do perfectly, it doesn't mean that the surface patch delineated by the same edges will look the same in Phi and in in because there's a different way of calculating it. And so there's all these little things that definitely there could be a lot of work done to make this a much better process. For now, because it's not there yet, we do not recommend it as a workflow, and instead we provide an alternative either, which is what Stefan has demonstrated. And another thing that I think Stefan was going to show, but I got sidetracked was that you may not be able to bring in the whole model, but this reference model is not just to view, you can actually snap five edges or vertices onto edges of the on-shaped model that you brought in, or the outside model that you brought in. You can also ask for specific faces to be turned into surfaces to be turned into Phi surfaces, which is also very useful because in theory, you have let's say your more mechanical design model done in on-shape, and then you want to add some freeform features, like you have a vacuum cleaner and you want to add a beautiful curvy handle, and then you can very easily like that define the interface and attach it on Phi so you have precision there and you have an exact interface, and then work with the rest in Phi. So that's another very good workflow.

Roopinder

So the points in the 3D model from Onshape. Let me see if I got this right. You can access the points and edges on that for making your surfaces, right? So it's not just a dumb backdrop, it's actually to demonstrate that.

Stephanos

I can give you an example.

Roopinder

I had another model like in the photograph or the illustration, I couldn't snap to anything. I had to idle.

One‑Click Export And Live Update To Onshape

Stephanos

I have the model is coming in as geometry, so yeah. So I I have this model of an anvil, this is from on shape, and for example, I have this cube here, and I can place it roughly there, and I can select this face here and ask to snap it to this face here. So I got a perfect match between the two faces, or for instance, I can put it here and I can ask this edge to snap onto this curved edge. So this is a good starting point, it helps.

Roopinder

Yeah, but it helps a great deal. I can see how you make your initial shape when you but blocky very and put the final, you know, make the fine use it as a starting point, then it's a very useful starting point for making it more ergonomic or organic or smooth.

Stephanos

Yeah, so basically, we use this as an example of how you can finish up this design within Phi. I mean, I hope I can, I don't remember exactly the shape, but to create the front part of the anvil, which is this curved nose. Let me snap this face again. And I guess I would probably no, I'm just slicing this in half with these edges, and then I can get rid of that part and this part, and these four edges, maybe something like that. Actually, I don't think I need this either. Just make this rounded.

Roopinder

I see. So, you know, anyway, very nice carving your. I like the way it's shaping up by doing that and odd shape or solid.

Stephanos

Yeah, it's not that easy, I think. And then I can send this over to the tip of the hand. Send this over to on shape. You can do quite a bit of back and forth, but yeah, in a sense, yes. So now I can have an assembly and I bring in my ANV and also the thing I designed just now, and there you have it. So, I mean, this took like what, two or three minutes. It's not a good shape, but I think if you wanted to do this in Onshape, it might be a considerably bigger task.

Roopinder

Yeah, very good.

Stephanos

I was going to show you one more example here, just to show that the user interface has also the option to add colors and things like that, which is not really crucial, but anyway, it's not it's something to be able to do that. And also we have this shadow plane, which we found to be useful if you want to get a better 3D understanding of your shapes. And uh so these are three carafes, and the designs differ mostly in the shapes around the bottom parts, and also in some cases you have sharp transitions and in other rounded. So I wanted to take this opportunity to show, for example, again, if I take these two edges and I hit my smoothen button, I get this rounding here. But more than that, I can go into let me hide the shadow plane. I can select some of my edges or even all of them and go into this menu here, which is the tangent manipulation menu. So now you see these blue lines represent the tangents. How the same manipulator can be used to change them. So now I'm only changing the direction of the tangent over here, and so you have a much more control over the shapes of your modules, and I can do this anywhere.

Roopinder

Stefanos, would you put turn on your combs to see if you've got that right?

Tassos

Yeah, sure, sure. And you can also fix tangents and do a whole lot of other things. So if you have a bit more time, we can go through some of them if you want.

Roopinder

You can play with it to your heart's content. You can keep working at it until it's peeling and smooth and you can change the size and the density of the combs.

Tassos

Make them a little bigger because your inspiration for this was it like alias or was it uh Rhino or who we tried to get uh good ideas from wherever we could, wherever something seemed functional, but then also we improvised a lot and had lots of very kind designers get frustrated with our experimentation and give us feedback and say, why don't you do this like that? And why don't you do it like that? Until we found something better. It requires a lot of iterations, like everything, I guess.

Stephanos

So, this is what I had prepared to give you a quick overview. Of course, we can have as many sessions or just drop us an email with questions or anything you want.

Roopinder

No, I would like to now play with it myself and if I can do any damage.

Tassos

But I'd like to sure it's it's it's I mean, there's a lot of work in FI, but it's also work in progress, and you know, we can and uh Stepahnos, if you have some more time, and Roopinder, of course, if you have some more time, would you care to just in broad strokes describe some of the tools, the other tools that we haven't touched on that are on the top row? Yes, the ones on the left are less interesting right now. I mean, you know, there's something to display triangular faces rather than full faces, or to bring in STL or bring in more images and XYZ planes and so on. But the main tools, at least so you can have a good go.

Limitations: Self‑Intersections And Import Back

Stephanos

Okay, yeah. So let me start to add vertices, which I demonstrated. You the shortcut is V and it puts a vertex on the edge. And this is to add an edge once you have selected two vertices, or if you don't have any vertices selected and you hit this button, you go into this drawing mode where the entire model turns this color, what is it, the cyan. And then you move your mouse over one or more faces like that. And once you lift the mouse, uh it draws edges along the path that you carved. So it's a way to add some edges a little more actively, let's say.

Roopinder

Okay. So when you're drawing on the screen, it's in 3D space, but then it acts onto the surface. Exactly. Yes, yes. Using your perpendicular to the screen.

Stephanos

Yes, orthographic camera, so it goes perpendicular and it traces, it hits the object, and then it tries to add an edge following the path. I see. The next one is the split. So I can select one or more faces, and with a split, it splits them in in half, in four parts actually, into halves. So another fast way to add edges. Uh the curve command is very similar to the drawing edge, but it goes through the model. So if it hits a face, it will continue and it can hit the rear face as well. So let me bring in a cube just to demonstrate this. Okay, it's a big cube, but it's okay. So curve, I'm going over here like this. I lift the mouse, which means I've completed my design, and so it sliced this entire corner. And this brings me to the next, which is dissolve. So this is an interesting discussion. As you saw, I removed this corner of the body using dissolve. So what's what's the deal with this? In Phi, you can select an edge and hit delete and get rid of it, or the same with vert, like I did before. But you cannot select a face and remove it, because that would leave the object in not bound closed boundary representation state. So instead, we have two options. One option is right under delete, you have this button which means make invisible. So the face is gone for all practical purposes, but in reality, internally, it's still there. You don't know it, but we still keep track of this face, even though it's invisible. And I can select any edge around it, and again, with the same button, I'm bringing it back. And in fact, in bringing it back, we also do some clever stuff. We split it in triangle. Anyway, it's another discussion. The other thing you can do is what I mentioned the dissolve, which is the operation is this you have a body which can have many faces, you select some of these faces and you hit dissolve. So what we do is we get rid of all of these faces, we remove them. So imagine before I selected these three faces, so we remove them, but in order not to leave you with a hole in your body, we substitute them with one single face to take the place of those. So we call it dissolved because it's like the three faces dissolved and only one took its place.

Roopinder

Dissolved seems to be a very powerful.

Stephanos

It is a good yes, I think it is, and it also has this uh other characteristics. So now I did two pop-outs just to create this ring of faces around here.

Roopinder

Okay.

Stephanos

So if I select this, this entire ring, and I hit dissolve, it gets rid of all these faces, but then it's left with two parts of the body and nothing in between. So it decided that it should split it in two bodies and cover each side with a new face. So it's like it's responsible for giving you closed B-rep representations after you remove the faces. That's also the dissolved command? Same command.

Roopinder

Did you invent that? Is that a is that a fee invention or is that uh does that exist in other worlds?

Stephanos

I think I we haven't seen it anywhere. A pattern on that, I guess.

Tassos

Yeah, they've made software patents understandably, so I think it was a good thing that they did so much more difficult now because, as you know, for a long time they granted ridiculous software patents. Pressing a button or doing a click here or there.

Roopinder

But you don't do that so much anymore? The patent office is not.

Tassos

No, they don't do that anymore. And I think it's a good thing because it's pretty ridiculous patents out there. Having said that, this might be patentable.

Roopinder

It's a tool. I think it's a tool. And I think I would if I mean I I don't know every other surface program that that intimately, but uh, I've not seen it stuff like that.

Stephanos

Okay, so we delete, we mentioned fixed dimension, move is the move manipulator. Scale is very similar to the move.

Tassos

Uh it allows you to scale the size of objects. You will find a lot of precise tools within these scale submenus and all those that you could add numbers, you could buy different axes, and so on. Hopefully, the videos and the documentation might help. But as Stepahnos said, we're always here to answer any questions you may have. If you get frustrated or if you can't find your way around, we'd be more than happy to do so.

Reference Geometry: Snap To Onshape Models

Stephanos

All right, very good. So, what I was going to demonstrate before, I brought in a this is an STL file through this kind of a bone of some sort, I don't know what. So I loaded it where I mean it was already loaded in the file, but you can load it using the STL command. So you hit that, and if you have an STL file in your document, you can select it and bring it in. And I had placed a cylinder, well, this shape of faces around it. And then we have this tool here which we call attach to STL. So this is not perfect, but I will quickly show it. So what you do is you select the faces that you want. What it does is it takes the faces and it kind of tries to attach them onto the STL file as closely as it can. You select the faces you want, in this case, everything, and then I hit this button here. So now I'm in this mode, and then there are three buttons to this is all described in the tooltip, by the way. So I can do three things. The first I have the keys one, two, and three. Okay, the interface is a little stupid, but anyway. So when I hit one, it starts calculating how it should move all of the vertices to go as close to the body as possible. When I hit two, it does the same with all of the edge samples. So now the edges will deform to attach. And when I hit three, it does a little smoothing of everything, because in some cases it can be very jagged and etc. So it gives you this result here, which is an attempt to replicate the shape of the STL that you brought in.

Roopinder

Nice.

Stephanos

We think that it's a useful feature. We haven't found exactly an application for it, and for that reason, we haven't tuned it exactly. So here maybe you don't want to capture so much detail, you want a slightly smoother result.

Roopinder

Uh-huh. Yeah. So it's a smoothing operation, and that's under place.

Stephanos

Yes, it's a copying operation.

Tassos

You would try to fit some something else. I've heard it called mapping also in some places. Okay. If you knew what it was, I wouldn't be able to tell you, but it now that you said it, it's probably we discussed the pop-out.

Stephanos

You saw the extrude we did several times, and the to be honest, I use it very rarely, but the general idea is that you can select maybe turn one of them into a circle so to demonstrate that too. Yeah, okay. So I have this circular face here, and I have this square face over there, and I ask for a hole. So if I will create faces inside the model and edges to build a hole, to drill a hole between the two. As you see, they don't need to have the same shape or even the same number of edges around them, it will find a way to cut through the body.

Roopinder

Oh, okay. Well, we've squared the circle. Yeah, this is a lot of fun. I could waste that whole day playing. Yeah.

Fast Concepting: Anvil Tip And Assemblies

Stephanos

Then we have the flatten command, which simply so if I will pull this guy out, and so this face now is obviously not flat, or or these two faces, and I can select them, and with flatten, it will basically flatten them. So they became completely flat. Now the result can be a little random. So what you can do is you can say I want to flatten these two faces so that the resulting new face will pass through, you can give it three vertices. So these three vertices, for example. So if I do it now, I got a new face with a slightly different shape, and these three vertices were respected, they didn't move, and they so you guide the result in that way. And similarly, you can take one or more edges and make them linear, or you can take a face and make it a circle, like I did before. You I showed you how you can copy an entire body. So you you control C is the shortcut because people are familiar with it. So you select the body, control C, you have a copy of it. We saw the tangent menu, we saw the smoothening, and I think that leaves us with mirror and symmetry. So let me quickly demonstrate these. There are two different things. So with mirror, you select a mirror plane, which can be one of the orthogonal planes, or it can be a plane on the on your object, or you can even select three points to define a plane. So it creates a mirror image of your body, and anything you do on one side is reflected on the opposite. So it's like a mirror. The interesting thing is that we have this button underneath where I can select. Now I only have one body, but if I had many bodies, I could select one or more bodies, just select one face of them. That's enough. And with this button, it disassociates the two. So now it's working to make the mirror side an independent object, and there it is. So at this point, they're not related anymore. I can take this and move it out of the way and shrink it or do whatever I want. The facility is that you take a body, you make a mirror image, and then if you want, it becomes a new independent body for you. And the difference between a mirror and the symmetric command is that okay, wait, let me start with a slightly simpler shape here. A cube will do, I guess. So I have this cube, and I go into symmetry mode, and now I can decide what the symmetry will apply to. So I can say I want these two edges to be symmetric with these two edges, and I don't even need to specify the order, it will figure it out. First, I had to decide what plane I will use for the symmetry. Okay, so this is my symmetry plane. Then I will say, okay, for example, these two edges and these two edges will participate in the symmetry. And so they you see the color change. They're green on one side and purple on the other. So now anything I do on one of these edges is reflected on the other side, and there's no guide I can work on either. But all of the other edges of my body, the ones that I didn't add to the symmetry set, they are free edges just like before. And then I can go in and select more edges, or in fact, I can select the entire face and add this also to my symmetry set. So I grow my symmetry set as I go along, and now these are also forced to be symmetric. So it's a very flexible tool where you can have a shape, but you only want one little part of it to be symmetric with something, and the rest you don't care about. And so this is a more flexible form of mirror symmetry tool. The problem is that it confuses people often because they see mirror and symmetry. Why do we have two and what's the difference? And I don't get it, and why can't you just have one? So, always with the users, you have to be patient and assume that they're not very willing to put mental effort. They want everything to be super easy and obvious and fast.

Roopinder

Yeah, no, I think it's a matter of education because he does so many things that they're not used to. So many CAD tools don't even have a symmetry function. Very, very well done, Stepahnsos. So it's all live, nothing was there's canned demos, and it works smoothly. It's important, I always say it's important to note what you don't see. I didn't see any glitches, I didn't see any crashes, I didn't see any slowdowns. It seems to work.

Stephanos

I think the application is very robust. It won't it very, very rarely crash or even slow down. In all honesty, sometimes you can get some shapes that surprise you. And I did some surprising shapes even in this demo a couple of moments, but I'm very good at hiding these.

Roopinder

Slow down as the model gets more complicated, as there's more thanks to it.

Stephanos

I think only the number of elements, if you go really big, it can slow it down depending on your computer, because all of this runs on the client's computer. So it's on my laptop, it's not on the server, it does nothing, it only sits there and does the translation to NURBS and a couple of more small things, right? So it's so which is not what OwnShape does. So Onshape does a lot of the calculation on the server side. Yes, it was implemented very, very fast with algorithms that built which are super clever, and so it really is really fast. But if you load, I don't know, the tens of thousands of things, it can get super.

Tangent Control, Combs, And Surface Fairing

Tassos

I haven't done anything to optimize it for very big models, like you know, to load part of the model, and then depending on what you do, there's plenty of things that could be done, but right now it's not optimized, so definitely you'll see a slowdown if you load something big, and certainly for certain operations, even if uh it doesn't slow down, some operations will because they are they're linear on the size of the model. But as Stepahons said, and you will observe it yourself if you start working more on it. Some of the shapes sometimes are surprising because of the way the surfaces are generated. Sometimes it may be unexpected, you know, there may be a dip where you don't want it to be, and so you may have to go in and add another patch to try and fix that. Sometimes you don't get the continuity you want, like you don't get G2 or G3 in certain parts, and it doesn't look great on the several stripes. And so, you know, there are things like that, but you know, we're aware of we believe of most of them, and we've done some great progress, and especially in terms of uh not so much in terms of the workflow that we touched on before, because that you know, we haven't put resources on it so much because we're solely lacking in them in the surfacing. We've done some great progress in what I think is called the 2.0 that uh hopefully is not far away from an alpha version, and so we believe we we address a lot of of that and of what you will observe.

Stephanos

We're very fond of this 2.0, which doesn't exist yet, but it's going to exist soon. The idea with the 2.0 is that we'll actually do a little bit of shape optimization, but pure and honest and full strength shape optimization on top of what you see already. So basically, what will happen is that there are some cases. I mean, we have a document with such examples which we're using for testing. There are cases where you don't get the optimal shape, and when you drag, it will not be the optimal shape, it will be almost the optimal shape. But then when you leave your mouse, it will become the optimal shape. And and then that will be that will resolve all these annoying cases that we see now. It will also simplify the workflow, and it will also be suitable for specific applications of which I am very fond of. For example, you would be able to build the hull of a ship where you you want to specify very few profiles, very few cross-sections, and then you want the mathematics to figure out an optimal shape for you. You don't want to by pushing and pulling, because even if you can't do push and pull, it will take you forever to be at the optimal shape, or it can be impossible to go to the optimal shape by push and pull.

Roopinder

So you this optimization will come for free, or another application is turbochargers where I can already see a lot of applications for that type of optimization, which I've been asking for and haven't been able to get because conceptually it's easy. Mathematically, it's very I think it's very difficult.

Tassos

Yeah, all the work we have done or the inside that patches, then we need a similar amount of work for that.

Roopinder

Yeah, yeah. No, it's uh I'm trying to find something in the office I can use to demonstrate it. I cannot, but I'll try to use your if you can use your imagination. The idea of something going from one shape to another, you can do it with a mechanical spline. It's a flexible, semi-flexible, bendable object that you put on your drafting board, and it takes the shape of the least energy. It takes the least energy shape, right? So that mechanically is a very easy concept, and that concept can apply to many, many things like fluid flow. The best path along between two orifices can take the path of least energy, least energy shape. If you could find a way to do that easily, I think you would have quite a few, quite a few applications.

Core Tools Tour: Draw, Split, Dissolve, Pop‑Out

Stephanos

Yes, and so we're doing this on surfaces, and so this will ensure that you have G2, actually G3, between you know, between the connected faces, which we miss sometimes now. And it will ensure that those unexpected shapes do not happen, they happen only while dragging, but when you lift the your your finger from the mouse, the those unaffected wrinkles, let's say, will disappear, and the thing will become uh completely smooth. And and uh and something additional, which is uh I mean it took us something like one year or so to to realize sometimes in the cases that Stephanos also showed, the user is able to place uh the curves exactly where he wants, but uh in some situations that may be impossible. For example, let's say you have a vertex and there is five curves emanating from it, and you want the entire surface at that vertex to be smooth. You cannot do this by controlling the individual curves. It's well, it's basically impossible, uh especially if you if you say, Oh no, I want my curve to be G3. Okay, I want my surface to be G3. It's it's it's it's very difficult. So all this will come for free. I mean, you so the user will be able to say, I want most of my curves to be uh it's okay if you move them a little bit, but some of my curves I want you to absolutely respect them. I want you you cannot move the curves, and the surfaces have to contain the curves. Right. So this will be a small modification of the workflow, which will take out of the picture a lot of the nasty hardles that we have right now. For example, we have a limitation that you cannot have a face that has less than three corners, right? Okay, so it's annoying. Yeah, what you do is uh you have to split it. So if you want to have something very round, you split it into more faces, and then you have to control the more faces, but then with the new workflow, that will not be a problem because you will say, Yeah, okay, I added uh edges here, but I don't have to worry about them because uh the mathematics will take care of them.

Tassos

I love the it's mostly engineering and not and and not marketing because we keep talking about the excitement of the things we're creating, and that's not a comment on you know, it's not shooting down the existing version of file. We don't look really looking forward to your trying and giving us your opinion, but it's all the excitement of working on new stuff and uh having an attentive audience like you and knowledgeable brings it all out.

Roopinder

For 20 years now, they've been saying CAD or modeling cannot is a mature product and can improve. And so this is actually refreshing to see the ways that it can improve. The way it the way that CAD computer aided design could actually be computer aided and not just you know, not just documentation. It it needs it's we're not done here. We've got all of us in the industry have got work to do. It can it can be better than it is, and it can be more of an assistant to designers. Nice meeting you, gentlemen. Thank you so much. Please don't hesitate to reach out for anything. Okay, thank you.

Roopinder

Thank you for listening to FoDES, The Future of Design and Engineering Software show, brought to you by ENGtechnica. I hope you have learned of a new application or technology that will help you with your job. If you have an application you think would be of interest to other engineers, please let me know by emailing me at roopinder at engtechnica.com or message me on LinkedIn.