pyansys的bug奇多,不是闲着egg疼还是别碰了。
最近在想着将pymapdl生成的结果显示在qtinteractor中,然后在一堆乱七八糟文档中费老劲的搜索,其中还动用了文件内容搜索神器DocFetcher
。终于找到了点儿眉目。
比如显示网格,可以使用mapdl.eplot
方法,该方法可以使用通用方法general_plotter
方法中的参数。这里要说的就是general_plotter
方法。
文档描述该方法中包含了一个名为plotter
的参数,如下图所示。
再看文档中关于此参数的描述,似乎是只要传入一个pyvista.Plotter的对象即可将图形显示在该对象中,也就是说,只要将QtInteractor对象传给此参数即可实现目标,因为QtInteractor继承自Plotter类。
然后我兴冲冲地试验了一波。
我将网格显示代码写成了这样:
def mesh(self):
self.mapdl.eplot(title='element',plotter=self.widget_vista)
这里的widget_vista是我创建的QtInteractor对象,其继承自pyvista的BasePlotter,按文档的说法应该是没有问题的。
出现的错误提示是酱婶的:
意思是给了一个不正确的参数plotter
,我直接用pyvista.Plotter创建一个plotter对象传进去也报相同的错误,我怀疑文档在忽悠我。
之后我就打开了定义general_plotter
方法的源文件(plotting.py文件完整路径C:\ProgramData\anaconda3\Lib\site-packages\ansys\mapdl\core\plotting.py
),在第400~449行,其定义为:
# Using * to force all the following arguments to be keyword only.
def general_plotter(
meshes,
points,
labels,
*,
title="",
cpos=None,
show_bounds=False,
show_axes=True,
background=None,
off_screen=None,
savefig=None,
window_size=None,
notebook=None,
# add_mesh kwargs:
style=None,
color="w",
show_edges=None,
edge_color=None,
point_size=5.0,
line_width=None,
opacity=1.0,
flip_scalars=False,
lighting=None,
n_colors=256,
interpolate_before_map=True,
cmap=None,
render_points_as_spheres=False,
render_lines_as_tubes=False,
scalar_bar_args={},
smooth_shading=None,
show_scalar_bar=None,
split_sharp_edges=None,
# labels kwargs
font_size=None,
font_family=None,
text_color=None,
theme=None,
return_plotter=False,
return_cpos=False,
mapdl=None,
plot_bc=False,
plot_bc_legend=None,
plot_bc_labels=None,
bc_labels=None,
bc_target=None,
bc_glyph_size=None,
bc_labels_font_size=16,
):
请问pyansys开发老6,这个plotter参数在哪里?搜索整个文件内容也没找到plotter参数,河里蟹~
补齐代码难度不大,不过突然不想玩这玩意儿了。
珍惜生命,没有大量的闲置时间,还是尽量远离开源代码,尤其是那些用户数量少的开源代码。
(完毕)