Wie repariert man STEP dateien aus dem Internet?

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

WICHTIG: Bitte zuerst lesen, bevor Sie posten
User avatar
Kartoffelpüre
Posts: 161
Joined: Fri Mar 11, 2022 8:33 am

Wie repariert man STEP dateien aus dem Internet?

Post by Kartoffelpüre »

Wenn man STEP Dateien aus dem Internet lädt, dann gibt es zwei Probleme. Zum einen haben sie meist extrem viele Fehler

Code: Select all

BOPAlgo Selfintersect
BOPAlgo ZuKleineKante
BOPAlgo Geom_Abs_C0
"BOPAlgo_InvalidCurveOnSurface"
und zum Zweiten sind sie meist zu detailliert. Beides ist nicht gut, wenn man sie selbst in eine Baugruppe verbaut und dann wiederum in STEP exportiert und weiter leitet.

In einem CAD wie SolidWorks Macht man "Import Diagnose" -> "Automatisch reparieren" -> Defeature -> export als Parasolid -> Import -> "Import Diagnose"

Die "Import Diagnose", die "Automatische Reparatur" und Defeature sind meist sehr Rechenintensive Arbeiten. Wenn man das aber wegautomatisieren kann, dann ist die Rechenzeit fast egal. Beim letzten Teil hat SolidWorks hier 3h gebraucht.

Unter FreeCAD habe ich hierfür keine Automatismen gefunden.

Ich habe mir bereits https://wiki.freecadweb.org/Defeaturing_Workbench angesehen, den ich aber für unbrauchbar halte. Ich habe nicht vor Kanten einzeln zu selektieren. Neu modellieren ist da häufig schneller. Zum neu Modellieren habe ich dann diesen Beitrag gelesen der durchaus auch interessant ist. https://forum.freecadweb.org/viewtopic.php?t=37413

Gibt es aber vielleicht ein HowTo wie man manuell und möglichst effizient Teile Repariert/Vereinfacht?

Am Ende sollte einfach ein fehlerfreier Geometrischer Körper stehen, dem man ansieht, was es sein soll. Und dafür sollte weniger manuelle Arbeitszeit verwendet werden müssen, als es kostet ihn vereinfacht neu zu modellieren.
User avatar
thomas-neemann
Veteran
Posts: 11801
Joined: Wed Jan 22, 2020 6:03 pm
Location: Osnabrück DE 🇩🇪
Contact:

Re: Wie repariert man STEP dateien aus dem Internet?

Post by thomas-neemann »

Kartoffelpüre wrote: Thu Aug 18, 2022 11:26 am ...
kannst du irgendwo eine beispieldatei hochladen?
Gruß Dipl.-Ing. (FH) Thomas Neemann

https://www.youtube.com/@thomasneemann5 ... ry=freecad
freecad-heini-1
Veteran
Posts: 7788
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Wie repariert man STEP dateien aus dem Internet?

Post by freecad-heini-1 »

Kartoffelpüre wrote: Thu Aug 18, 2022 11:26 am Unter FreeCAD habe ich hierfür keine Automatismen gefunden.
Bitte schaue Dir Analysis Situs an, bitte Forensuche verwenden:
http://quaoar.su/blog/category/analysis-situs
User avatar
Kartoffelpüre
Posts: 161
Joined: Fri Mar 11, 2022 8:33 am

Re: Wie repariert man STEP dateien aus dem Internet?

Post by Kartoffelpüre »

@thomas-neemann
Schutzschalter.7z
(860.03 KiB) Downloaded 31 times
@freecad-heini-1
Analysis Situs hab ich mal installiert. Kann aber damit nicht viel anfangen. Im übrigen auch nicht mit den Ergebnissen aus der Forensuche.
User avatar
thomas-neemann
Veteran
Posts: 11801
Joined: Wed Jan 22, 2020 6:03 pm
Location: Osnabrück DE 🇩🇪
Contact:

Re: Wie repariert man STEP dateien aus dem Internet?

Post by thomas-neemann »

Kartoffelpüre wrote: Fri Aug 19, 2022 12:29 pm ...
ich würde es so machen (unter 2 min), dateigröße 63 kb


https://www.youtube.com/watch?v=UY2EKsRdjgI

phpBB [video]


tn-1459.FCStd
(63.41 KiB) Downloaded 11 times
Gruß Dipl.-Ing. (FH) Thomas Neemann

https://www.youtube.com/@thomasneemann5 ... ry=freecad
User avatar
Kartoffelpüre
Posts: 161
Joined: Fri Mar 11, 2022 8:33 am

Re: Wie repariert man STEP dateien aus dem Internet?

Post by Kartoffelpüre »

:shock: Wow echt faszinierend. Aber unter 2min. Ehrlich, das Ist nur möglich, weil du das vorher vorbereitet hast.

Ich habe beim ersten Versuch gerade 1h gebraucht, auch weil ich ein paar Kleinigkeiten anpassen musste. Ich gehe mal optimistisch von 30min in den ersten paar versuchen aus und - sollte ich das häufiger als nur 1-2 mal im Jahr machen müssen - von durchschnittlich mit Übung etwa 10min am Ende aus.

Zum Video.
Schritt 1:
Das erste Beispiel Trimex war neu und spannend. Sehe ich das richtig, dass die Funktion noch viele Fehler produziert und nicht bearbeitet werden kann - also eine neue ersatzfläche selektiert werden kann? Ich musste das Extrudieren löschen und neu machen um die Selektion einer vermeintlich falschen Endfläche rückgängig zu machen. Tatsächlich hat Trimex immer nur ein Drittel so weit ausgetragen als die Endfläche die ich selektiert habe.
Ausserdem hat die Funktion eine Menge Fehler ausgegeben, weshalb ich dann das Dokument öffnen und wieder schliessen musste, weil jeder Mausklick eine Leere Extrusion erzeugt hat und sonst nichts mehr ging.

Code: Select all

08:48:49  Draft Grid: Spacing value is zero
08:48:49  <class 'RuntimeError'>
08:48:49  Traceback (most recent call last):
08:48:49    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 215, in action
08:48:49      self.ui.labelRadius.setText(translate("draft", "Distance"))
08:48:49  RuntimeError: Internal C++ object (PySide2.QtWidgets.QLabel) already deleted.
08:48:49  Draft Grid: Spacing value is zero
08:48:49  <class 'RuntimeError'>
08:48:49  Traceback (most recent call last):
08:48:49    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 215, in action
08:48:49      self.ui.labelRadius.setText(translate("draft", "Distance"))
08:48:49  RuntimeError: Internal C++ object (PySide2.QtWidgets.QLabel) already deleted.
08:48:49  Draft Grid: Spacing value is zero
08:48:49  <class 'RuntimeError'>
08:48:49  Traceback (most recent call last):
08:48:49    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 215, in action
08:48:49      self.ui.labelRadius.setText(translate("draft", "Distance"))
08:48:49  RuntimeError: Internal C++ object (PySide2.QtWidgets.QLabel) already deleted.
08:48:49  Draft Grid: Spacing value is zero
08:48:49  <class 'RuntimeError'>
08:48:49  Traceback (most recent call last):
08:48:49    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 215, in action
08:48:49      self.ui.labelRadius.setText(translate("draft", "Distance"))
08:48:49  RuntimeError: Internal C++ object (PySide2.QtWidgets.QLabel) already deleted.
08:48:49  Draft Grid: Spacing value is zero
08:48:49  <class 'RuntimeError'>
08:48:49  Traceback (most recent call last):
08:48:49    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 215, in action
08:48:49      self.ui.labelRadius.setText(translate("draft", "Distance"))
08:48:49  RuntimeError: Internal C++ object (PySide2.QtWidgets.QLabel) already deleted.
08:48:49  Draft Grid: Spacing value is zero
08:48:49  <class 'RuntimeError'>
08:48:49  Traceback (most recent call last):
08:48:49    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 215, in action
08:48:49      self.ui.labelRadius.setText(translate("draft", "Distance"))
08:48:49  RuntimeError: Internal C++ object (PySide2.QtWidgets.QLabel) already deleted.
Die Lösung hier war "Fangen in der Nähe aus" wie du es ja eigentlich vorgemacht hast.

Ich habe mich dann gefragt, weshalb du Trimex nicht für die folgenden Flächen verwendet hast. Ich vermute, dass es hier an den Fehlermeldungen lag.

Code: Select all

09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:11  Draft Grid: Spacing value is zero
09:02:11  <class 'IndexError'>
09:02:11  Traceback (most recent call last):
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 207, in action
09:02:11      dist, ang = (self.extrude(self.shift), None)
09:02:11    File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftguitools\gui_trimex.py", line 255, in extrude
09:02:11      self.ghost[0].trans.translation.setValue([delta.x, delta.y, delta.z])
09:02:11  IndexError: list index out of range
09:02:12  Traceback (most recent call last):
  File "C:\Users\Kartoffelpuere\AppData\Local\Programs\FreeCAD 0.20\Mod\Draft\draftutils\todo.py", line 141, in doTasks
    f()
TypeError: _removeSwitch() missing 1 required positional argument: 'switch'

09:02:12  ToDo.doTasks, Unexpected error:
<class 'TypeError'>
in <bound method Tracker._removeSwitch of <draftguitools.gui_trackers.lineTracker object at 0x000001A6B0AF1940>>(None)
Der Körper sah aber gut aus. Habs dann aber gemacht wie du es vorgeschlagen hast.

Ich finde interessant, dass du beim Messen den Linienbefehl aus Arch verwendest. Dass du nicht den Standard Messen Befehl verwendest, ist mir klar, der ist nutzlos. Aber warum nicht den Messen Befehl aus "Part Design" ?

Gerade scheitere ich an einem kleinen Problem. Ich Arbeite normalerweise immer mit Part Design. Das funktioniert immer recht gut. Aber jetzt beschwert sich Part Design laufend, dass es keinen aktiven Körper gibt und schlägt vor einen doppelzuklicken. Wenn ich das aber mit einer Extrude mache, dann kann ich da lediglich etwas an einer Bewegungsschrittweite oder Drehungsschrittweite ändern. (Was ich auch noch nicht verstanden habe). Ich kann die Extrusion jedoch nicht als Körper aktivieren.
User avatar
thomas-neemann
Veteran
Posts: 11801
Joined: Wed Jan 22, 2020 6:03 pm
Location: Osnabrück DE 🇩🇪
Contact:

Re: Wie repariert man STEP dateien aus dem Internet?

Post by thomas-neemann »

Kartoffelpüre wrote: Mon Aug 22, 2022 7:59 am ...Ich habe mich dann gefragt, weshalb du Trimex nicht für die folgenden Flächen verwendet hast.
ich vermute, daß trimmex nicht mehere ebenen gleichzeitig extrudieren kann
Gruß Dipl.-Ing. (FH) Thomas Neemann

https://www.youtube.com/@thomasneemann5 ... ry=freecad
freecad-heini-1
Veteran
Posts: 7788
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Wie repariert man STEP dateien aus dem Internet?

Post by freecad-heini-1 »

Kartoffelpüre wrote: Fri Aug 19, 2022 12:29 pm @freecad-heini-1
Analysis Situs hab ich mal installiert. Kann aber damit nicht viel anfangen. Im übrigen auch nicht mit den Ergebnissen aus der Forensuche.
Hast Du die Webseite besucht?
http://www.analysissitus.org/

Dort sind die Features beschrieben:
http://www.analysissitus.org/features.html

Sehr beeindruckend welche Möglichkeiten Analysissitus hat Fremddaten nicht nur zu analysieren, sondern auch zu reparieren. Allerdings musste ich mich in das Programm einarbeiten, zumindest in den Bereich der mich betrifft bzw. die Fremddaten die ich erhalte.
User avatar
Kartoffelpüre
Posts: 161
Joined: Fri Mar 11, 2022 8:33 am

Re: Wie repariert man STEP dateien aus dem Internet?

Post by Kartoffelpüre »

freecad-heini-1 wrote: Mon Aug 22, 2022 9:18 am Hast Du die Webseite besucht?
Natürlich habe ich das. Leider ist dabei nicht das Wissen um die Verwendung automatisch in mich hineingeflossen, ich musste recherchieren. Dabei ist leider nicht viel rumgekommen. Vermutlich, weil ich kein tiefes Verständnis für die Funktionsweise und Mathematik von 3Dimensional programmierten Körpern habe. Als Konstrukteur mit Solidworks musste ich mich nie damit befassen. Ausserdem tue ich mich auch mit dem technischen Englisch in dem Bereich schwer. Aus dem Grund habe ich mich nach kurzem Studium der Webseite mit den Buttons der Anwendung begnügt, wobei die Funktion "Auto-repair" wohl noch ohne Funktion ist. Der Knopf hat nichts bewirkt.
chrisb
Veteran
Posts: 53919
Joined: Tue Mar 17, 2015 9:14 am

Re: Wie repariert man STEP dateien aus dem Internet?

Post by chrisb »

Kartoffelpüre wrote: Mon Aug 22, 2022 7:59 am Ich Arbeite normalerweise immer mit Part Design. Das funktioniert immer recht gut. Aber jetzt beschwert sich Part Design laufend, dass es keinen aktiven Körper gibt und schlägt vor einen doppelzuklicken. Wenn ich das aber mit einer Extrude mache, dann kann ich da lediglich etwas an einer Bewegungsschrittweite oder Drehungsschrittweite ändern. (Was ich auch noch nicht verstanden habe). Ich kann die Extrusion jedoch nicht als Körper aktivieren.
Da musst Du Dich noch ein wenig zwischen Part und PartDesign sortieren. In PartDesign sprechen wir vom "Aufpolstern", in Part vom "Extrudieren". Ein Part-Objekt kannst Du in PartDesign nicht direkt weiterbearbeiten, nur als BaseFeature. Anfängern empfehle ich so lange wie möglich in einer Wokbench zu bleiben. Mischen geht, man muss aber - wie sonst auch - wissen wie es geht.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
Post Reply