让我们假设我使用这个步骤文件数据作为输入:
#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_1、face_2和face_3):
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)
最小再生产
发布于 2022-08-30 14:48:32
在reader.TransferRoots()之后创建如下步骤模型:
model = reader.StepModel()并访问循环中的ID:
id = model.IdentLabel(item)完整的代码如下所示,也可以在GitHub上找到
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)发布于 2022-07-25 16:30:26
由于安装pythonocc模块的问题,我无法运行您的代码,但是,我怀疑您应该能够通过遍历StepRep_RepresentationItem对象上的__dict__来检查它(在字符串转换之前),以发现/访问您可能需要的对象的任何属性/属性/方法:
entity = tr.EntityFromShapeResult(s, 1)
item = StepRepr_RepresentationItem.DownCast(entity)
print(entity.__dict__)
print(item.__dict__)如果有必要,inspect模块的存在是为了深入到对象中。
参考文献
__
https://stackoverflow.com/questions/73026290
复制相似问题