# Creating Joints on assembly meshes

**URL:** <https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139>\
**Category:** General Questions\
**Created:** [November 2, 2024, 7:29pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139 "2024-11-02T19:29:32Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 7:29pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/1 "2024-11-02T19:29:32Z")

</div>

Hey friends,

I’m trying to put together a mesh of a wing I made for testing purposes and realized I don’t know how to make joints. After researching a bit, I realized I may be the first person to wonder about this.

In the aerospace/aeronautics industry where I do work we almost never use unstructured solid meshes. Virtually everything is shells, beams, springs/bushes, baris, and rods. This is for performance purposes in every sense that word applies, as for spacecraft in particular, we do lots of dynamic analyses and those output files can get quite inconvenient for big meshes.

In femap/patran/ansaMeta/Mypermesh/abaqus, you can just connect nodes together with 1d elements to represent rivets. This method is only really acceptable for very carefully made meshes with precisely controlled element sizes but it’s very common in aircraft.

I would merely like to attach the skin to the spars with 1d elements as shown here, but I don’t know of any way to do this in prepomax, and doing this with text injection would be horrifically slow.

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

Do any of you have any ideas on how I should do this?

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 7:33pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/2 "2024-11-02T19:33:01Z")

</div>

I went into work and did it in femap to show more clearly what I’m looking to do. This was extremely easy to do in femap, even doing them one element at a time.

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

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 8:19pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/3 "2024-11-02T20:19:58Z")

</div>

Much to my delight/horror, I have found a way to do this and it’s pretty bad.

I think if I make a reference point between every two fastened nodes (which is an excellent feature by the way thank you!) and then I can make a rigid between the two points! This is a lot of effort and will need as many reference nodes as there are fasteners.

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

I believe I will not be able to recover element forces on these rigids, making this quite unhelpful for postprocessing.

---

<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:** [November 2, 2024, 8:23pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/4 "2024-11-02T20:23:50Z")

</div>

Considering the element types available in CalculiX (no easy fasteners like in Abaqus, unfortunately), 2-node springs might be the best. They aren’t supported in PrePoMax yet but their definition in the .inp files is pretty simple so they could make sense for such connections.

> [@Spring between two nodes](https://prepomax.discourse.group/t/spring-between-two-nodes/116):
>
> In CalculiX there are three types of spring elements: SPRING1 - between a node and a ground SPRING2 - between two nodes, acting in a fixed, selected direction SPRINGA - between two nodes, acting along the line joining the nodes In the current version of PrePoMax there is a point spring and surface spring constraint available. Both use SPRING1 elements and thus can be utilized to apply springs between nodes/surfaces and ground. It would be nice to also have a support for the remaining two spri…

> [@Quick connection of assembled parts](https://prepomax.discourse.group/t/quick-connection-of-assembled-parts/2058):
>
> Hello! I hope you’re all doing fine. Since I work mostly with riveted joints with dozens, hundreds if not thousands of rivets, usually setting up so many connections is very tedious. To improve this aspect and bring new functionalities to the software, I would like to suggest faster ways to connect many parts. RBE connecting many geometric features: in this tool, the selected geometries would be connected together using a RBE. One can select adjacent edges that will be glued or welded togethe…

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 8:35pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/5 "2024-11-02T20:35:08Z")

</div>

So, typically, in nastran which is the solver my industry uses most of the time, we don’t use “true springs” anymore, we did in the 80s but not anymore.

Nowadays we use beams and bars. I know for certain that calculix has those.

---

<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:** [November 2, 2024, 8:39pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/6 "2024-11-02T20:39:24Z")

</div>

Yes, but CalculiX doesn’t have true 2D and 1D elements. They are all internally expanded to solids. For shells, it’s usually not a problem but it’s troublesome for beams/trusses. Springs seem to be the easiest choice here but of course you could try using beams or trusses (also not yet supported in PrePoMax and their manual definition can be more tedious).

I would probably advise you to use FreeCAD FEM with Mystran solver based on Nastran but FreeCAD FEM doesn’t support mixed meshes for now.

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 8:44pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/7 "2024-11-02T20:44:38Z")

</div>

I understand that they are not “true” elements but for now they are far better than nothing, and I’m okay backing out forces from element stresses if I must use section property defined beams/bars as abaqus does.

I am actually one of the developers and maintainers of mystran! I’m here using prepomax to evaluate for usage at my job for some fairly exotic large deflections and buckling work we’re doing and we love the prepomax UI.

The fact that freecad doesn’t support mixed meshes is absolutely why I am here, as I’ve made scripts and tools using its API in the past but my coworkers absolutely loathe that process.

The only reason we haven’t switched over to prepomax and calculix for all kinds of stuff is this feature disparity; we very much would like the ability to deal with joints in a slightly better way. In fact I actually have no idea how anybody does analysis on anything more than one part at this point.

I’ll see if this method of using rigids and central control points works on a small enough scale first. It’s a lot of work.

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

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 8:55pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/8 "2024-11-02T20:55:28Z")

</div>

I now actually think this method, with a very small amount of automation, would work very well for non rigids!

This still allows the paradigm of keeping things geometry defined, which is a soft design requirement for this software, as it keeps associativity to the points rather than the nodes.

---

<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:** [November 2, 2024, 9:04pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/9 "2024-11-02T21:04:12Z")

</div>

> [@zchlrnr](#):
>
> I’m okay backing out forces from element stresses if I must use section property defined beams/bars

You can use `*EL FILE, SECTION FORCES` to get forces instead of stresses for beam elements.

> [@zchlrnr](#):
>
> I’ll see if this method of using rigids and central control points works on a small enough scale first. It’s a lot of work.

You could also use one ref point connecting two sides in multiple points (select all the points as a region for rigid body constraint):

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

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 9:17pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/10 "2024-11-02T21:17:08Z")

</div>

Thank you! I didn’t know you could do that.  
And do you know if you can get resultant forces through a big rigid like that? You can do it in nastran with an entry called GPFORCE and then doing coordinate transformation math, but I don’t know about calculix. If so I’ll try it!

And do you know if when I make beam elements in the deck, are they rendered as visible in prepomax even if they aren’t selectable?

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 9:19pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/11 "2024-11-02T21:19:34Z")

</div>

Would anybody here be able to let me know if it’s a bug that certain constraints don’t draw their lines to every node they are connected to?

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

---

<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:** [November 2, 2024, 9:31pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/12 "2024-11-02T21:31:14Z")

</div>

> [@zchlrnr](#):
>
> And do you know if you can get resultant forces through a big rigid like that?

That will be more tricky. Ref points themselves only provide reaction forces when BCs are applied to them. But you could try attaching one node spring (SPRING1) to that ref point.

> [@zchlrnr](#):
>
> And do you know if when I make beam elements in the deck, are they rendered as visible in prepomax even if they aren’t selectable?

You can add beams using built-in Keyword Editor but they won’t be visible until you open the results.

> [@zchlrnr](#):
>
> Would anybody here be able to let me know if it’s a bug that certain constraints don’t draw their lines to every node they are connected to?

I think that it’s not a bug and those lines are generated in a smaller number (not for every node) to avoid cluttering and slowing down the viewport. You could see that by applying the constraint to all nodes on a certain face.

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 2, 2024, 9:48pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/13 "2024-11-02T21:48:47Z")

</div>

It’s certainly struggling. I don’t think the method I did worked at all. When I run a fixed modal, the skin isn’t attached to the spars at all, implying this method is completely nonfunctional.  
Are you aware of any other way to do this?  
How did you make that region plot in your post? Is there a way to pick the nodes I put in a nodeset directly?

If I need to create faces fine enough such that I could select only the nodes on one element, then I’m not even really meshing it in prepomax anymore, I’m meshing it in the CAD software.

---

<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:** [November 2, 2024, 10:01pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/14 "2024-11-02T22:01:04Z")

</div>

What if you remove the rigid body constraints you created initially (those with ref point in the middle between two nodes) and leave only the one connecting all the nodes in the model that should be connected (like in my example - the corners were clearly connected) ?

Regarding the selection, there are multiple ways. It can be based on vertices from the CAD geometry (what I used) or nodes from the FE mesh. You can create a node set containing multiple mesh nodes and select it for the rigid body constraint (instead of Selection for Region).

---

<div class="post-metadata">

**Author:** ![ANYS](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/anys/32/7737_2.png) [@ANYS](https://prepomax.discourse.group/u/ANYS)\
**Post date:** [November 2, 2024, 10:39pm UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/15 "2024-11-02T22:39:03Z")

</div>

> [@zchlrnr](#):
>
> When I run a fixed modal, the skin isn’t attached to the spars at all, implying this method is completely nonfunctional.

Could you post the model to take a look?. This aproach worked for me some days ago when searching for a a fast way to apply rivets. I defined two separated kinematic couplings but they had the ref in commond. Reactions forces can be measured directly as sumation on the each Nset separately.

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 3, 2024, 3:45am UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/16 "2024-11-03T03:45:33Z")

</div>

@ANYS here you are, if you’ve gotten this to work I’d love to know how.  
At this point, it feels to me like there’s just no way to attach more than one part together at all. I can’t click individual nodes to make the rigids, it’s very frustrating.

 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/b/bee1abe1672de29f91c0678d934c6685e784a5d4.jpeg)

I’ll post another image in another reply after this showing the boundary conditions

---

<div class="post-metadata">

**Author:** ![zchlrnr](https://avatars.discourse-cdn.com/v4/letter/z/47e85d/32.png) [@zchlrnr](https://prepomax.discourse.group/u/zchlrnr)\
**Post date:** [November 3, 2024, 3:46am UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/17 "2024-11-03T03:46:31Z")

</div>

![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/0/037dde2fbbde30b4e338a5bcce648d314340d74c.png)  
here is the modeling conditions, as you can see it should be attached where the rigids are

---

<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:** [November 3, 2024, 8:27am UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/18 "2024-11-03T08:27:57Z")

</div>

Can you try with one rigid body constraint (one ref point) including all those points ? I guess you can’t share the file with this wing model for some testing ?

---

<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:** [November 3, 2024, 9:48am UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/19 "2024-11-03T09:48:04Z")

</div>

> [@FEAnalyst](#):
>
> I think that it’s not a bug and those lines are generated in a smaller number (not for every node) to avoid cluttering and slowing down the viewport. You could see that by applying the constraint to all nodes on a certain face.

I can confirm this is a feature 🙂

I am sorry that there are no connection capabilities in PrePoMax at the moment. If there is enough pressure, I might start adding some. At least rigid connections between selected points would be easy to add.

---

<div class="post-metadata">

**Author:** ![arnie](https://avatars.discourse-cdn.com/v4/letter/a/ba9def/32.png) [@arnie](https://prepomax.discourse.group/u/arnie)\
**Post date:** [November 3, 2024, 11:22am UTC](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139/20 "2024-11-03T11:22:49Z")

</div>

> [@Matej](#):
>
> I am sorry that there are no connection capabilities in PrePoMax at the moment. If there is enough pressure, I might start adding some. At least rigid connections between selected points would be easy to add.

This would be soooooo useful ! 🙂

[Next page](https://prepomax.discourse.group/t/creating-joints-on-assembly-meshes/2139.md?page=2)
