问题
我为零件的某个面进行了命名,以此查找,进行配合。
在使用先前写好的查找方法时,有时会出现找不到的情况。
然后捣鼓了半天,发现:
只有当“零件文档显示的配置,和已放置的零件配置一致”时,才能找到所需面。
我之前测试时,只有默认配置,就没有出现问题。
API文档上真是一点也不提啊。
处理
设置零件文档显示的配置,使其和零件当前使用的配置一致。
// 在装配体文档中,找到零件中已命名的面
public static Entity GetFaceByName(AssemblyDoc assemblyDoc, string partName, string faceName)
{
Component2 swComponent = assemblyDoc.GetComponentByName(partName);
ModelDoc2 swModel = swComponent.GetModelDoc2() as ModelDoc2;
// 这一步很重要,调整零件文档显示的配置,否则下方 swFace 可能为空
swModel.ShowConfiguration2(swComponent.ReferencedConfiguration);
PartDoc swPart = swModel as PartDoc;
Entity swEntity = swPart.GetEntityByName(faceName, (int)swSelectType_e.swSelFACES) as Entity;
// 这一步很重要,使用这个方法才能在装配体中拿到零件的面
Entity swFace = swComponent.GetCorrespondingEntity(swEntity) as Entity;
return swFace;
}