Ich verwende jupyter-cadquery
, um einige mit CadQuery erstellte 3D-Modelle zu visualisieren .
Bei der Visualisierung der Modelle auf einem Jupyter-Notebook funktioniert alles wie erwartet.
Beim Versuch, das Widget in ein HTML-Dokument einzubetten, scheint die Kamera beim Laden jedoch (0, 0, 0)
nicht wie erwartet darauf zu zeigen. Sobald Sie mit dem Widget interagieren, zeigt die Kamera auf die erwartete Koordinate.
Hier ist der Code zum Reproduzieren des Fehlers und eine Animation des genannten Problems (siehe Anweisungen unten zum Reproduzieren mit Binder):
from cadquery import Workplane
from ipywidgets import embed
from jupyter_cadquery.cad_view import CadqueryView
from jupyter_cadquery.cadquery import Assembly
from jupyter_cadquery.cadquery import Part
# Create a simple assembly
box1 = Workplane('XY').box(10, 10, 10).translate((0, 0, 5))
a1 = Assembly([Part(box1)], "example 1")
# Generate HTML
a1.collect_shapes()
view = CadqueryView()
for shape in a1.collect_shapes():
view.add_shape(shape["name"], shape["shape"], shape["color"])
renderer = view.render()
embed.embed_minimal_html('export.html', views=renderer, title='Renderer')
renderer
Beachten Sie, wie die Ansicht des Würfels bei Interaktion plötzlich "springt".
Könnte es ein Problem sein mit ipywidgets
? Da die Ansicht in Ordnung ist, wenn sie im Notizbuch angezeigt wird.
Wie könnte es behoben werden?
Wie zu reproduzieren
Sie können es mit Binder reproduzieren, ohne eine lokale Umgebung erstellen zu müssen (zugegebenermaßen ist die Installation von CadQuery / jupyter-cadquery nicht die einfachste / schnellste Aufgabe):
Führen Sie einfach den obigen Code in einem neuen leeren Notizbuch aus. Sehen Sie, wie das renderer
3D-Modell ohne Probleme auf dem Notebook angezeigt wird:
Nach der Ausführung export.html
wird links in der Dateiliste auch ein Dokument angezeigt. Öffnen Sie es und stellen Sie sicher, dass Sie oben im Viewer auf die Schaltfläche "HTML vertrauen" klicken und auf "Aktualisieren" klicken. Wenn Sie mit der Ansicht interagieren, können Sie das Problem reproduzieren.
Beachten Sie, dass auch die Perspektive verloren geht (das ist keine orthogonale Ansicht). Das zu beheben wäre ein Plus! ^^