FEM Tutorial Python/pl: Difference between revisions
(Created page with "Poradnik: Skrypty w Środowisku MES") |
(Created page with "Miłej zabawy! Również jeśli masz opinie lub jakiekolwiek poprawki, nie krępuj się uczestniczyć w rozmowach [https://forum.freecadweb.org/viewforum.php?f=18 forum MES dla FreeCAD].") |
||
(43 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
{{TutorialInfo |
{{TutorialInfo/pl |
||
|Topic= |
|Topic= Analiza metodą elementów skończonych |
||
|Level= |
|Level= Średnio zaawansowany |
||
|Time= 30 |
|Time= 30 minut |
||
|Author=[http://www.freecadweb.org/wiki/index.php?title=User:Berndhahnebach Bernd] |
|Author=[http://www.freecadweb.org/wiki/index.php?title=User:Berndhahnebach Bernd] |
||
|FCVersion=0.18.15985 |
|FCVersion=0.18.15985 lub nowszy |
||
|Files= |
|Files=nie dołączono |
||
}} |
}} |
||
= |
<span id="Introduction"></span> |
||
==Wprowadzenie== |
|||
This tutorial is meant to show how a simple Finite Element Analysis ('''FEA''') in FreeCAD's [[Image:Workbench_FEM.svg|32px]] |
|||
[[FEM Module|FEM Workbench]] is done using python. The model from the [[FEM CalculiX Cantilever 3D|FEM CalculiX Cantilever 3D]] tutorial will be used for this example. |
|||
Ten poradnik ma na celu pokazanie, jak wykonać prostą analizę metodą elementów skończonych ''('''FEA''')'' w środowisku [[Image:Workbench_FEM.svg|32px]] [[FEM_Workbench/pl|MES]] programu FreeCAD przy użyciu Pythona. W tym przykładzie wykorzystany zostanie model z poradnika [[FEM_CalculiX_Cantilever_3D/pl|CalculiX wspornik 3D]]. |
|||
[[Image:FEM_example01_pic00.jpg|700px]] |
[[Image:FEM_example01_pic00.jpg|700px]] |
||
<span id="Requirements"></span> |
|||
===Wymagania=== |
|||
* Kompatybilna wersja FreeCAD wskazana w opisie poradnika. |
|||
=== Requirements === |
|||
*: Użyj {{MenuCommand|Pomoc → O FreeCAD}}, aby zobaczyć wersję FreeCAD, która jest zainstalowana. |
|||
* The compatible version of FreeCAD as designated in the tutorial overview. |
|||
* '''Ważna uwaga:''' Ze względu na ciągły rozwój środowiska [[Image:Workbench_FEM.svg|32px]] [[FEM_Workbench|MES]] zaleca się korzystanie z najnowszego snapshota rozwojowego FreeCAD, szczególnie w przypadku analiz MES opartych na skryptach Python. |
|||
*: Use the {{MenuCommand|Help → About FreeCAD}} to see the version of FreeCAD that is installed. |
|||
* Działające środowisko pracy MES. Uruchom analizę [[FEM_CalculiX_Cantilever_3D/pl|CalculiX wspornik 3D]], aby upewnić się, że tak jest. |
|||
* '''Impotant Note:''' Due to the continuous development of the [[Image:Workbench_FEM.svg|32px]] [[FEM Module|FEM Workbench]] it is recommended to use the latest development snapshot of FreeCAD especially for python scripted FEM analyses. |
|||
* A working FEM workbench. Run the [[FEM CalculiX Cantilever 3D|FEM CalculiX Cantilever 3D]] analysis to ascertain this. |
|||
<span id="Let's_start"></span> |
|||
== Let's start == |
|||
==Zaczynajmy== |
|||
=== New document and the part to analyze === |
|||
<span id="New_document_and_the_part_to_analyze"></span> |
|||
===Nowy dokument i część do analizy=== |
|||
{{Code|code= |
{{Code|code= |
||
Line 45: | Line 49: | ||
}} |
}} |
||
<span id="Analysis_and_analysis_objects"></span> |
|||
=== Analysis and analysis objects === |
|||
===Analiza i obiekty analizy=== |
|||
{{Code|code= |
{{Code|code= |
||
Line 92: | Line 97: | ||
<div class="mw-collapsible mw-collapsed toccolours" style="width:750px "> |
<div class="mw-collapsible mw-collapsed toccolours" style="width:750px "> |
||
= |
<span id="FEM_mesh_(manual)"></span> |
||
===Siatka MES ''(ręcznie)''=== |
|||
This section contains the FEM mesh code. Please expand it to view the contents. |
|||
Ta sekcja zawiera kod siatki MES. Rozwiń ją, aby wyświetlić zawartość. |
|||
'''Note:''' Check out the [[#Additional Information|Additional Information]] section below for how to script mesh generation with GMSH or Netgen mesh object. |
|||
'''Uwaga:''' Zapoznaj się z sekcją [[#Informacje_dodatkowe|Informacje dodatkowe]] poniżej, aby dowiedzieć się, jak tworzyć skrypty generowania siatki za pomocą obiektu siatki GMSH lub Netgen. |
|||
<div class="mw-collapsible-content"> |
<div class="mw-collapsible-content"> |
||
Line 413: | Line 420: | ||
femmesh.addVolume([9, 29, 39, 30, 147, 127, 215, 148, 78, 126], 226) |
femmesh.addVolume([9, 29, 39, 30, 147, 127, 215, 148, 78, 126], 226) |
||
femmesh.addVolume([40, 9, 19, 39, 214, 105, 168, 90, 215, 169], 227) |
femmesh.addVolume([40, 9, 19, 39, 214, 105, 168, 90, 215, 169], 227) |
||
# add it to the analysis |
# add it to the analysis |
||
Line 419: | Line 425: | ||
femmesh_obj.FemMesh = femmesh |
femmesh_obj.FemMesh = femmesh |
||
analysis_object.addObject(femmesh_obj) |
analysis_object.addObject(femmesh_obj) |
||
}} |
|||
}} |
|||
</div> <!-- END of FEM mesh collapsible section. Do not remove --> |
</div> <!-- END of FEM mesh collapsible section. Do not remove --> |
||
</div> <!-- END of FEM mesh collapsible section. Do not remove --> |
</div> <!-- END of FEM mesh collapsible section. Do not remove --> |
||
<span id="FEM_mesh_(gmsh)"></span> |
|||
=== FEM mesh (gmsh) === |
|||
===Siatka MES ''(gmsh)''=== |
|||
{{Code|code= |
{{Code|code= |
||
Line 440: | Line 447: | ||
}} |
}} |
||
= |
<span id="FEM_mesh_(netgen)"></span> |
||
===Siatka MES ''(netgen)''=== |
|||
{{Code|code= |
{{Code|code= |
||
Line 454: | Line 462: | ||
}} |
}} |
||
= |
<span id="Recompute"></span> |
||
===Ponowne obliczanie=== |
|||
{{Code|code= |
{{Code|code= |
||
Line 463: | Line 472: | ||
}} |
}} |
||
<span id="Run_the_analysis"></span> |
|||
== Run the analysis == |
|||
==Uruchomienie analizy== |
|||
Aby uruchomić analizę za pomocą środowiska Python, należy utworzyć instancję modułu {{incode|ccxtools}} klasy {{incode|FemToolsCcx}}. Po utworzeniu tej instancji mamy dwie możliwości uruchomienia analizy: |
|||
# Uruchomić wszystkie procesy jednocześnie ''(patrz sekcja [[#Wszystko_w_jednym|"Wszystko w jednym"]])''. |
|||
# Run all processes together at once (see [[#All in one|"All in one"]] section below) |
|||
# Uruchomić procesy jeden po drugim ''(patrz sekcja [[#Krok_po_kroku|"Krok po kroku"]])''. |
|||
# Run processes one after the other (see [[#Step by step|"Step by step"]] section below) |
|||
Jeśli w dokumencie jest tylko jedna analiza i tylko jeden solver w analizie, to nie trzeba przekazywać żadnych obiektów do {{incode|fea init}}. Metoda {{incode|init}} klasy {{incode|fea}} aktywuje analizę '''jeśli GUI działa'''. |
|||
Aktywacja analizy przy użyciu Python działa w następujący sposób: |
|||
Activating an analysis using Python works a follows: |
|||
{{Code|code= |
{{Code|code= |
||
Line 480: | Line 490: | ||
}} |
}} |
||
<span id="All_in_one"></span> |
|||
==== All in one ==== |
|||
====Wszystko w jednym==== |
|||
{{Code|code= |
{{Code|code= |
||
Line 492: | Line 503: | ||
}} |
}} |
||
<span id="Step_by_step"></span> |
|||
==== Step by step ==== |
|||
====Krok po kroku==== |
|||
{{Code|code= |
{{Code|code= |
||
Line 512: | Line 524: | ||
else: |
else: |
||
FreeCAD.Console.PrintError("Houston, we have a problem! {}\n".format(message)) # in report view |
FreeCAD.Console.PrintError("Houston, we have a problem! {}\n".format(message)) # in report view |
||
print("Houston, we have a problem! {}\n".format(message)) # in |
print("Houston, we have a problem! {}\n".format(message)) # in Python console |
||
### |
### |
||
}} |
}} |
||
<span id="Show_the_results"></span> |
|||
== Show the results == |
|||
==Wyświetlenie wyników== |
|||
{{Code|code= |
{{Code|code= |
||
# show some results |
# show some results |
||
Line 531: | Line 545: | ||
}} |
}} |
||
<span id="Additional_Information"></span> |
|||
=== Additional Information === |
|||
===Informacje dodatkowe=== |
|||
<span id="Scripting_FEM_mesh_objects"></span> |
|||
==== Scripting FEM mesh objects ==== |
|||
====Tworzenie obiektów siatki FEM skryptami==== |
|||
= |
<span id="Netgen"></span> |
||
=====Netgen===== |
|||
Scripting the Netgen mesh object was attempted in the [http://forum.freecadweb.org/viewtopic.php?f=18&t=16944#p134519 "Parametrized FEM study"] (FreeCAD FEM subforum thread), but has some limitations. |
|||
Tworzenie obiektów siatki Netgen skryptami było próbowane w ''(wątek forum FreeCAD FEM)'' [http://forum.freecadweb.org/viewtopic.php?f=18&t=16944#p134519 "Sparametryzowane badanie MES"], ale ma pewne ograniczenia. |
|||
===== GMSH ===== |
|||
On the contrary, the GMSH mesh object fully supports python scripting. See the following forum posts: |
|||
<span id="GMSH"></span> |
|||
=====GMSH===== |
|||
Przeciwnie, obiekt siatki GMSH w pełni obsługuje skrypty Pythona. Zobacz następujące posty na forum: |
|||
* https://forum.freecadweb.org/viewtopic.php?f=22&t=42922#p365042 |
* https://forum.freecadweb.org/viewtopic.php?f=22&t=42922#p365042 |
||
* |
* temat na forum http://forum.freecadweb.org/viewtopic.php?f=18&t=20087 |
||
<span id="Scripting_multiple_analysis"></span> |
|||
==== Scripting multiple analysis ==== |
|||
====Tworzenie skryptów do wielu analiz==== |
|||
See forum post: http://forum.freecadweb.org/viewtopic.php?f=18&t=19549#p151385 |
|||
Zobacz temat na forum: http://forum.freecadweb.org/viewtopic.php?f=18&t=19549#p151385 |
|||
==== Scripting results ==== |
|||
===== Standard FreeCAD result object ===== |
|||
<span id="Scripting_results"></span> |
|||
See forum posts: |
|||
====Tworzenie skryptu wyników==== |
|||
* https://forum.freecadweb.org/viewtopic.php?f=18&t=34048&p=289519#p289519 → scale factor in standard result object |
|||
<span id="Standard_FreeCAD_result_object"></span> |
|||
=====Standardowy obiekt wyników FreeCAD===== |
|||
Zobacz posty na forum: |
|||
* https://forum.freecadweb.org/viewtopic.php?f=18&t=34048&p=289519#p289519 → współczynnik skali w standardowym obiekcie wynikowym. |
|||
* http://forum.freecadweb.org/viewtopic.php?f=18&t=4677&start=20#p148982 |
* http://forum.freecadweb.org/viewtopic.php?f=18&t=4677&start=20#p148982 |
||
* http://forum.freecadweb.org/viewtopic.php?f=18&t=4677&start=30#p149043 |
* http://forum.freecadweb.org/viewtopic.php?f=18&t=4677&start=30#p149043 |
||
* http://forum.freecadweb.org/viewtopic.php?t=18415#p144028 |
* http://forum.freecadweb.org/viewtopic.php?t=18415#p144028 |
||
* https://forum.freecadweb.org/viewtopic.php?f=18&t=31123&p=258761#p258761 → |
* https://forum.freecadweb.org/viewtopic.php?f=18&t=31123&p=258761#p258761 → kolorowanie tylko jednego elementu. |
||
* https://forum.freecadweb.org/viewtopic.php?f=18&t=41951&p=357687#p357685 → |
* https://forum.freecadweb.org/viewtopic.php?f=18&t=41951&p=357687#p357685 → zresetuj całą siatkę wynikową, pokaż pokolorowaną wielkość przemieszczenia. |
||
<span id="Vtk_result_object"></span> |
|||
===== Vtk result object ===== |
|||
=====Obiekt wyników Vtk===== |
|||
See forum posts: |
|||
Zobacz temat na forum: |
|||
* https://forum.freecadweb.org/viewtopic.php?f=18&t=47227#p405406 |
* https://forum.freecadweb.org/viewtopic.php?f=18&t=47227#p405406 |
||
<span id="Console_mode"></span> |
|||
==== Console mode ==== |
|||
====Tryb konsoli==== |
|||
Writing the input file in FreeCAD console mode (no Gui) could be done in test mode. See this relevant [https://forum.freecadweb.org/viewtopic.php?f=22&t=25852&p=208897#p208897 forum post] for more details and experimentation. |
|||
Zapis pliku wejściowego w trybie konsoli FreeCAD ''(bez Gui)'' można wykonać w trybie testowym. Zobacz ten odpowiedni [https://forum.freecadweb.org/viewtopic.php?f=22&t=25852&p=208897#p208897 post na forum], aby uzyskać więcej informacji i poeksperymentować. |
|||
<span id="Appendix"></span> |
|||
==Dodatek== |
|||
Miłej zabawy! Również jeśli masz opinie lub jakiekolwiek poprawki, nie krępuj się uczestniczyć w rozmowach [https://forum.freecadweb.org/viewforum.php?f=18 forum MES dla FreeCAD]. |
|||
== Appendix == |
|||
Have Fun! Also if you have feedback or any refinements, feel free to participate on the [https://forum.freecadweb.org/viewforum.php?f=18 FreeCAD FEM subforum]. |
|||
{{Tutorials navi{{#translation:}}}} |
|||
{{FEM Tools navi{{#translation:}}}} |
{{FEM Tools navi{{#translation:}}}} |
||
{{Userdocnavi{{#translation:}}}} |
{{Userdocnavi{{#translation:}}}} |
||
[[Category:Python Code{{#translation:}}]] |
[[Category:Python Code{{#translation:}}]] |
||
{{clear}} |
Latest revision as of 12:53, 20 November 2023
Ćwiczenie |
Temat |
---|
Analiza metodą elementów skończonych |
Poziom trudności |
Średnio zaawansowany |
Czas wykonania |
30 minut |
Autorzy |
Bernd |
Wersja FreeCAD |
0.18.15985 lub nowszy |
Pliki z przykładami |
nie dołączono |
Zobacz również |
- |
Wprowadzenie
Ten poradnik ma na celu pokazanie, jak wykonać prostą analizę metodą elementów skończonych (FEA) w środowisku MES programu FreeCAD przy użyciu Pythona. W tym przykładzie wykorzystany zostanie model z poradnika CalculiX wspornik 3D.
Wymagania
- Kompatybilna wersja FreeCAD wskazana w opisie poradnika.
- Użyj Pomoc → O FreeCAD, aby zobaczyć wersję FreeCAD, która jest zainstalowana.
- Ważna uwaga: Ze względu na ciągły rozwój środowiska MES zaleca się korzystanie z najnowszego snapshota rozwojowego FreeCAD, szczególnie w przypadku analiz MES opartych na skryptach Python.
- Działające środowisko pracy MES. Uruchom analizę CalculiX wspornik 3D, aby upewnić się, że tak jest.
Zaczynajmy
Nowy dokument i część do analizy
# new document
doc = App.newDocument("Scripted_CalculiX_Cantilever3D")
# part
import Part
box_obj = doc.addObject('Part::Box', 'Box')
box_obj.Height = box_obj.Width = 1000
box_obj.Length = 8000
# see how our part looks like
import FreeCADGui
FreeCADGui.ActiveDocument.activeView().viewAxonometric()
FreeCADGui.SendMsgToActiveView("ViewFit")
#
Analiza i obiekty analizy
# let us create some objects
# import to create objects
import ObjectsFem
# analysis
analysis_object = ObjectsFem.makeAnalysis(doc, "Analysis")
# solver (we gone use the well tested CcxTools solver object)
solver_object = ObjectsFem.makeSolverCalculixCcxTools(doc, "CalculiX")
solver_object.GeometricalNonlinearity = 'linear'
solver_object.ThermoMechSteadyState = True
solver_object.MatrixSolverType = 'default'
solver_object.IterationsControlParameterTimeUse = False
analysis_object.addObject(solver_object)
# material
material_object = ObjectsFem.makeMaterialSolid(doc, "SolidMaterial")
mat = material_object.Material
mat['Name'] = "Steel-Generic"
mat['YoungsModulus'] = "210000 MPa"
mat['PoissonRatio'] = "0.30"
mat['Density'] = "7900 kg/m^3"
material_object.Material = mat
analysis_object.addObject(material_object)
# fixed_constraint
fixed_constraint = ObjectsFem.makeConstraintFixed(doc, "FemConstraintFixed")
fixed_constraint.References = [(doc.Box, "Face1")]
analysis_object.addObject(fixed_constraint)
# force_constraint
force_constraint = ObjectsFem.makeConstraintForce(doc, "FemConstraintForce")
force_constraint.References = [(doc.Box, "Face2")]
force_constraint.Force = 9000000.0
force_constraint.Direction = (doc.Box, ["Edge5"])
force_constraint.Reversed = True
analysis_object.addObject(force_constraint)
Siatka MES (ręcznie)
Ta sekcja zawiera kod siatki MES. Rozwiń ją, aby wyświetlić zawartość.
Uwaga: Zapoznaj się z sekcją Informacje dodatkowe poniżej, aby dowiedzieć się, jak tworzyć skrypty generowania siatki za pomocą obiektu siatki GMSH lub Netgen.
# mesh
import Fem
femmesh = Fem.FemMesh()
# nodes
femmesh.addNode(8000.0, 1000.0, 0.0, 1)
femmesh.addNode(8000.0, 1000.0, 1000.0, 2)
femmesh.addNode(8000.0, 0.0, 0.0, 3)
femmesh.addNode(8000.0, 0.0, 1000.0, 4)
femmesh.addNode(0.0, 1000.0, 0.0, 5)
femmesh.addNode(0.0, 1000.0, 1000.0, 6)
femmesh.addNode(0.0, 0.0, 0.0, 7)
femmesh.addNode(0.0, 0.0, 1000.0, 8)
femmesh.addNode(728.0, 1000.0, 1000.0, 9)
femmesh.addNode(1456.0, 1000.0, 1000.0, 10)
femmesh.addNode(2184.0, 1000.0, 1000.0, 11)
femmesh.addNode(2912.0, 1000.0, 1000.0, 12)
femmesh.addNode(3640.0, 1000.0, 1000.0, 13)
femmesh.addNode(4368.0, 1000.0, 1000.0, 14)
femmesh.addNode(5096.0, 1000.0, 1000.0, 15)
femmesh.addNode(5824.0, 1000.0, 1000.0, 16)
femmesh.addNode(6552.0, 1000.0, 1000.0, 17)
femmesh.addNode(7280.0, 1000.0, 1000.0, 18)
femmesh.addNode(728.0, 0.0, 1000.0, 19)
femmesh.addNode(1456.0, 0.0, 1000.0, 20)
femmesh.addNode(2184.0, 0.0, 1000.0, 21)
femmesh.addNode(2912.0, 0.0, 1000.0, 22)
femmesh.addNode(3640.0, 0.0, 1000.0, 23)
femmesh.addNode(4368.0, 0.0, 1000.0, 24)
femmesh.addNode(5096.0, 0.0, 1000.0, 25)
femmesh.addNode(5824.0, 0.0, 1000.0, 26)
femmesh.addNode(6552.0, 0.0, 1000.0, 27)
femmesh.addNode(7280.0, 0.0, 1000.0, 28)
femmesh.addNode(728.0, 1000.0, 0.0, 29)
femmesh.addNode(1456.0, 1000.0, 0.0, 30)
femmesh.addNode(2184.0, 1000.0, 0.0, 31)
femmesh.addNode(2912.0, 1000.0, 0.0, 32)
femmesh.addNode(3640.0, 1000.0, 0.0, 33)
femmesh.addNode(4368.0, 1000.0, 0.0, 34)
femmesh.addNode(5096.0, 1000.0, 0.0, 35)
femmesh.addNode(5824.0, 1000.0, 0.0, 36)
femmesh.addNode(6552.0, 1000.0, 0.0, 37)
femmesh.addNode(7280.0, 1000.0, 0.0, 38)
femmesh.addNode(728.0, 0.0, 0.0, 39)
femmesh.addNode(1456.0, 0.0, 0.0, 40)
femmesh.addNode(2184.0, 0.0, 0.0, 41)
femmesh.addNode(2912.0, 0.0, 0.0, 42)
femmesh.addNode(3640.0, 0.0, 0.0, 43)
femmesh.addNode(4368.0, 0.0, 0.0, 44)
femmesh.addNode(5096.0, 0.0, 0.0, 45)
femmesh.addNode(5824.0, 0.0, 0.0, 46)
femmesh.addNode(6552.0, 0.0, 0.0, 47)
femmesh.addNode(7280.0, 0.0, 0.0, 48)
femmesh.addNode(8000.0, 500.0, 500.0, 49)
femmesh.addNode(0.0, 500.0, 500.0, 50)
femmesh.addNode(4731.99999977, 500.000001086, 499.999998599, 51)
femmesh.addNode(0.0, 500.0, 1000.0, 52)
femmesh.addNode(364.0, 1000.0, 1000.0, 53)
femmesh.addNode(1092.0, 1000.0, 1000.0, 54)
femmesh.addNode(1820.0, 1000.0, 1000.0, 55)
femmesh.addNode(2548.0, 1000.0, 1000.0, 56)
femmesh.addNode(3276.0, 1000.0, 1000.0, 57)
femmesh.addNode(4004.0, 1000.0, 1000.0, 58)
femmesh.addNode(4732.0, 1000.0, 1000.0, 59)
femmesh.addNode(5460.0, 1000.0, 1000.0, 60)
femmesh.addNode(6188.0, 1000.0, 1000.0, 61)
femmesh.addNode(6916.0, 1000.0, 1000.0, 62)
femmesh.addNode(7640.0, 1000.0, 1000.0, 63)
femmesh.addNode(8000.0, 500.0, 1000.0, 64)
femmesh.addNode(364.0, 0.0, 1000.0, 65)
femmesh.addNode(1092.0, 0.0, 1000.0, 66)
femmesh.addNode(1820.0, 0.0, 1000.0, 67)
femmesh.addNode(2548.0, 0.0, 1000.0, 68)
femmesh.addNode(3276.0, 0.0, 1000.0, 69)
femmesh.addNode(4004.0, 0.0, 1000.0, 70)
femmesh.addNode(4732.0, 0.0, 1000.0, 71)
femmesh.addNode(5460.0, 0.0, 1000.0, 72)
femmesh.addNode(6188.0, 0.0, 1000.0, 73)
femmesh.addNode(6916.0, 0.0, 1000.0, 74)
femmesh.addNode(7640.0, 0.0, 1000.0, 75)
femmesh.addNode(0.0, 500.0, 0.0, 76)
femmesh.addNode(364.0, 1000.0, 0.0, 77)
femmesh.addNode(1092.0, 1000.0, 0.0, 78)
femmesh.addNode(1820.0, 1000.0, 0.0, 79)
femmesh.addNode(2548.0, 1000.0, 0.0, 80)
femmesh.addNode(3276.0, 1000.0, 0.0, 81)
femmesh.addNode(4004.0, 1000.0, 0.0, 82)
femmesh.addNode(4732.0, 1000.0, 0.0, 83)
femmesh.addNode(5460.0, 1000.0, 0.0, 84)
femmesh.addNode(6188.0, 1000.0, 0.0, 85)
femmesh.addNode(6916.0, 1000.0, 0.0, 86)
femmesh.addNode(7640.0, 1000.0, 0.0, 87)
femmesh.addNode(8000.0, 500.0, 0.0, 88)
femmesh.addNode(364.0, 0.0, 0.0, 89)
femmesh.addNode(1092.0, 0.0, 0.0, 90)
femmesh.addNode(1820.0, 0.0, 0.0, 91)
femmesh.addNode(2548.0, 0.0, 0.0, 92)
femmesh.addNode(3276.0, 0.0, 0.0, 93)
femmesh.addNode(4004.0, 0.0, 0.0, 94)
femmesh.addNode(4732.0, 0.0, 0.0, 95)
femmesh.addNode(5460.0, 0.0, 0.0, 96)
femmesh.addNode(6188.0, 0.0, 0.0, 97)
femmesh.addNode(6916.0, 0.0, 0.0, 98)
femmesh.addNode(7640.0, 0.0, 0.0, 99)
femmesh.addNode(8000.0, 1000.0, 500.0, 100)
femmesh.addNode(0.0, 1000.0, 500.0, 101)
femmesh.addNode(8000.0, 0.0, 500.0, 102)
femmesh.addNode(0.0, 0.0, 500.0, 103)
femmesh.addNode(364.0, 500.0, 1000.0, 104)
femmesh.addNode(728.0, 500.0, 1000.0, 105)
femmesh.addNode(1092.0, 500.0, 1000.0, 106)
femmesh.addNode(1456.0, 500.0, 1000.0, 107)
femmesh.addNode(1820.0, 500.0, 1000.0, 108)
femmesh.addNode(2184.0, 500.0, 1000.0, 109)
femmesh.addNode(2548.0, 500.0, 1000.0, 110)
femmesh.addNode(3276.0, 500.0, 1000.0, 111)
femmesh.addNode(3640.0, 500.0, 1000.0, 112)
femmesh.addNode(4004.0, 500.0, 1000.0, 113)
femmesh.addNode(4368.0, 500.0, 1000.0, 114)
femmesh.addNode(4732.0, 500.0, 1000.0, 115)
femmesh.addNode(5096.0, 500.0, 1000.0, 116)
femmesh.addNode(5460.0, 500.0, 1000.0, 117)
femmesh.addNode(5824.0, 500.0, 1000.0, 118)
femmesh.addNode(6188.0, 500.0, 1000.0, 119)
femmesh.addNode(6552.0, 500.0, 1000.0, 120)
femmesh.addNode(6916.0, 500.0, 1000.0, 121)
femmesh.addNode(7640.0, 500.0, 1000.0, 122)
femmesh.addNode(2912.0, 500.0, 1000.0, 123)
femmesh.addNode(7280.0, 500.0, 1000.0, 124)
femmesh.addNode(364.0, 500.0, 0.0, 125)
femmesh.addNode(1092.0, 500.0, 0.0, 126)
femmesh.addNode(728.0, 500.0, 0.0, 127)
femmesh.addNode(1820.0, 500.0, 0.0, 128)
femmesh.addNode(1456.0, 500.0, 0.0, 129)
femmesh.addNode(2548.0, 500.0, 0.0, 130)
femmesh.addNode(2184.0, 500.0, 0.0, 131)
femmesh.addNode(3640.0, 500.0, 0.0, 132)
femmesh.addNode(3276.0, 500.0, 0.0, 133)
femmesh.addNode(4004.0, 500.0, 0.0, 134)
femmesh.addNode(5096.0, 500.0, 0.0, 135)
femmesh.addNode(4732.0, 500.0, 0.0, 136)
femmesh.addNode(5460.0, 500.0, 0.0, 137)
femmesh.addNode(6188.0, 500.0, 0.0, 138)
femmesh.addNode(5824.0, 500.0, 0.0, 139)
femmesh.addNode(6916.0, 500.0, 0.0, 140)
femmesh.addNode(6552.0, 500.0, 0.0, 141)
femmesh.addNode(7640.0, 500.0, 0.0, 142)
femmesh.addNode(2912.0, 500.0, 0.0, 143)
femmesh.addNode(4368.0, 500.0, 0.0, 144)
femmesh.addNode(7280.0, 500.0, 0.0, 145)
femmesh.addNode(364.0, 1000.0, 500.0, 146)
femmesh.addNode(728.0, 1000.0, 500.0, 147)
femmesh.addNode(1092.0, 1000.0, 500.0, 148)
femmesh.addNode(1456.0, 1000.0, 500.0, 149)
femmesh.addNode(1820.0, 1000.0, 500.0, 150)
femmesh.addNode(2184.0, 1000.0, 500.0, 151)
femmesh.addNode(2548.0, 1000.0, 500.0, 152)
femmesh.addNode(3276.0, 1000.0, 500.0, 153)
femmesh.addNode(3640.0, 1000.0, 500.0, 154)
femmesh.addNode(4004.0, 1000.0, 500.0, 155)
femmesh.addNode(4368.0, 1000.0, 500.0, 156)
femmesh.addNode(4732.0, 1000.0, 500.0, 157)
femmesh.addNode(5096.0, 1000.0, 500.0, 158)
femmesh.addNode(5460.0, 1000.0, 500.0, 159)
femmesh.addNode(5824.0, 1000.0, 500.0, 160)
femmesh.addNode(6188.0, 1000.0, 500.0, 161)
femmesh.addNode(6552.0, 1000.0, 500.0, 162)
femmesh.addNode(6916.0, 1000.0, 500.0, 163)
femmesh.addNode(7640.0, 1000.0, 500.0, 164)
femmesh.addNode(2912.0, 1000.0, 500.0, 165)
femmesh.addNode(7280.0, 1000.0, 500.0, 166)
femmesh.addNode(364.0, 0.0, 500.0, 167)
femmesh.addNode(1092.0, 0.0, 500.0, 168)
femmesh.addNode(728.0, 0.0, 500.0, 169)
femmesh.addNode(1820.0, 0.0, 500.0, 170)
femmesh.addNode(1456.0, 0.0, 500.0, 171)
femmesh.addNode(2548.0, 0.0, 500.0, 172)
femmesh.addNode(2184.0, 0.0, 500.0, 173)
femmesh.addNode(3640.0, 0.0, 500.0, 174)
femmesh.addNode(3276.0, 0.0, 500.0, 175)
femmesh.addNode(4004.0, 0.0, 500.0, 176)
femmesh.addNode(5096.0, 0.0, 500.0, 177)
femmesh.addNode(4732.0, 0.0, 500.0, 178)
femmesh.addNode(5460.0, 0.0, 500.0, 179)
femmesh.addNode(6188.0, 0.0, 500.0, 180)
femmesh.addNode(5824.0, 0.0, 500.0, 181)
femmesh.addNode(6916.0, 0.0, 500.0, 182)
femmesh.addNode(6552.0, 0.0, 500.0, 183)
femmesh.addNode(7640.0, 0.0, 500.0, 184)
femmesh.addNode(2912.0, 0.0, 500.0, 185)
femmesh.addNode(4368.0, 0.0, 500.0, 186)
femmesh.addNode(7280.0, 0.0, 500.0, 187)
femmesh.addNode(8000.0, 250.0, 250.0, 188)
femmesh.addNode(8000.0, 250.0, 750.0, 189)
femmesh.addNode(8000.0, 750.0, 750.0, 190)
femmesh.addNode(8000.0, 750.0, 250.0, 191)
femmesh.addNode(0.0, 250.0, 750.0, 192)
femmesh.addNode(0.0, 250.0, 250.0, 193)
femmesh.addNode(0.0, 750.0, 250.0, 194)
femmesh.addNode(0.0, 750.0, 750.0, 195)
femmesh.addNode(1456.0, 500.0, 500.0, 196)
femmesh.addNode(6552.0, 500.0, 500.0, 197)
femmesh.addNode(6916.0, 500.0, 500.0, 198)
femmesh.addNode(2184.0, 500.0, 500.0, 199)
femmesh.addNode(2548.0, 500.0, 500.0, 200)
femmesh.addNode(2912.0, 500.0, 500.0, 201)
femmesh.addNode(1820.0, 500.0, 500.0, 202)
femmesh.addNode(7640.0, 750.0, 250.0, 203)
femmesh.addNode(7640.0, 750.0, 750.0, 204)
femmesh.addNode(7280.0, 500.0, 500.0, 205)
femmesh.addNode(7640.0, 250.0, 250.0, 206)
femmesh.addNode(5460.0, 500.0, 500.0, 207)
femmesh.addNode(5096.0, 500.0, 500.0, 208)
femmesh.addNode(6188.0, 500.0, 500.0, 209)
femmesh.addNode(5824.0, 500.0, 500.0, 210)
femmesh.addNode(364.0, 750.0, 250.0, 211)
femmesh.addNode(364.0, 750.0, 750.0, 212)
femmesh.addNode(364.0, 250.0, 250.0, 213)
femmesh.addNode(1092.0, 500.0, 500.0, 214)
femmesh.addNode(728.0, 500.0, 500.0, 215)
femmesh.addNode(364.0, 250.0, 750.0, 216)
femmesh.addNode(4549.99999989, 250.000000543, 249.9999993, 217)
femmesh.addNode(4549.99999989, 750.000000543, 249.9999993, 218)
femmesh.addNode(4549.99999989, 750.000000543, 749.9999993, 219)
femmesh.addNode(4368.0, 500.0, 500.0, 220)
femmesh.addNode(4549.99999989, 250.000000543, 749.9999993, 221)
femmesh.addNode(4913.99999989, 250.000000543, 749.9999993, 222)
femmesh.addNode(4913.99999989, 750.000000543, 749.9999993, 223)
femmesh.addNode(3276.0, 500.0, 500.0, 224)
femmesh.addNode(3640.0, 500.0, 500.0, 225)
femmesh.addNode(4004.0, 500.0, 500.0, 226)
femmesh.addNode(4913.99999989, 750.000000543, 249.9999993, 227)
femmesh.addNode(4913.99999989, 250.000000543, 249.9999993, 228)
# elements
femmesh.addVolume([40, 19, 10, 20, 168, 106, 196, 171, 66, 107], 149)
femmesh.addVolume([10, 31, 30, 40, 150, 79, 149, 196, 128, 129], 150)
femmesh.addVolume([38, 17, 18, 47, 163, 62, 166, 140, 197, 198], 151)
femmesh.addVolume([32, 41, 11, 12, 130, 199, 152, 165, 200, 56], 152)
femmesh.addVolume([12, 32, 41, 42, 165, 130, 200, 201, 143, 92], 153)
femmesh.addVolume([42, 21, 12, 22, 172, 110, 201, 185, 68, 123], 154)
femmesh.addVolume([10, 31, 40, 11, 150, 128, 196, 55, 151, 202], 155)
femmesh.addVolume([11, 12, 41, 21, 56, 200, 199, 109, 110, 173], 156)
femmesh.addVolume([20, 41, 11, 40, 170, 199, 108, 171, 91, 202], 157)
femmesh.addVolume([20, 41, 21, 11, 170, 173, 67, 108, 199, 109], 158)
femmesh.addVolume([32, 11, 41, 31, 152, 199, 130, 80, 151, 131], 159)
femmesh.addVolume([11, 10, 20, 40, 55, 107, 108, 202, 196, 171], 160)
femmesh.addVolume([38, 17, 47, 37, 163, 197, 140, 86, 162, 141], 161)
femmesh.addVolume([38, 18, 49, 48, 166, 204, 203, 145, 205, 206], 162)
femmesh.addVolume([46, 15, 45, 36, 207, 208, 96, 139, 159, 137], 163)
femmesh.addVolume([47, 16, 46, 37, 209, 210, 97, 141, 161, 138], 164)
femmesh.addVolume([18, 4, 2, 49, 122, 64, 63, 204, 189, 190], 165)
femmesh.addVolume([18, 17, 27, 47, 62, 120, 121, 198, 197, 183], 166)
femmesh.addVolume([38, 18, 48, 47, 166, 205, 145, 140, 198, 98], 167)
femmesh.addVolume([12, 23, 42, 22, 111, 175, 201, 123, 69, 185], 168)
femmesh.addVolume([26, 47, 27, 17, 180, 183, 73, 119, 197, 120], 169)
femmesh.addVolume([50, 29, 9, 6, 211, 147, 212, 195, 146, 53], 170)
femmesh.addVolume([27, 48, 18, 47, 182, 205, 121, 183, 98, 198], 171)
femmesh.addVolume([8, 7, 39, 50, 103, 89, 167, 192, 193, 213], 172)
femmesh.addVolume([40, 9, 39, 30, 214, 215, 90, 129, 148, 126], 173)
femmesh.addVolume([42, 21, 41, 12, 172, 173, 92, 201, 110, 200], 174)
femmesh.addVolume([50, 9, 29, 39, 212, 147, 211, 213, 215, 127], 175)
femmesh.addVolume([29, 7, 50, 39, 125, 193, 211, 127, 89, 213], 176)
femmesh.addVolume([31, 11, 41, 40, 151, 199, 131, 128, 202, 91], 177)
femmesh.addVolume([47, 16, 37, 17, 209, 161, 141, 197, 61, 162], 178)
femmesh.addVolume([40, 9, 30, 10, 214, 148, 129, 196, 54, 149], 179)
femmesh.addVolume([2, 38, 49, 1, 164, 203, 190, 100, 87, 191], 180)
femmesh.addVolume([2, 38, 18, 49, 164, 166, 63, 190, 203, 204], 181)
femmesh.addVolume([48, 49, 38, 3, 206, 203, 145, 99, 188, 142], 182)
femmesh.addVolume([38, 49, 1, 3, 203, 191, 87, 142, 188, 88], 183)
femmesh.addVolume([49, 4, 3, 48, 189, 102, 188, 206, 184, 99], 184)
femmesh.addVolume([28, 48, 4, 18, 187, 184, 75, 124, 205, 122], 185)
femmesh.addVolume([49, 18, 4, 48, 204, 122, 189, 206, 205, 184], 186)
femmesh.addVolume([7, 50, 5, 29, 193, 194, 76, 125, 211, 77], 187)
femmesh.addVolume([50, 6, 5, 29, 195, 101, 194, 211, 146, 77], 188)
femmesh.addVolume([50, 9, 19, 6, 212, 105, 216, 195, 53, 104], 189)
femmesh.addVolume([50, 19, 9, 39, 216, 105, 212, 213, 169, 215], 190)
femmesh.addVolume([50, 19, 8, 6, 216, 65, 192, 195, 104, 52], 191)
femmesh.addVolume([40, 9, 10, 19, 214, 54, 196, 168, 105, 106], 192)
femmesh.addVolume([51, 44, 34, 14, 217, 144, 218, 219, 220, 156], 193)
femmesh.addVolume([51, 24, 44, 14, 221, 186, 217, 219, 114, 220], 194)
femmesh.addVolume([25, 15, 24, 51, 116, 115, 71, 222, 223, 221], 195)
femmesh.addVolume([43, 12, 32, 13, 224, 165, 133, 225, 57, 153], 196)
femmesh.addVolume([43, 12, 23, 42, 224, 111, 174, 93, 201, 175], 197)
femmesh.addVolume([43, 12, 13, 23, 224, 57, 225, 174, 111, 112], 198)
femmesh.addVolume([43, 12, 42, 32, 224, 201, 93, 133, 165, 143], 199)
femmesh.addVolume([34, 13, 14, 44, 155, 58, 156, 144, 226, 220], 200)
femmesh.addVolume([14, 24, 15, 51, 114, 115, 59, 219, 221, 223], 201)
femmesh.addVolume([23, 24, 14, 44, 70, 114, 113, 176, 186, 220], 202)
femmesh.addVolume([33, 32, 13, 43, 81, 153, 154, 132, 133, 225], 203)
femmesh.addVolume([34, 33, 13, 43, 82, 154, 155, 134, 132, 225], 204)
femmesh.addVolume([35, 14, 15, 51, 157, 59, 158, 227, 219, 223], 205)
femmesh.addVolume([25, 45, 15, 51, 177, 208, 116, 222, 228, 223], 206)
femmesh.addVolume([44, 43, 13, 23, 94, 225, 226, 176, 174, 112], 207)
femmesh.addVolume([35, 34, 14, 51, 83, 156, 157, 227, 218, 219], 208)
femmesh.addVolume([46, 15, 36, 16, 207, 159, 139, 210, 60, 160], 209)
femmesh.addVolume([36, 35, 15, 45, 84, 158, 159, 137, 135, 208], 210)
femmesh.addVolume([37, 36, 16, 46, 85, 160, 161, 138, 139, 210], 211)
femmesh.addVolume([25, 26, 16, 46, 72, 118, 117, 179, 181, 210], 212)
femmesh.addVolume([47, 16, 17, 26, 209, 61, 197, 180, 118, 119], 213)
femmesh.addVolume([47, 16, 26, 46, 209, 118, 180, 97, 210, 181], 214)
femmesh.addVolume([27, 28, 18, 48, 74, 124, 121, 182, 187, 205], 215)
femmesh.addVolume([35, 34, 51, 45, 83, 218, 227, 135, 136, 228], 216)
femmesh.addVolume([13, 14, 44, 23, 58, 220, 226, 112, 113, 176], 217)
femmesh.addVolume([44, 25, 24, 51, 178, 71, 186, 217, 222, 221], 218)
femmesh.addVolume([44, 45, 25, 51, 95, 177, 178, 217, 228, 222], 219)
femmesh.addVolume([46, 15, 16, 25, 207, 60, 210, 179, 116, 117], 220)
femmesh.addVolume([46, 15, 25, 45, 207, 116, 179, 96, 208, 177], 221)
femmesh.addVolume([50, 8, 19, 39, 192, 65, 216, 213, 167, 169], 222)
femmesh.addVolume([35, 51, 15, 45, 227, 223, 158, 135, 228, 208], 223)
femmesh.addVolume([34, 44, 43, 13, 144, 94, 134, 155, 226, 225], 224)
femmesh.addVolume([51, 44, 45, 34, 217, 95, 228, 218, 144, 136], 225)
femmesh.addVolume([9, 29, 39, 30, 147, 127, 215, 148, 78, 126], 226)
femmesh.addVolume([40, 9, 19, 39, 214, 105, 168, 90, 215, 169], 227)
# add it to the analysis
femmesh_obj = doc.addObject('Fem::FemMeshObject', 'Box_Mesh')
femmesh_obj.FemMesh = femmesh
analysis_object.addObject(femmesh_obj)
Siatka MES (gmsh)
femmesh_obj = ObjectsFem.makeMeshGmsh(doc, box_obj.Name + "_Mesh")
femmesh_obj.Part = doc.Box
doc.recompute()
from femmesh.gmshtools import GmshTools as gt
gmsh_mesh = gt(femmesh_obj)
error = gmsh_mesh.create_mesh()
print(error)
analysis_object.addObject(femmesh_obj)
Siatka MES (netgen)
mesh = doc.addObject('Fem::FemMeshShapeNetgenObject', 'FEMMeshNetgen')
mesh.Shape = doc.Box
mesh.MaxSize = 1000
mesh.Fineness = "Moderate"
mesh.Optimize = True
mesh.SecondOrder = True
doc.recompute()
analysis_object.addObject(mesh)
Ponowne obliczanie
# recompute
doc.recompute()
###
Uruchomienie analizy
Aby uruchomić analizę za pomocą środowiska Python, należy utworzyć instancję modułu ccxtools
klasy FemToolsCcx
. Po utworzeniu tej instancji mamy dwie możliwości uruchomienia analizy:
- Uruchomić wszystkie procesy jednocześnie (patrz sekcja "Wszystko w jednym").
- Uruchomić procesy jeden po drugim (patrz sekcja "Krok po kroku").
Jeśli w dokumencie jest tylko jedna analiza i tylko jeden solver w analizie, to nie trzeba przekazywać żadnych obiektów do fea init
. Metoda init
klasy fea
aktywuje analizę jeśli GUI działa.
Aktywacja analizy przy użyciu Python działa w następujący sposób:
# activating analysis
import FemGui
FemGui.setActiveAnalysis(doc.Analysis)
###
Wszystko w jednym
# run the analysis all in one
from femtools import ccxtools
fea = ccxtools.FemToolsCcx()
fea.purge_results()
fea.run()
###
Krok po kroku
# run the analysis step by step
from femtools import ccxtools
fea = ccxtools.FemToolsCcx()
fea.update_objects()
fea.setup_working_dir()
fea.setup_ccx()
message = fea.check_prerequisites()
if not message:
fea.purge_results()
fea.write_inp_file()
# on error at inp file writing, the inp file path "" was returned (even if the file was written)
# if we would write the inp file anyway, we need to again set it manually
# fea.inp_file_name = '/tmp/FEMWB/FEMMeshGmsh.inp'
fea.ccx_run()
fea.load_results()
else:
FreeCAD.Console.PrintError("Houston, we have a problem! {}\n".format(message)) # in report view
print("Houston, we have a problem! {}\n".format(message)) # in Python console
###
Wyświetlenie wyników
# show some results
for m in analysis_object.Group:
if m.isDerivedFrom('Fem::FemResultObject'):
result_object = m
break
femmesh_obj.ViewObject.setNodeDisplacementByVectors(result_object.NodeNumbers, result_object.DisplacementVectors)
femmesh_obj.ViewObject.applyDisplacement(10)
###
Informacje dodatkowe
Tworzenie obiektów siatki FEM skryptami
Netgen
Tworzenie obiektów siatki Netgen skryptami było próbowane w (wątek forum FreeCAD FEM) "Sparametryzowane badanie MES", ale ma pewne ograniczenia.
GMSH
Przeciwnie, obiekt siatki GMSH w pełni obsługuje skrypty Pythona. Zobacz następujące posty na forum:
- https://forum.freecadweb.org/viewtopic.php?f=22&t=42922#p365042
- temat na forum http://forum.freecadweb.org/viewtopic.php?f=18&t=20087
Tworzenie skryptów do wielu analiz
Zobacz temat na forum: http://forum.freecadweb.org/viewtopic.php?f=18&t=19549#p151385
Tworzenie skryptu wyników
Standardowy obiekt wyników FreeCAD
Zobacz posty na forum:
- https://forum.freecadweb.org/viewtopic.php?f=18&t=34048&p=289519#p289519 → współczynnik skali w standardowym obiekcie wynikowym.
- http://forum.freecadweb.org/viewtopic.php?f=18&t=4677&start=20#p148982
- http://forum.freecadweb.org/viewtopic.php?f=18&t=4677&start=30#p149043
- http://forum.freecadweb.org/viewtopic.php?t=18415#p144028
- https://forum.freecadweb.org/viewtopic.php?f=18&t=31123&p=258761#p258761 → kolorowanie tylko jednego elementu.
- https://forum.freecadweb.org/viewtopic.php?f=18&t=41951&p=357687#p357685 → zresetuj całą siatkę wynikową, pokaż pokolorowaną wielkość przemieszczenia.
Obiekt wyników Vtk
Zobacz temat na forum:
Tryb konsoli
Zapis pliku wejściowego w trybie konsoli FreeCAD (bez Gui) można wykonać w trybie testowym. Zobacz ten odpowiedni post na forum, aby uzyskać więcej informacji i poeksperymentować.
Dodatek
Miłej zabawy! Również jeśli masz opinie lub jakiekolwiek poprawki, nie krępuj się uczestniczyć w rozmowach forum MES dla FreeCAD.
- Materiał: Bryła, Ciecz, Nieliniowy materiał mechaniczny, Materiał zbrojony (beton), Edytor materiału
- Geometria elementu: Geometria elementu, Obrót w okół osi, Geometria elementu 2D, Element przepływu
Wiązania
- Elektromagnetyczne: Potencjał elektryczny, Gęstość prądu, Magnetyzacja
- Geometryczne: Obrót w płaszczyźnie, Zapis wyników z przekroju, Zdefiniuj odkształcenie
- Mechaniczne: Zdefiniuj przytwierdzenie, Zdefiniuj przemieszczenie, Zdefiniuj kontakt, Zdefiniuj powiązanie, Wiązanie sprężyny, Zdefiniuj siłę, Zdefiniuj obciążenie ciśnieniem, Zdefiniuj siłę odśrodkową, Zdefiniuj obciążenie ciężarem własnym
- Termiczne: Warunek początkowy temperatury, Zdefiniuj strumień ciepła, Zdefiniuj temperaturę, Zdefiniuj objętościowe źródło ciepła
- Zmieniające wiązania: Zdefiniuj przenikalność elektryczną próżni
- Siatki: Siatka Netgen, Siatka GMSH, Warstwa graniczna siatki, Obszar siatki, Grupa siatki, Utwórz zestaw węzłów, Siatka MES na obiekt środowiska Siatka
- Solver: Narzędzia CalculiX, Elmer, Mystran, Z88; Równania: Elastyczności, Elektrostatyczne, Siły elektrostatycznej, Magnetodynamiczne, RMagnetodynamiczne 2D, Przepływu, Strumienia, Ciepła; Solver: Kontrola pracy solvera, Uruchom solver
- Wyniki: Oczyszczanie z wyników, Prezentacja wyników; Postprocessing: Zastosuj zmiany, Prezentacja graficzna, Filtr rozpraszający, Skalarny filtr obcinający, Filtr odcięcia funkcji, Filtr odcięcia obszaru, Filtr konturów, Filtr danych wzdłuż linii, Wykres liniowości naprężeń, Filtr obcinania danych w punkcie, Utwórz funkcję, Filtr funkcji płaszczyzny, Filtr funkcji sfery, Filtr funkcji walca, Filtr funkcji prostopadłościanu
- Dodatkowe: Konfiguracja, Instalacja środowiska MES, Siatka, FEM Solver, CalculiX, Beton, Rodzaje elementów
- Jak zacząć
- Instalacja: Pobieranie programu, Windows, Linux, Mac, Dodatkowych komponentów, Docker, AppImage, Ubuntu Snap
- Podstawy: Informacje na temat FreeCAD, Interfejs użytkownika, Profil nawigacji myszką, Metody wyboru, Nazwa obiektu, Edytor ustawień, Środowiska pracy, Struktura dokumentu, Właściwości, Pomóż w rozwoju FreeCAD, Dotacje
- Pomoc: Poradniki, Wideo poradniki
- Środowiska pracy: Strona Startowa, Architektura, Assembly, CAM, Rysunek Roboczy, MES, Inspekcja, Siatka, OpenSCAD, Część, Projekt Części, Punkty, Inżynieria Wsteczna, Robot, Szkicownik, Arkusz Kalkulacyjny, Start, Powierzchnia 3D, Rysunek Techniczny, Test Framework, Web