Why ShortCurveTolerance?

Why ShortCurveTolerance?

stefanome
Collaborator Collaborator
2,913 Views
4 Replies
Message 1 of 5

Why ShortCurveTolerance?

stefanome
Collaborator
Collaborator

I understand what ShortCurveTolerance means, I understand how to prevent warnings and error messages popping out because of it, I understand that Revit is designed to "manage stuff", not to create perfect geometries like Inventor.

 

I also understand that it is possible to get high quality drawings out of Revit without high quality 3D solids. The Revit way of doing that is to create a rough 3D representation so the big 3D model doesn't choke under the pressure of too many useless details, then use detail components and other tricks to create the views, rather than creating them out of a perfect 3D models, the way Inventor would do.

 

But I don't understand "why" ShortCurveTolerance is there.

 

I get it, Revit is never going to have a sheet metal module, mating constraints or other awesome things that were in Inventor since day one, because if I needed those I should use Inventor. 

 

But Revit provides APIs that allow to create add-ins that do things behind what Revit already does. So, why throwing a wrench at the knee of the developers and telling them "sorry, the commands we ship with Revit don't create high precision geometries, and we don't want you to do it either"?

 

Right now I need to create a solid with a very small notch. It would be easy to create a few lines and extrude them, but I can't. Instead I can double the number of lines, create a form, then create a void, place them in the right position relative to each other, and end up with the solid I need, with the small notch. The result is much heavier than what I could create if I could use short liens. Here is an example of what I mean, with two 1/4" x 1/4" cubes next to each other, one is a void and cuts 0.001" out of the other (w=0.25, d=0.001):

stefanomenci_0-1619207420680.png

 

I am getting at the point where I need to start sprinkling ugly workarounds like this all around my code, and it just doesn't sound right.

So, before I start working on the ugliest add-in that creates solids using workarounds like this, can someone please explain to me why I shouldn't, i.e. why ShortCurveTolerance exists, and convince me not to do it?

0 Likes
2,914 Views
4 Replies
Replies (4)
Message 2 of 5

RPTHOMAS108
Mentor
Mentor

Probably you've answered your own question. Performance is I assume the largest factor for it existence (generating graphics for subtle details). Perhaps it is also due to some internal data structure limitation etc. 

 

Can you dimension that notch? If you can't dimension it then it will never exist as part of your building. Regardless I would highly recommend you don't incorporate such tiny details in 3D. To create that in one location is fine but to have it multiplied everywhere that it exists in a model is where the performance problem really starts. 

 

I've seen many debates regarding this topic but it's a legacy thing, probably existing since the beginning of Revit and unlikely to change as the result of any of these debates regarding if you need to incorporate details that small. A bit annoying to have to move things twice to avoid this however (that's my biggest issue with it). Sometimes when rounding a dimension to an exact multiple etc. you have to move an object away from target location and then back towards it in order to ensure each move is equal or greater than short curve tolerance.

0 Likes
Message 3 of 5

stefanome
Collaborator
Collaborator

I don't want to dimension it and I don't want to multiply it thousands of times. I just want to be able to do it a few times.

 

I am working on an add-in that helps the user adding all the information required to design panels and their support elements. Imagine a tool to add grids to walls, with all the info about what's going on on every panel and on every grid line. Then uses the grids to create fabrication drawings for every part, export each drawing to DXF and feed it to the CAM to create the CNC program. All of this with zero user intervention.

 

I need every detail to be perfect, the way I would do it in Inventor, because I want to use Revit to produce production ready DXF drawings for the CNC machine.

 

I can do it for most projects that have only rectangular panels, and I can do it for 98% of panels for projects with screwed up windows and fancy parapets. In these easy cases the user will create the grids, then push a button and go home. During the night Revit will create all the 3D representations for every part, create the drawings and delete the 3D representations. The next day I will have a few huge PDF files and thousands of DXF drawings ready for the production.

 

But for that 2% where I don't trust the add-in to automatically do the whole job, I want to allow the user to create the 3D representation on demand, review it and modify it, before pushing the button for the automatic generation.

 

I have no problem getting my add-in to create 3D representations of sheet metal panels that wrap around any fancy canopy, and creating my own unfolding algorithm that unfolds all the faces into a flat pattern. But the sheet metal panel will have some corners closed (one edge used by two faces) and some open (the two faces don't touch each other where the panel is welded rather than folded), and the gap between the two faces must be very small, otherwise the part would be cut shorter and the weld would fail. In the old system based on an old CAD I use a 0.01 mm gap. I haven't made it that far in Revit, but it looks like I can't use DirectShapes because of ShortCurveTolerance.

 

So, now what?

 

Do I need to use forms and voids to simulate what would be so easy using DirectShapes?

 

Do I need to use another tool for that 2% of panels? 

Meaning do I need to create an add-in for Revit for the 98% of panels and an add-in for Inventor for the 2%, and ask every user to work with both the tools?

 

Or should I just forget Revit, create my add-in in Inventor and ask the users to design the whole building in Inventor?

 

Making ShortCurveTolerance a suggestion rather than a hard constraint:

- my life would be much easier

- careful developers would respect the suggestion

- careless developer would have problems... but they are careless, so who cares, right?

 

(Sorry for the long rant, I just hope that someone with a similar experience will give me some useful tips)

0 Likes
Message 4 of 5

BenoitE&A
Collaborator
Collaborator

Interesting !

My guess is, like Thomas said, you already answered the question : if Revit is too limited (and the ShortCurveTolerance is definitely a big limitation) then you should get rid of it.

What I would do is compute the geometry (I guess you first design the pieces and then draw their 2D projections) using Autodesk libraries (or OpenSource equivalent libraries) and clearly do the projection job after this in a separate module. The module you use for this last part is up to you but I would not use Revit because of its limitations.

 


Benoit FAVRE
CEO of etudes & automates
www.etudesetautomates.com/
0 Likes
Message 5 of 5

jeremy_tammik
Alumni
Alumni

Interesting question. Of course, just like you all agree, it is like it is. However, I don't see such a huge problem implementing a simple workaround for the 2% problematic cases. You could easily define a family that represents the desired notch or any other detailed geometry you require without actually forcing Revit to generate the exact equivalent geometric representation on screen. When sending the model to the machine, the instance could be interpreted to generate the required notch. Unfortunately, I guess that is exactly the kind of workaround you would like to avoid...

  

Jeremy Tammik Developer Advocacy and Support + The Building Coder + Autodesk Developer Network + ADN Open
0 Likes