# Exploded View - directions & distance?

**URL:** <https://prepomax.discourse.group/t/exploded-view-directions-distance/715>\
**Category:** General Questions\
**Created:** [February 8, 2023, 12:01pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715 "2023-02-08T12:01:50Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![fatigue.pro](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/fatigue.pro/32/1786_2.png) [@fatigue.pro](https://prepomax.discourse.group/u/fatigue.pro)\
**Post date:** [February 8, 2023, 12:01pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/1 "2023-02-08T12:01:50Z")

</div>

I like the idea of the Exploded View, but in my example of a wind turbine hub it looks not so usable. Parts which are directly mounted to the hub are more fare away than the blade.

 ![](https://global.discourse-cdn.com/free1/uploads/prepomax/original/1X/5f81a7ab79f9a30ffd35eeb883800d7221e1bc3a.png)  
 ![](https://global.discourse-cdn.com/free1/uploads/prepomax/original/1X/711e706c3f7dc305e5fa9610b9bc564f5e5b2c0d.png)  
For me it make more sense, when the solids in the Exploded View are still in the same order than in the normal view.  
You can try the behavior by yourself. I provide the pmx file here:  
[Wind turbine hub calculation in PrePoMax – fatigue.pro](https://fatigue.pro/2023/02/wind-turbine-hub-calculation-in-prepomax#File)

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [February 8, 2023, 1:03pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/2 "2023-02-08T13:03:22Z")

</div>

Well, creating an automatic exploded view needs some instructions behind for the algorithm in the background. I am using the axis oriented bounding boxes (BBs) for determination of the overlapping and the algorithm stars with sorting the parts based on the size of their BBs. Then it goes through the list from the biggest BB to the smallest BB and moves the current BB it if it overlaps any previously visited BB.

For your assembly some other procedure might work better, but then it will not work for all other assemblies.

---

<div class="post-metadata">

**Author:** ![fatigue.pro](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/fatigue.pro/32/1786_2.png) [@fatigue.pro](https://prepomax.discourse.group/u/fatigue.pro)\
**Post date:** [February 8, 2023, 1:47pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/3 "2023-02-08T13:47:40Z")

</div>

Thanks for your explanation, but I expected that an exploded view is based on the direction from the origin (or a selected point of explosion) to the middle of the every BB and then moved in that directions combined with a scale factor applied on that distance.  
Is overlapping not acceptable? If we talk about a View then overlapping can be accepted, because that can be readjusted with the scale factor for the distance.

With a small scale factor, we would able to only add a small gap between the solids and we can pick easily the contact surfaces.

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [February 8, 2023, 2:24pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/4 "2023-02-08T14:24:28Z")

</div>

The problem I had with such approach, to compute the direction from the origin, can be seen with an example of the bearing. Both, internal and external bearing rings have the same position of their center. In this case both of them would always be moved for the same amount in the same direction. No explosion would occur 🙂

But exploded view was added to enable simpler selection of overlapping surfaces and thus, the idea was to remove overlapping. I checked some CAD programs how it is done and did not find any better idea. So I am still open to suggestions.

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [February 8, 2023, 2:25pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/5 "2023-02-08T14:25:27Z")

</div>

A side note - I would definitely remove text engravings from your model.

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [February 8, 2023, 2:38pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/6 "2023-02-08T14:38:11Z")

</div>

@fatigue.pro Did you check how FreeCAD handles exploded view of this assembly ? This could provide an interesting comparison and maybe some ideas for improvements.

> [@Matej](#):
>
> A side note - I would definitely remove text engravings from your model.

Normally yes - to reduce the mesh size. But I assume that they were left here on purpose since this model is used for presentation.

---

<div class="post-metadata">

**Author:** ![fatigue.pro](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/fatigue.pro/32/1786_2.png) [@fatigue.pro](https://prepomax.discourse.group/u/fatigue.pro)\
**Post date:** [February 8, 2023, 4:59pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/7 "2023-02-08T16:59:47Z")

</div>

> [@Matej](#):
>
> … example of the bearing. Both, internal and external bearing rings have the same position of their center. In this case both of them would always be moved for the same amount in the same direction. No explosion would occur

I thought you count the solids. And then the first solid get the normal scale factor e.g. 1.5:  
(1.5+(0\*(1.5-1))=1.5 \* distance of first solid → first solid  
(1.5+(1\*(1.5-1))=2 \* distance of second solid → second solid  
(1.5+(2\*(1.5-1))=2.5 \* distance of third solid → third solid  
(1.5+(n\*(1.5-1))=x \* distance of n-th solid → n-th solid

But the solids must be counted sector by sector!  
If Z is normal direction I would suggest in plane XY four sectors for counting (can be also 3D):  
From the BB mid coordinates i suggest:  
sign(absmax(X,Y)) \* absmax(X,Y) and that should be -X, +X , -Y or +Y sector

In standard FreeCAD i never found an exploded view option. That is the reason why i like this view in PrePoMax.

> [@Matej](#):
>
> side note - I would definitely remove text engravings from your model.

FEAnalyst is right. It is much easier to make screen shots or animated views with a that kind of watermark.  
 ![](https://global.discourse-cdn.com/free1/uploads/prepomax/original/1X/619fc2a4e90bbbb8c757f33b6d6c7ca922fbaca5.gif)

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [February 8, 2023, 5:23pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/8 "2023-02-08T17:23:37Z")

</div>

> [@fatigue.pro](#):
>
> In standard FreeCAD i never found an exploded view option.

There’s a separate workbench for this, you can download it using Addon Manager: [ExplodedAssembly Workbench - FreeCAD Documentation](https://wiki.freecad.org/ExplodedAssembly_Workbench/en)

---

<div class="post-metadata">

**Author:** ![synt](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/synt/32/4658_2.png) [@synt](https://prepomax.discourse.group/u/synt)\
**Post date:** [February 8, 2023, 9:30pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/9 "2023-02-08T21:30:48Z")

</div>

another software use simplification in option menu of exploded view:

- space XYZ
- plane XY, XZ, YZ
- axes X,Y, Z

and explosion scale

but, current implementation still usable to easy selection of an object or face when it combine with rotation by mouse.

---

<div class="post-metadata">

**Author:** ![fatigue.pro](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/fatigue.pro/32/1786_2.png) [@fatigue.pro](https://prepomax.discourse.group/u/fatigue.pro)\
**Post date:** [February 9, 2023, 5:20am UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/10 "2023-02-09T05:20:58Z")

</div>

> [@FEAnalyst](#):
>
> There’s a separate workbench for this, you can download it using Addon Manager: [ExplodedAssembly Workbench - FreeCAD Documentation](https://wiki.freecad.org/ExplodedAssembly_Workbench/en)

That is not comparable. In FreeCAD is no automatic mode. You must specify every group and path.  
Here is an example definition

[![](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/c/cbcb7624b28256eb7672324127512e33c1fad724.jpeg "Exploded Assembly with Animation in FreeCAD | FreeCAD Tutorial | FreeCAD Exploded Assembly |") ](https://www.youtube.com/watch?v=LfJGYSv96yo&t=87)

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [February 9, 2023, 5:59pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/11 "2023-02-09T17:59:42Z")

</div>

When I searched for solutions, I concluded that without knowing the assembly constraints, this process cannot be done correctly for all assemblies. So I chose the one that I though would work in most cases.

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [February 10, 2023, 9:58am UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/12 "2023-02-10T09:58:59Z")

</div>

Maybe I could change the algorithm to first sort the parts by their distance from the central point, and then if the distance is similar, decide which part moves first based on their size. In this case, I think the central point should be precomputed as the center of the assembly with the possibility that the user can change it.

---

<div class="post-metadata">

**Author:** ![Tor](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/tor/32/870_2.png) [@Tor](https://prepomax.discourse.group/u/Tor)\
**Post date:** [February 11, 2023, 8:37am UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/13 "2023-02-11T08:37:30Z")

</div>

For what its worth: the exploded view in ppm has been a godsend to me. I find it super useful, very often. Well done 👏 if its about to get even better - awesome 🙂

---

<div class="post-metadata">

**Author:** ![fatigue.pro](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/fatigue.pro/32/1786_2.png) [@fatigue.pro](https://prepomax.discourse.group/u/fatigue.pro)\
**Post date:** [March 12, 2023, 5:47pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/14 "2023-03-12T17:47:36Z")

</div>

👍 Sometimes it works perfect for me. Here an example of a steel wheel. 💪  
 ![](https://global.discourse-cdn.com/free1/uploads/prepomax/original/1X/3b88af5640a1650690514e30f234ac1c7ab95b48.png)

---

<div class="post-metadata">

**Author:** ![fatigue.pro](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/fatigue.pro/32/1786_2.png) [@fatigue.pro](https://prepomax.discourse.group/u/fatigue.pro)\
**Post date:** [June 21, 2023, 2:50pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/15 "2023-06-21T14:50:19Z")

</div>

I found a comparable function in ANSYS Mechanical (described a bit here [10 Useful New Features in ANSYS Mechanical 16.0 - PADT](https://www.padtinc.com/2015/02/13/10-useful-new-features-in-ansys-mechanical-16-0/), see number 10).  
So i tried this with the wind turbine hub model and it looks not much better. It is still in the right order, but the direction & the distance is not so useful.

 ![wtg_hub_v4_exploded_ansys](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/2/2e59f2509784c2b5a015802a0875b09bbe51509f.png)

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [July 4, 2023, 11:31am UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/16 "2023-07-04T11:31:29Z")

</div>

In the newest version, I have added support for the “Center point” method of the exploded view.

The user enters (can not select on 3D view) the center point and then all parts are exploded based on the scaled distance between their bounding box center and the entered point.

 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/a/acb733d5b6e4f7260f0d5b33f8794aca7c3a2e2b.png)

---

<div class="post-metadata">

**Author:** ![Ghayth](https://avatars.discourse-cdn.com/v4/letter/g/2bfe46/32.png) [@Ghayth](https://prepomax.discourse.group/u/Ghayth)\
**Post date:** [March 12, 2024, 11:21am UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/17 "2024-03-12T11:21:11Z")

</div>

I have a question about this subject. I am trying to write a Python code to automate the process of generating an exploded view. The idea is to input the file as a STEP file and get the output as an exploded view. The problem is I don’t know where to start. Could anyone help me with that?

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [March 12, 2024, 2:54pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/18 "2024-03-12T14:54:39Z")

</div>

That is not a simple task. You will need the geometry library first to read the CAD geometry. I use OpenCascade. Maybe try using Gmsh since it supports CAD and geometry manipulation.

The easiest way to create an exploded view is to determine the coordinate axis-oriented bounding boxes for all parts. Then, compute the center point of the exploded view. Then, compute the distances from the center point to each bounding box center. In the end, use a scaling factor to increase these distances and move the parts to new positions of the bounding box centers.

---

<div class="post-metadata">

**Author:** ![Ghayth](https://avatars.discourse-cdn.com/v4/letter/g/2bfe46/32.png) [@Ghayth](https://prepomax.discourse.group/u/Ghayth)\
**Post date:** [March 12, 2024, 10:29pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/19 "2024-03-12T22:29:56Z")

</div>

First, I am really thankful for your response. I don’t know how I could thank you enough. I understand this is not an easy task, but I am working on a project related to this and didn’t know where to start. You mentioned something about a geometry library, and here was my problem: I didn’t know how to read this STEP file. I have tried using FreeCAD, but it was not helpful, or the documentation was not that great. I will first try to use what you have suggested to me. If I can read and deal with the STEP file, it will make the idea easier. Then, I will try your approach.

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [March 12, 2024, 11:07pm UTC](https://prepomax.discourse.group/t/exploded-view-directions-distance/715/20 "2024-03-12T23:07:24Z")

</div>

Speaking about FreeCAD, it has add-on Exploded Assembly workbench. Maybe it could help you. Especially since it’s Python-based: [GitHub - JMG1/ExplodedAssembly: FreeCAD workbench to create exploded views and animations of assemblies](https://github.com/JMG1/ExplodedAssembly)

[Next page](https://prepomax.discourse.group/t/exploded-view-directions-distance/715.md?page=2)
