首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PythonOCC访问步骤实例ID

使用PythonOCC访问步骤实例ID
EN

Stack Overflow用户
提问于 2022-07-18 17:27:59
回答 2查看 320关注 0票数 2

让我们假设我使用这个步骤文件数据作为输入:

代码语言:javascript
复制
#417=ADVANCED_FACE('face_1',(#112),#405,.F.);
#418=ADVANCED_FACE('face_2',(#113),#406,.F.);
#419=ADVANCED_FACE('face_3',(#114),#407,.F.);

我使用龙骨核读取STEP文件。然后,下面的代码将打印ADVANCED_FACE实例的名称(face_1face_2face_3):

代码语言:javascript
复制
from OCC.Core.STEPControl import STEPControl_Reader
from OCC.Core.TopExp import TopExp_Explorer
from OCC.Core.TopAbs import TopAbs_FACE
from OCC.Core.StepRepr import StepRepr_RepresentationItem

reader = STEPControl_Reader()
tr = reader.WS().TransferReader()
reader.ReadFile('model.stp')
reader.TransferRoots()
shape = reader.OneShape()


exp = TopExp_Explorer(shape, TopAbs_FACE)
while exp.More():
    s = exp.Current()
    exp.Next()

    item = tr.EntityFromShapeResult(s, 1)
    item = StepRepr_RepresentationItem.DownCast(item)
    name = item.Name().ToCString()
    print(name)

如何访问各个形状的标识符?(#417#418#419)

最小再生产

https://github.com/flolu/step-occ-instance-ids

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-30 14:48:32

reader.TransferRoots()之后创建如下步骤模型:

代码语言:javascript
复制
model = reader.StepModel()

并访问循环中的ID:

代码语言:javascript
复制
id = model.IdentLabel(item)

完整的代码如下所示,也可以在GitHub上找到

代码语言:javascript
复制
from OCC.Core.STEPControl import STEPControl_Reader
from OCC.Core.TopExp import TopExp_Explorer
from OCC.Core.TopAbs import TopAbs_FACE
from OCC.Core.StepRepr import StepRepr_RepresentationItem

reader = STEPControl_Reader()
tr = reader.WS().TransferReader()
reader.ReadFile('model.stp')
reader.TransferRoots()
model = reader.StepModel()
shape = reader.OneShape()


exp = TopExp_Explorer(shape, TopAbs_FACE)
while exp.More():
    s = exp.Current()
    exp.Next()

    item = tr.EntityFromShapeResult(s, 1)
    item = StepRepr_RepresentationItem.DownCast(item)

    label = item.Name().ToCString()
    id = model.IdentLabel(item)

    print('label', label)
    print('id', id)

感谢temurka1指点

票数 1
EN

Stack Overflow用户

发布于 2022-07-25 16:30:26

由于安装pythonocc模块的问题,我无法运行您的代码,但是,我怀疑您应该能够通过遍历StepRep_RepresentationItem对象上的__dict__来检查它(在字符串转换之前),以发现/访问您可能需要的对象的任何属性/属性/方法:

代码语言:javascript
复制
    entity = tr.EntityFromShapeResult(s, 1)
    item = StepRepr_RepresentationItem.DownCast(entity)
    
    print(entity.__dict__)
    print(item.__dict__)

如果有必要,inspect模块的存在是为了深入到对象中。

参考文献

__

https://docs.python.org/3/library/inspect.html

文件/包装器/步骤元素.

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

https://stackoverflow.com/questions/73026290

复制
相关文章

相似问题

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