UG爱好者

标题: 使用NXOpen删除螺孔 [打印本页]

作者: vaughn0223    时间: 2023-11-17 10:47
标题: 使用NXOpen删除螺孔
刚学习使用NXOpen,在做一个项目。其中有一个需求,删除部件上的所有直径小于40的螺孔。如下是实现代码:
  1. def remove_holes(file:str, out_file:str, diameter:int):
  2.     theSession  = NXOpen.Session.GetSession()
  3.     basePart1, partLoadStatus1 = theSession.Parts.OpenActiveDisplay(file, NXOpen.DisplayPartOption.AllowAdditional)
  4.    
  5.     workPart = theSession.Parts.Work
  6.     displayPart = theSession.Parts.Display
  7.     partLoadStatus1.Dispose()
  8.     theSession.ApplicationSwitchImmediate("UG_APP_MODELING")
  9.    
  10.     # loop for holes
  11.    for feature in workPart.Features:
  12.        print(f'{feature.Name}')
  13.        if isinstance(feature, NXOpen.Features.Hole):
  14.            holeDiameter = feature.GetDiameter()
  15.            print(f'{feature.Name}, hole diameter: {holeDiameter}')
  16.            if holeDiameter < diameter:
  17.                workPart.Features.Delete(feature)
  18.    
  19.     # save
  20.     partSaveStatus1 = workPart.SaveAs(out_file)
  21.     partSaveStatus1.Dispose()
复制代码
使用这种方式,feature都识别不出来,即"workPart.Features"是空的。

哪位大侠帮忙看看,该如何删除螺孔这个功能呢?

作者: hustmse0510    时间: 2023-11-17 19:19
本帖最后由 hustmse0510 于 2023-11-17 19:20 编辑
  1. <img src="https://www.ugsnx.com/forum.php?mod=image&aid=403414&size=300x300&key=78c0d4e438214915&nocache=yes&type=fixnone" border="0" aid="attachimg_403414" alt=""><img src="https://www.ugsnx.com/forum.php?mod=image&aid=403415&size=300x300&key=903a08b3e315fce7&nocache=yes&type=fixnone" border="0" aid="attachimg_403415" alt="">import NXOpen
复制代码

删除前.png (80.06 KB, 下载次数: 24)

删除前.png

删除后.png (77.09 KB, 下载次数: 18)

删除后.png

作者: hustmse0510    时间: 2023-11-17 19:24
  1. import NXOpen
  2. import NXOpen_Features

  3. theSession: NXOpen.Session = NXOpen.Session.GetSession()
  4. update: NXOpen.Update = theSession.UpdateManager
  5. workPart: NXOpen.Part = theSession.Parts.Work
  6. features: NXOpen_Features.FeatureCollection = workPart.Features
  7. f: NXOpen_Features.Feature
  8. del_holes_mark = theSession.SetUndoMark(
  9.     NXOpen.SessionMarkVisibility.Visible,
  10.     'deleteholes')
  11. for f in features:
  12.     if isinstance(f, NXOpen_Features.HolePackage):
  13.         builder: NXOpen_Features.HolePackageBuilder = features.CreateHolePackageBuilder(
  14.             f)
  15.         if builder.TapDrillDiameter.Value < 40.0:
  16.             update.AddObjectsToDeleteList([f])
  17. update.DoUpdate(del_holes_mark)
复制代码





欢迎光临 UG爱好者 (https://www.ugsnx.com/) Powered by Discuz! X3.2