3D Körper aus Faces erstellen und exportieren

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
paga
Posts: 15
Joined: Thu Nov 12, 2020 2:08 pm

3D Körper aus Faces erstellen und exportieren

Postby paga » Thu Nov 12, 2020 4:52 pm

Hallo zusammen,

ich versuche nun seit Tagen einen 3D-Körper aus 2D-Faces zu erstellen (wird später genauer erläutert) und diesen als STEP oder IGES zu exportieren damit ich dieses Teil wiederum in ABAQUS (FEM-Software) importieren kann. Leider ist mein Bauteil beim Import oft "ungültig" also nicht korrekt oder hat mehr Kanten und Knoten (Vertices) als generiert (beim Import im ABAQUS). Lasse ich eine Fehleranalyse in FreeCAD laufen bekomme ich zwei primäre Fehler "BOPAlgo_InvalidCurveOnSurface" und "BOPAlgo SelfIntersect". Ich hoffe sehr ihr könnt mir helfen :)

Nun gehen wir mehr ins Detail:

Ich versuche für meine Abschlussarbeit eine Schaumstruktur zu erstellen. Da die Zellwände der Zellen sehr dünn sind wollte ich dieses als Flächen modellieren. Um dies zu erreichen habe ich mittels Python zwei verschiedene Ansätze versucht:

1) Ich erstelle zunächst alle Eckknoten der Zellwände, anschließend werden die Knoten definiert zu Kanten verbunden. Als letzten werden aus den Kanten eine Fläche gebildet.

Hier ist einmal ein beispielhaftes Skript zu finden:

App.newDocument("Unnamed")
App.setActiveDocument("Unnamed")
App.ActiveDocument=App.getDocument("Unnamed")
App.ActiveDocument.recompute()

__objs__ = []
allfaces = []

stringVert = 'Vertex'
stringEdge = 'Edge'
stringFace = 'Face'

vertDic = {}
edgeDic = {}

# Alle Vertices der Zellwände erstellen (werden nicht doppelt erstellt)

for i in range(len(Vertices)):
currentVert = stringVert + str(i)
vert = App.ActiveDocument.addObject("Part::Vertex", currentVert)
vert.X = Vertices[i, 0]
vert.Y = Verticesi, 1]
vert.Z = Vertices[i, 2]
vert.Placement = Base.Placement(Base.Vector(0.00, 0.00, 0.00), Base.Rotation(0.00, 0.00, 0.00, 1.00))
vert.Label = currentVert
vertDic = vert

# Kanten der Zellwände bilden, indem die erstellen Punkte definiert verbunden werden

for j in range(len(PointsEdges)):
currentEdge = stringEdge + str(j)
point1 = PointsEdges[j, 0] # Punkt 1 der Kante
point2 = PointsEdges[j, 1] # Punkt 2 der Kaante
edge = Part.makeLine(vertDic[point1].Shape.Vertex1.Point, vertDic[point2].Shape.Vertex1.Point)
if edge.isNull(): raise RuntimeError('Failed to create edge')
App.ActiveDocument.addObject('Part::Feature', currentEdge).Shape = edge
edgeDic[j] = edge

# Flächen bilden durch Kanten

for F in Faces:
currentFace = stringFace + str(F)
edgeList = []

for l in ListeFlaechen[F]:
edgeList.append(edgeDic[l])

face = Part.makeFilledFace(Part.__sortEdges__(edgeList))

if face.isNull(): raise RuntimeError('Failed to create face')
App.ActiveDocument.addObject('Part::Feature',currentFace).Shape = face
allfaces.append(FreeCAD.getDocument("Unnamed").getObject(currentFace))

Draft.upgrade(allfaces,delete=True)
FreeCAD.ActiveDocument.recompute()
__objs__.append(FreeCAD.getDocument("Unnamed").getObject("Shell"))

App.ActiveDocument.recompute()
StepPath = Skript_Pfad + "\\foam.igs"
Part.export(__objs__, StepPath)

2) Bei der zweiten Variation habe ich direkt die Edges mit 2 Punkten erstellt und dann die Flächen gebildet:

for j in range(len(Edges)):
currentEdge = stringEdge + str(j)

p1 = Vertices[PointsEdges[j,0]]
p2 = Vertices[PointsEdges[j,1]]

edge = App.ActiveDocument.addObject("Part::Line",currentEdge)
edge.X1 = round(p1[0], 6)
edge.Y1 = round(p1[1], 6)
edge.Z1 = round(p1[2], 6)
edge.X2 = round(p2[0], 6)
edge.Y2 = round(p2[1], 6)
edge.Z2 = round(p2[2], 6)
edge.Placement = Base.Placement(Base.Vector(0.000000,0.000000,0.000000),Base.Rotation(0.000000,0.000000,0.000000,1.000000))
edge.Label = currentEdge
edgeDic[j] = edge
__objs__.append(FreeCAD.getDocument("Unnamed").getObject(currentEdge))


Zusätzlich habe ich mal alle Objecte ecportiert (Kanten, Flächen, Knoten) und mal nur die Flächen (einzelnt oder duch Upgrade als Shell). Leider treten die Fehler bei allen Variationen auf... Ich bin etwas verzweifelt und hoffe ihr könnt mir helfen.
im Voraus schonmal vielen Dank für eure Antworten und Hilfe.

Gruß Patrick
chrisb
Posts: 30822
Joined: Tue Mar 17, 2015 9:14 am

Re: 3D Körper aus Faces erstellen und exportieren

Postby chrisb » Thu Nov 12, 2020 6:13 pm

Code bitte in code tags einschließen. Dann bleiben auch die wichtigen Leerzeichen erhalten.
You need at least FreeCAD 0.19.23300 to edit my current sketches.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
paga
Posts: 15
Joined: Thu Nov 12, 2020 2:08 pm

Re: 3D Körper aus Faces erstellen und exportieren

Postby paga » Thu Nov 12, 2020 9:03 pm

Hallo chrisb,

danke für deine schnelle Rückmeldung und deine Anmerkung. Bin neu in diesem Forum und generell Anfänger bezüglich FreeCAD. Habe das Skript mal angehangen. Hoffe das ist nun richtig so :)

Hinweis:
Das Skript läuft so nicht, da ich nur ein paar bespielhafte Arrays zur Verdeutlichung benutzt habe. Bei den realen Arrays können mehr als 1000 Einträge drin sein.

Lieben Gruß

Patrick
Attachments
Beispiel Schaumerstellung.py
(2.69 KiB) Downloaded 11 times
chrisb
Posts: 30822
Joined: Tue Mar 17, 2015 9:14 am

Re: 3D Körper aus Faces erstellen und exportieren

Postby chrisb » Thu Nov 12, 2020 9:51 pm

Ich meinte eigentlich nicht, das Skript noch mal als Datei anzuhängen, sondern eher, dass Du Deinen Beitrag von oben bearbeitest.
Ein nicht lauffähiges Skript würde ich mir jetzt mal nicht anschauen. Du kannst aber die erzeugte FreeCAD-Datei - möglichst in einer Minimalversion - anhängen. Vielleicht kann man daran sehen was nicht funktioniert und Du kannst es dann im Python-Code beheben.
You need at least FreeCAD 0.19.23300 to edit my current sketches.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
paga
Posts: 15
Joined: Thu Nov 12, 2020 2:08 pm

Re: 3D Körper aus Faces erstellen und exportieren

Postby paga » Fri Nov 13, 2020 7:39 am

Hallo chrisb,

oh das habe ich dann wohl falsch verstanden. Aber dann weiß ich das ja für das nächste mal.
Das Skript sollte auch primär nur meine Vorgehsweise zeigen, um zu sehen, ob dort ggf. schon Fehler in meinem Ablauf sind etc..
Ich habe mal eine möglichst kleine beispielhafte Step-Datei meiner Struktur angehangen. Diese besitzt wie vorher erwähnt ebenfalls die Fehler in FreeCAD auf ("BOPAlgo_InvalidCurveOnSurface" und "BOPAlgo SelfIntersect"). Beim Import in die FEM-Software besitzt dieses Beispiel dieses mal die korrekte Anzahl an Knoten und Kanten. Mir ist durch die verschiedenen Beispiele aufgefallen, dass besondern beim Strukturen, welche komplexere Flächen (nicht ganz eben) aufweisen die Problematik beim Import in die FEM-Software besonders häufig auftritt. Kann es sein, dass FreeCAD bei komplexeren Flächen Hilfknoten und/oder- kanten bildet?

So sieht meine beispielhafte Struktur aus: (sieht noch etwas komisch aus, da die Struktur später noch zugeschnitten wird, damit man einen periodischen rechteckigen Körper erhält)
foam bild.JPG
foam bild.JPG (35.68 KiB) Viewed 332 times
Vielen Dank im Voraus für die Hilfe und Mühe.
Ich wünsche noch einen schönen Tag.

Gruß Patrick
Attachments
foam.zip
(896.88 KiB) Downloaded 10 times
User avatar
thomas-neemann
Posts: 1972
Joined: Wed Jan 22, 2020 6:03 pm

Re: 3D Körper aus Faces erstellen und exportieren

Postby thomas-neemann » Fri Nov 13, 2020 8:07 am

ist die konvertierung in "faces" hilfreich ?
Attachments
Bildschirmfoto_2020-11-13_09-05-40.jpeg
Bildschirmfoto_2020-11-13_09-05-40.jpeg (295.24 KiB) Viewed 320 times
chrisb
Posts: 30822
Joined: Tue Mar 17, 2015 9:14 am

Re: 3D Körper aus Faces erstellen und exportieren

Postby chrisb » Fri Nov 13, 2020 8:14 am

Erzeugst Du direkt diese Step-Datei? Dann kann ich Dir leider nicht weiterhelfen, weil ich mich mit Step nicht auskenne. Meine Vermutung ist, dass die Flächen nicht wirklich Kante-auf-Kante liegen. Du hast sogar ein paar ganz unzusammenhängende Teile erzeugt.
You need at least FreeCAD 0.19.23300 to edit my current sketches.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
paga
Posts: 15
Joined: Thu Nov 12, 2020 2:08 pm

Re: 3D Körper aus Faces erstellen und exportieren

Postby paga » Fri Nov 13, 2020 9:05 am

Hallo zusammen,

danke für die schnellen Rückmeldungen.

@thomas-neemann:
Ich hoffe ich verstehe das richtig. Du schlägst vor ein Downgrade zu machen, um die einzelnen Faces zu erstellen und kein zusammenhängendes Shell?
Also ich habe (wie im Skript zu sehen) die einzelnen Faces mittels "Upgrade" zu einer Shell gemacht und dieses dann als Step exportiert. Ich kann natürlich auch alle einzelnen Flächen auswählen (ohne Upgrade) und daraus dann die Step Datei machen. Die Fehler bleiben beim Import in die FEM-Software leider die Selben. Habe ich meine Flächen jedoch einzelnt und markiere alle und mache dann den Check in FreeCAD bekomme ich je nach Struktur keinen oder deutlich weniger Fehler (bei komplexeren Strukutren, wo die Flächen nicht 100%ig planar sind habe cih trotzdem wenige Fehler) Der Grund warum bei einzelnen Flächen die Fehler geringer sind liegt vielleicht daran, dass FreeCAD nur die einzelnen Flächen prüft und nicht die Kontakt zueinander. Meinstest du das ? Sorry wenn ich das falsch verstanden habe, bin noch ein Anfänger in FreeCAD.

@chrisb:
Was benötigst du denn genau? Die Arbeitsmappe (FCStd-Datei) von FreeCAD? Falls ja, findest du diese im Anhang.
Das mit den Kanten und Flächen ist glaube ich genau mein Problem, nur wie löse ich das? Denn ich weiß, dass meine Koordinaten richtig sind.
Kann es folgendes Problem sein:
Um die Flächen zu bilden wähle ich ja meine Kanten. Da mehrere Flächen sich an einer Kante treffen teilen sich normalweise die Flächen diese eine Kante. Ggf. macht da FreeCAD den Fehler und exportiert für jede Fläche die Kante, obwohl die Flächen sich diese eine Kante teilen.

Gruß Patrick
Attachments
foam.zip
(831.54 KiB) Downloaded 6 times
paga
Posts: 15
Joined: Thu Nov 12, 2020 2:08 pm

Re: 3D Körper aus Faces erstellen und exportieren

Postby paga » Fri Nov 13, 2020 9:40 am

ERGÄNZUNG:

Ich habe gerade noch mit unterschiedlichen Strukturen rumgespielt und dabei ist mir folgendes aufgefallen.

Wenn ich meine Faces einzelt habe und diese dann in FreeCAD prüfe haben meine Strukturen teilweise keine Fehler oder wenige Fehler. Importiere ich die Strukturen in die FEM-Software, welche in FreeCAD keine Fehler hatten habe ich auch keine Fehler in der FEM-Software. Sind jedoch Fehler einzelner Flächen in FreeCAD besitzt die Struktur in der FEM-Software eine andere Zahl an Knoten und Kanten und ist daher nicht ganz richtig. Daher scheint es, dass vereinzelte Flächen korregiert werden müssen. Wie mache ich das?

Von einer sehr komplexten Struktur habe ich in FreeCAD von über 700 Faces nur 2 Faces, welche den folgenden Fehler haben (Prüfung wenn Flächen einzelnt sind):
Fehler einzelne Flächen.JPG
Fehler einzelne Flächen.JPG (31.49 KiB) Viewed 279 times
In der FEM-Software war dementsprechend eine Kante und ein Vertex zu viel. Kann das zusammenhängen?
User avatar
thomas-neemann
Posts: 1972
Joined: Wed Jan 22, 2020 6:03 pm

Re: 3D Körper aus Faces erstellen und exportieren

Postby thomas-neemann » Fri Nov 13, 2020 9:50 am

paga wrote:
Fri Nov 13, 2020 9:05 am
ich würde einfach ein wenig ausprobieren und herumspielen z.b.
mit part verbund erzeugen, part einfache kopie, ex- im- port über iges usw.

lg thomas