Keine nightly builds mehr?

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

WICHTIG: Bitte zuerst lesen, bevor Sie posten
rynn
Posts: 470
Joined: Tue Jul 31, 2018 7:00 am

Re: Keine nightly builds mehr?

Post by rynn »

wmayer wrote: Sun Nov 28, 2021 11:01 am Probier mal
Ich habe folgendes versucht:

Code: Select all

import Part
shape = Part.Shape()
shape.read("….igs")
Part.show(shape)
shape.BoundBox
tessellation = shape.tessellate(10)

import Mesh
mesh = Mesh.Mesh(tessellation)
Mesh.show(mesh)
in FC 19:
shape.read: Progess-Bar mit „Reading Iges file“
shapeBoundBox: korrekt
Part und Mesh Objekte werden angezeigt und sehen vernünftig aus.

in FC 20:
shape.read() tut irgendwas (aber ohne progess-bar)
Das Ergebnis hat eine BoundBox (allerdings falschen Werten)
Part.show(shape) erzeugt den <Part> ViewProviderExt.cpp(1295): Cannot compute Inventor representation for the shape of Unnamed#… Fehler.
Part Objekt wird nicht angezeigt.
Mesh-Objekt sieht vernünftig aus.

shape.tessellate(1) dauert zu lange, konnte ich nicht mehr abwarten, 0.1 sowieso nicht.
wmayer
Founder
Posts: 20319
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Keine nightly builds mehr?

Post by wmayer »

rynn wrote: Sun Nov 28, 2021 1:25 pm Das Ergebnis hat eine BoundBox (allerdings falschen Werten)
Gerade die Ausgabe wäre wichtig gewesen. Ist das die Ausgabe?
BoundBox (1.79769e+308, 1.79769e+308, 1.79769e+308, -1.79769e+308, -1.79769e+308, -1.79769e+308)
Das heißt nämlich, dass das Objekt eine ungültige Bounding-Box besitzt. Und weil diese ungültig ist, kann auch kein Wert für die Abweichung der Tessellierung bestimmt werden. Das verursacht auch die Fehlermeldung:
ViewProviderExt.cpp(1295): Cannot compute Inventor representation for the shape of Unnamed#
shape.tessellate(1) dauert zu lange, konnte ich nicht mehr abwarten, 0.1 sowieso nicht.
Wenn das Objekt sehr groß ist, dann reicht auch tessellate(10).
Mesh-Objekt sieht vernünftig aus.
Wenn das Netz also vernünftig aussieht, dann wird das Modell wohl irgendeine Fläche beinhalten, die es unmöglich macht, die Bounding-Box zu bestimmen. Versuche diese mal zu identifizieren:

Code: Select all

index = 0
for i in s.Faces:
  index = index + 1
  if not i.BoundBox.isValid():
    print ("Invalid bounding box of face {}".format(index))
rynn
Posts: 470
Joined: Tue Jul 31, 2018 7:00 am

Re: Keine nightly builds mehr?

Post by rynn »

wmayer wrote: Sun Nov 28, 2021 1:44 pm
rynn wrote: Sun Nov 28, 2021 1:25 pm Das Ergebnis hat eine BoundBox (allerdings falschen Werten)
Gerade die Ausgabe wäre wichtig gewesen. Ist das die Ausgabe?
BoundBox (1.79769e+308, 1.79769e+308, 1.79769e+308, -1.79769e+308, -1.79769e+308, -1.79769e+308)
Das heißt nämlich, dass das Objekt eine ungültige Bounding-Box besitzt.
Nein. Die Werte sind schon vernünftig, nur falsch. Also in etwa so:
0.19 BoundBox (1545, -724, 1095, 2430, 724, 1537) (korrekt)
0.20 BoundBox (1412, -949, 1022, 2626, 755, 1608) (falsch)
Wenn das Netz also vernünftig aussieht, dann wird das Modell wohl irgendeine Fläche beinhalten, die es unmöglich macht, die Bounding-Box zu bestimmen. Versuche diese mal zu identifizieren:
scheinen alle gut zu sein.

Nachtrag:

Code: Select all

for i in shape.Faces:
  Part.show(i)
funktioniert. Es sind halt ein paar Tausend…

Nachtrag 2:
Wenn man mit der geladenen shape „herumspielt“ repariert sie sich von selbst:

Code: Select all

import Part
shape = Part.Shape()
shape.read("….igs")
shape.BoundBox          # kaputt
Part.show(shape)        # Fehler, nix angezeigt
shape.BoundBox          # Bounding Box ist jetzt korrekt
for i in shape.Faces:
  Part.show(i)
shape.BoundBox          # immer noch korrekt
                        # GUI alles auswählen und löschen
Part.show(shape)        # Das Teil wird jetzt angezeigt
wmayer
Founder
Posts: 20319
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Keine nightly builds mehr?

Post by wmayer »

0.19 BoundBox (1545, -724, 1095, 2430, 724, 1537) (korrekt)
0.20 BoundBox (1412, -949, 1022, 2626, 755, 1608) (falsch)
OK, das ist aber kein Problem, weil die Bounding-Box nur eine grobe Schätzung ist, wenn noch keine Tessellierung durchgeführt wurde. Erst nachdem diese gemacht wurde, sind die Werte aussagekräftig. Mehr dazu hier: https://opencascade.blogspot.com/2009/0 ... g-box.html

Also ohne die betreffende Datei, wird es wohl schwer, den Fehler zu lokalisieren. Da Du aber Deine eigene Version gebaut hast, dann erstelle auch eine Debug-Version. Dann setze einen Breakpoint in ViewProviderPartExt::updateVisual() und beobachte, in welcher Zeile das Programm in den catch(...)-Block springt.
rynn
Posts: 470
Joined: Tue Jul 31, 2018 7:00 am

Re: Keine nightly builds mehr?

Post by rynn »

wmayer wrote: Sun Nov 28, 2021 3:02 pm OK, das ist aber kein Problem, weil die Bounding-Box nur eine grobe Schätzung ist, wenn noch keine Tessellierung durchgeführt wurde. Erst nachdem diese gemacht wurde, sind die Werte aussagekräftig. Mehr dazu hier: https://opencascade.blogspot.com/2009/0 ... g-box.html
Das erklärt das mit der Bounding Box. Aber, daß die shape aber von selbst repariert und dann angezeigt werden kann auch?
wmayer
Founder
Posts: 20319
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Keine nightly builds mehr?

Post by wmayer »

Aber, daß die shape aber von selbst repariert und dann angezeigt werden kann auch?
Ist das so? Aus der Tessellierung ein Netz zu erzeugen und darzustellen, ist etwas anderes als das, was in ViewProviderPartExt::updateVisual() passiert.
rynn
Posts: 470
Joined: Tue Jul 31, 2018 7:00 am

Re: Keine nightly builds mehr?

Post by rynn »

wmayer wrote: Sun Nov 28, 2021 3:49 pm
Aber, daß die shape aber von selbst repariert und dann angezeigt werden kann auch?
Ist das so? Aus der Tessellierung ein Netz zu erzeugen und darzustellen, ist etwas anderes als das, was in ViewProviderPartExt::updateVisual() passiert.
Ich hatte das als Nachtrag an das Posting drangehängt.
Nachtrag 2:
Wenn man mit der geladenen shape „herumspielt“ repariert sie sich von selbst:

Code: Select all

import Part
shape = Part.Shape()
shape.read("….igs")
shape.BoundBox          # kaputt
Part.show(shape)        # Fehler, nix angezeigt
shape.BoundBox          # Bounding Box ist jetzt korrekt
for i in shape.Faces:
  Part.show(i)
shape.BoundBox          # immer noch korrekt
                        # GUI alles auswählen und löschen
Part.show(shape)        # Das Teil wird jetzt angezeigt
Die for-Schleife über alle faces scheint die shape zu reparieren…
wmayer
Founder
Posts: 20319
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Keine nightly builds mehr?

Post by wmayer »

rynn wrote: Sun Nov 28, 2021 3:59 pm Die for-Schleife über alle faces scheint die shape zu reparieren…
Wie auch immer. Auf jeden Fall muss man herausfinden, an welcher Stelle in ViewProviderPartExt::updateVisual() die Exception geworfen wird.
Post Reply