Jump to content

Schwerpunkt eines Meshs ausgeben


---
 Share

Recommended Posts

Hallo, 

ist es möglich den Schwerpunkt eines gescannten Teils auszugeben?

Ich habe eine STL eines Feingussteils das später noch bearbeitet wird.
Das Teil selbst ist in der Theorie rotationssymmetrisch.

Im Soll-Ist-Vergleich ist nach Best-Fit auf die relevante Fläche der Innenkontur, eine möglicherweise ungünstige Massenverteilung auf der Aussenkontur erkennbar. 

 

Grüße

Jörg

Link to comment
Share on other sites

Hallo Jörg,

 

DE-Verseion

adhoc ist der Schwerpunkt nicht als Konstruktionselement in der Software verfügbar. - Wir nehmen den Wunsch aber sehr gern auf.

Eine Möglichkeit wie Du es aber mit den erweiterten Bordwerkzeugen schaffen kannst, besteht dennoch. Als Voraussetzung müsstest du mindestens SW2020 sowie eine Professional Lizenz (ermöglicht Skripting) haben. Denn hiermit kannst du dir 'Benutzerdefinierte Elemente' anlegen, welche in Deinem Fall einen Punkt darstellen. Damit der Punkt weiß was er machen soll, fütterst du diesen mit von Dir spezifizierten Eigenschaften/Berechnungen im Python (Skripting).

Soviel zur Theorie, folgend etwas mehr Infos.

  • Das Python in der gom-Umgebung kann auf externe Bibliotheken zugreifen
    • Schwerpunktberechung wird in der bibliothek stl.mesh angeboten
    • Die stl Bibliotheken müsste einmal bei dir installiert werden, anschließend kannst du darauf zugreifen
    • numpy ist eine weitere Bibliothek, welche bei der Datenhandhabe sehr hilft.
  • Ein Beispiel folgend, bei dem
    • die Funktion mit der Netzinformation (Netzpunkte, Netzdreiecke) gefüttert wird.
    • der Schwerpunkt (center of gravity) als X/Y/Z ausgegeben wird.

 

EN-version

adhoc, the center of gravity is not available as a design element in the software. - However, we will gladly take up your request.

However, there is a possibility how you can create it with the extended on-board tools. As a prerequisite you must have at least SW2020 and a professional license (enables scripting). Because with this you can create 'user defined elements', which in your case represent a point. So that the point knows what to do, you feed it with properties/calculations specified by you in python (scripting).

So much for the theory, following some more info.

  • The python in the gom environment can access external libraries
    • Center of gravity calculation is provided in the library stl.mesh
    • The stl libraries would have to be installed once at your site, then you can access them
    • numpy is another library which helps a lot with data handling.
  • An example follows, where
    • the function is fed with the mesh information (mesh vertices, mesh faces).
    • the center of gravity is output as X/Y/Z.

 

----------------

from stl import mesh

import numpy as np

 

def center_of_gravity(vert, face):

    num_t = len(face)
    data = np.zeros(num_t, dtype=mesh.Mesh.dtype)
    for i in range(num_t):
        data['vectors'][i] = np.array(vert[face[i][0:3]][0:3])
    
    volume, cog, inertia = mesh.Mesh(data, remove_empty_areas=False).get_mass_properties()

    return (cog)

----------------

 

Ich hoffe das hilft Dir weiter. Bei Fragen einfach fragen.

Is the answer sufficient for you? If you have any questions, just ask.

Gruß, Jens

Link to comment
Share on other sites

Guten Morgen Jens, 

vielen Dank für die ausführliche Antwort.

Ich vermute SW2020 steht für Solid Works? Das steht schon mal zur Verfügung.

Leider lässt GOM Pro noch auf sich warten ? , die Mühlen der Software-Investitions-Beschaffung mahlen langsam.

Zumindest für mich wäre das Feature zukunftsfähig, da ich oft mit Gussteilen  zu tun habe, die später einer hohen Rotationsgeschwindigkeit ausgesetzt sind.

Grüße

Jörg

Link to comment
Share on other sites

Moin Jörg,

ich bin mit SW2020 in den gom-internen Fachjargon gerutscht. Damit meinte ich eine GOM Inspect Pro ab dem Releasejahr 2020. (Mit SW meinte ich nicht SolidWorks sondern einfach nur Software.)

Ich drücke Dir die Daumen für eine rasche Beschaffung der Software. ? 

Gruß, Jens

Link to comment
Share on other sites

  • 5 weeks later...

Hey Ruben,

This Error is caused by some missing libraries.

In your case the Python is not able to make use of line 1 of the code. So the library stl (which includes the sub-functionality mesh) is missing. 

The same could be the case with numpy.

To solve this issue, please make use of the system script 'Install Python Package' which can be found through:

-->   Scripting >>> Script Choice >>> Tools >>> Install Python Package.

image.png.3ccffe9fcc80493e2e37b032303fd265.png

In here you type in the missing Python library and the GOM Inspect will install the add-on automatically.

stl --> image.png.502f422a724aff658d36122112e18a2e.png

numpy --> image.png.c1e3c311195c7656dd7e6e8d0e29a3e5.png

 

Hope this helps!

 

Edited
Link to comment
Share on other sites

True, the output (as well as the input) is not part of the suggestion above. To activate/run the definition I shared, you need to call it with the necessary input.

For def center_of_gravity(vert, face)  this means you need to have:

.. The mesh points as a numpy array handed over as vert  -->  vert = np.array(your_mesh.data.coordinate)[0]

.. The mesh triangles as a numpy array handed over as face  -->  face = np.array(your_mesh.data.triangle)[0]
 

The output of center_of_gravity can then be handed over to a variable which could be part of a print() at the end.

 

But please be aware, the result highly depends on the quality of your mesh. If there are (larger) holes given in the mesh, the calculated CoG can be questioned!

Link to comment
Share on other sites

 Share

×
×
  • Create New...