我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
注意立方体的视图是如何在交互时突然“跳跃”的。
这可能是一个问题ipywidgets
吗?由于在笔记本中显示时视图没问题。
怎么可能修好?
如何重现
您可以使用 Binder 重现它,而无需创建本地环境(诚然,安装 CadQuery/jupyter-cadquery 并不是最简单/最快的事情):
只需在一个新的空笔记本中执行上面的代码。看看renderer
笔记本上如何显示 3D 模型而没有任何问题:
执行后,export.html
左侧的文件列表中也会出现一个文档。打开它并确保单击查看器顶部的“信任 HTML”按钮并点击刷新。如果您与视图交互,则可以重现该问题。
请注意,还丢失了透视图(这不是正交视图)。修复那将是一个加号!^^