如何在将pyvista网格导出到波前obj时设置组名称



我从一些csv数据生成一些圆柱体网格,并将它们添加到PyVista绘图仪中,然后使用export_obj方法将它们导出到".obj"文件中。问题是,我想将组名与obj文件中的每个网格相关联,以便以后可以使用该信息,但是导出器似乎为每个网格分配了一个随机名称,如grp123

IDS = df[ID_FIELD].values
p = pv.Plotter()
length = len(IDS)
for index, id in enumerate(IDS[: NUM_TO_GENERATE]):
print(f"Making Column {index}/{length}", end=", ")
data = dfa.loc[dfa[ID_FIELD] == id]
print(f"NUM ROWS: {len(data)}")
print(id)
x = float(df.loc[df[ID_FIELD] == id][C1])
z = float(df.loc[df[ID_FIELD] == id][C2])
for row in data.values:
height = float(row[C3]) - float(row[C4])
cyl = pv.Cylinder(height=height, center=(
x, float(row[FROM_COLUMN]) + height/2, z), direction=(0, 1.0, 0))
p.add_mesh(cyl, name=id, label=id)
p.add_axes()
p.export_obj("data.obj")

因此,是的,基本上有助于将名称与obj文件中的每个组关联起来会很有帮助。

PyVista在后台使用vtkOBJExporter()打印OBJ文件。VTK类几乎没有公共方法,而且似乎没有与命名组相关的方法。

确凿的证据正在实施:

// write out a group name and material
fpObj << "ng grp" << idStart << "n";
fpObj << "usemtl mtl" << idStart << "n";

这看起来很像VTK中硬编码的东西(并使用整数idStart索引来标记输出文件中的所有内容(,换句话说,恐怕vtkOBJExporter()不支持定义自定义组标签。由于PyVista使用这个导出器,您将无法在库中解决这个问题。

最新更新