我正在使用 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

请注意,多维数据集的 View 在交互时是如何“跳跃”的。
ipywidgets可能有问题吗?由于在笔记本中显示时该 View 还可以。

如何解决?

如何繁殖

您可以使用Binder复制它,而无需创建本地环境(诚然,安装CadQuery/jupyter-cadquery不是最容易/最快的操作):

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

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

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

还要注意,透视图也丢失了(不是正交 View )。修复那将是一个加号! ^^

最佳答案

无需jupyter-cadquery即可复制它,因此打开了一个新问题:

Embed widgets with pythreejs: wrong perspective and camera look-at

关于python - 使用jupyter-cadquery(threejs): wrong position on load嵌入小部件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59462182/

10-13 04:17