QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 864|回复: 2
打印 上一主题 下一主题

[求助] 使用NXOpen删除螺孔

[复制链接]

列兵

Rank: 1

1

主题

1

帖子

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"是空的。

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

有奖推广贴子: 

回复

使用道具 举报

四级士官

Rank: 3Rank: 3

2

主题

18

帖子

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 (80.06 KB, 下载次数: 21)

删除前.png

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

删除后.png
回复 支持 反对

使用道具 举报

四级士官

Rank: 3Rank: 3

2

主题

18

帖子

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
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-9-10 02:43

返回顶部