找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 1394|回复: 2

[求助] 使用NXOpen删除螺孔

[复制链接]

1

主题

0

回帖

28

积分

列兵

积分
28
发表于 2023-11-17 10:47:43 | 显示全部楼层 |阅读模式
刚学习使用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"是空的。

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

2

主题

16

回帖

745

积分

四级士官

积分
745
发表于 2023-11-17 19:19:02 | 显示全部楼层
本帖最后由 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
删除后.png

2

主题

16

回帖

745

积分

四级士官

积分
745
发表于 2023-11-17 19:24:29 | 显示全部楼层
  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)
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|小黑屋|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2024-12-22 16:36

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表