首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OpenMesh中按名称删除属性

在OpenMesh中按名称删除属性
EN

Stack Overflow用户
提问于 2020-11-17 23:23:25
回答 1查看 106关注 0票数 1

在OpenMesh中,一旦一个命名的属性被添加到一个元素中,它将是永久的,就像解释的这里一样,该属性在属性管理器的作用域中幸存下来。我的问题是,如何删除这类财产的名称?

到目前为止,我试图由物业经理删除,甚至这次都失败了:

代码语言:javascript
复制
auto face_props = OpenMesh::FProp<FaceProp>(mesh, "face_props");
mesh.remove_property(face_props);

有错误

代码语言:javascript
复制
error: no matching function for call to ‘OpenMesh::TriMesh_ArrayKernelT<>::remove_property(OpenMesh::PropertyManager<OpenMesh::FPropHandleT<FaceProp>, int>&)’

是否有一个remove_property函数可以编写remove_property("face_props") (或类似的)来删除该属性?

编辑:下面给出了相同的错误:

代码语言:javascript
复制
mesh.remove_property( OpenMesh::getProperty<OpenMesh::FaceHandle, FaceProp>(mesh, "face_props") );

我怀疑mesh.remove_property()需要一个属性句柄对象,但是getProperty()返回一个属性管理器。我不知道该怎么绕过这件事。

Edit2: --我猜另一个问题是:如何从属性管理器获得属性句柄?

Edit3:查看来源,似乎PropertyManager有一个成员函数deleteProperty(),但是a)是私有的,b)只有在没有设置retain的情况下才删除该属性,我假设该属性是为命名的属性设置的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-18 18:04:51

显然,您可以定义一个较低级别的属性句柄,然后使用get_property_handle,它将句柄作为引用并在适当的位置进行更新。这样做是可行的:

代码语言:javascript
复制
    OpenMesh::FPropHandleT< FaceProp > fprop;
    mesh.get_property_handle(fprop, "face_props");
    mesh.remove_property( fprop );

我希望这能被更好的记录下来。或者说我在C++上做得更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64884841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档