使用 jupyter-cadquery (threejs) 嵌入小部件:加载时位置错误

Peq*_*que 8 python three.js jupyter-notebook ipywidgets pythreejs

我正在使用jupyter-cadquery可视化一些用CadQuery制作的 3D 模型。

在 Jupyter 笔记本上可视化模型时,一切都按预期进行。

但是,当尝试将小部件嵌入 HTML 文档时,似乎相机在加载时指向(0, 0, 0),而不是预期的那样。与小部件交互后,相机将指向预期的坐标。

这是重现错误的代码和上述问题的动画(请参阅下面有关如何使用 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
Run Code Online (Sandbox Code Playgroud)

输出

注意立方体的视图是如何在交互时突然“跳跃”的。

这可能是一个问题ipywidgets吗?由于在笔记本中显示时视图没问题。

怎么可能修好?

如何繁殖

您可以使用 Binder 重现它,而无需创建本地环境(诚然,安装 CadQuery/jupyter-cadquery 并不是最简单/最快的事情):

https://mybinder.org/v2/gh/bernhard-42/jupyter-cadquery/master?urlpath=lab&filepath=examples%2Fcadquery.ipynb

只需在一个新的空笔记本中执行上面的代码。查看如何renderer在笔记本上显示 3D 模型而没有任何问题:

截图来自2019-12-23 21-28-42

执行后,export.html左侧的文件列表中也会出现一个文件。打开它并确保单击查看器顶部的“信任 HTML”按钮并点击刷新。如果您与视图交互,则可以重现该问题。

截图来自2019-12-23 21-25-21

请注意,同样,透视图丢失了(这不是正交视图)。修复那将是一个加号!^^

Peq*_*que 0

这可以在不需要的情况下重现jupyter-cadquery,因此提出了一个新问题:

使用 pytherejs 嵌入小部件:错误的视角和相机观察