pyBar
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Be nice to others! Respect the FreeCAD code of conduct!
Re: pyBar
I couln'd help to read more about the FEM Module, netgen and calculix. My understanding is for an appropriate FEM mesh you need appropriate input date means for shell meshes you need some plane shapes like faces and for an beam mesh (truss calculation like pyBar) you need some 1D axis. At the end, if we would like to generate a mesh what is not a volume (solid) mesh we need the axis stuff yorik made a mantis entry for.
It seams for now pybar is the solution which is easier to get results with.
But one day if the fem wb is ready to use even with beams an shells we are capable of calculating everything what we could model directly from CAD. Something like this probably. http://www.ingware.ch/referenzen/massiv ... orenz.html
bernd
It seams for now pybar is the solution which is easier to get results with.
But one day if the fem wb is ready to use even with beams an shells we are capable of calculating everything what we could model directly from CAD. Something like this probably. http://www.ingware.ch/referenzen/massiv ... orenz.html
bernd
Re: pyBar
Yes I also think something like pybar is a good start... Too bad I didn't receive a reply from its author... When I have a minute again I'll implement that axis stuff so we can look at what to do next...
Re: pyBar
Ok I added the new system:
The structural objects now have an additional property called Nodes, which stores a list of FreeCAD Vectors. These nodes are recalculated on shape change, except if they have been manually changed. They can be displayed in the 3D view using the "Show Nodes" view property (there are mode properties to set the color and width)
So far that is all it does. If one wants to change the nodes, it must be done by python (for example, myObj.Nodes = [ myObj.Nodes[0], myObj.Nodes[1].add(FreeCAD.Vector(.2,0,0) ]
There is still no pybar export, but that should be simple now.
The structural objects now have an additional property called Nodes, which stores a list of FreeCAD Vectors. These nodes are recalculated on shape change, except if they have been manually changed. They can be displayed in the 3D view using the "Show Nodes" view property (there are mode properties to set the color and width)
So far that is all it does. If one wants to change the nodes, it must be done by python (for example, myObj.Nodes = [ myObj.Nodes[0], myObj.Nodes[1].add(FreeCAD.Vector(.2,0,0) ]
There is still no pybar export, but that should be simple now.
Re: pyBar
Look very cool !
I going to compile FreeCAD since I can't wait the building of ppa.
I going to compile FreeCAD since I can't wait the building of ppa.
Formations - Assistance - Développement : https://freecad-france.com
Re: pyBar
It actually is very cool. Works even for double T crosssections I need to play with it on more complex structures.rockn wrote:Look very cool !...
Yorik, ist it imaginable to have the same to slabs but insdead of a axis line it would be an axis face. This stuff is so great. It will be possible to save an analytical model inside an geometrical modell, its just unbelivable and it looks so simply.
Yorik have you ever reading about IFC2x3 Structural Analysis View (the IFC subset to exchange the structural analysis model from a structural modeling to a structural analysis application) ? This file format actually consits basically of stuff like this, axis for columns and beams as well as faces for walls and slabs.
Re: pyBar
Yes, we could upgrade the system... It could even be pretty simple, use the same Nodes property, since we only need 2 vectors to define a plane. Then, depending on the role of the element, we show a line/polyline or a plane.
I didn't know IFC2.3 had such stuff... I'll have a look
I didn't know IFC2.3 had such stuff... I'll have a look
Re: pyBar
yorik wrote:Yes, we could upgrade the system... It could even be pretty simple, use the same Nodes property, since we only need 2 vectors to define a plane. Then, depending on the role of the element, we show a line/polyline or a plane.
...
attached some simply example ifc as arch-ifc and analytical-ifc.
- Attachments
-
- screen2.jpg (82.92 KiB) Viewed 5379 times
-
- screen.jpg (66.37 KiB) Viewed 5379 times
-
- analytical-ifc.zip
- (188.34 KiB) Downloaded 173 times
Re: pyBar
Might be interesting in this regard. viewtopic.php?f=18&t=6589
Re: pyBar
After a long time, some updates on this subject! I had some discussion with the pybar developer, and things are moving. He's now working on making pybar work from the command line, and I'm trying to convince him to make pybar translatable...
In the meantime, I did some changes to the SVG importer of FreeCAD so it can import pybar's SVG results. This would allow to do some cool things like this:
This is just the SVG file imported, scaled, and positioned against a structure, manually. But it gives the idea of what would be achievable without too much effort. Basically in a first moment I'm planning to:
- Add a couple of tools to edit the structural nodes of the Arch structures, so one can make them meet
- Allow to export a pybar file (with just the geometry, without the loads, one would need to put the loading in pybar for now)
- Allow to automatically import and display the result at the correct location on the model
After that we could look at how we could define loads on the Arch structures (that could be used in FEM too), but that's another story...
A little question that annoys me, the pybar files needs the quadratic moments from the sections of the structural members. Calculating that is not hard for rectangular sections, but we should have something that works for any kind of section. Anyone of you engineering gurus has an idea on the subject?
In the meantime, I did some changes to the SVG importer of FreeCAD so it can import pybar's SVG results. This would allow to do some cool things like this:
This is just the SVG file imported, scaled, and positioned against a structure, manually. But it gives the idea of what would be achievable without too much effort. Basically in a first moment I'm planning to:
- Add a couple of tools to edit the structural nodes of the Arch structures, so one can make them meet
- Allow to export a pybar file (with just the geometry, without the loads, one would need to put the loading in pybar for now)
- Allow to automatically import and display the result at the correct location on the model
After that we could look at how we could define loads on the Arch structures (that could be used in FEM too), but that's another story...
A little question that annoys me, the pybar files needs the quadratic moments from the sections of the structural members. Calculating that is not hard for rectangular sections, but we should have something that works for any kind of section. Anyone of you engineering gurus has an idea on the subject?
Re: pyBar
I had a try on this. The code use simplest integration, so not very accurate. Also it would be better to go through every edge and discretize it instead of discretize the wire.A little question that annoys me, the pybar files needs the quadratic moments from the sections of the structural members.
Maybe Opencascade has allready something implemented to calculate this properties?
Code: Select all
import Part
def Moment_2(sketch):
# 1 get inner and outer wire
wires = sketch.Shape.Wires
# check boundingbox diagonals to get outer shape
diagonals = [wire.BoundBox.DiagonalLength for wire in wires]
pos = diagonals.index(max(diagonals))
# reordering
outer_wire = wires[pos]
wires.pop(pos)
wires.insert(0, outer_wire)
Ix = 0
Iy = 0
for j, wire in enumerate(wires):
pts = wire.discretize(1000)
ix = 0
iy = 0
for i, pt in enumerate(pts[:-1]):
# one point integration
midpoint = (pts[i] + pts[i + 1]) * 0.5
diff = pts[i] - pts[i + 1]
ix += midpoint.y ** 3 * diff.x / 3.
iy += midpoint.x ** 3 * diff.y / 3.
Ix += ((j == 0)*2 - 1) * abs(ix)
Iy += ((j == 0)*2 - 1) * abs(iy)
return(Ix, Iy)
a = App.ActiveDocument.Sketch
print(Moment_2(a))