基于NXOpen对UG进行二次开发使用

一、开发环境搭建

为了能更方便的利用Python对UG进行二次开发,最好是使用自己电脑中安装的Python解释器来运行UG中的Python脚本。

修改UG中的配置:

打开C:\Program Files\Siemens\NX2007\UGII\ugii_env.dat,在最下方增加两行:

UGII_PYTHON_LIBRARY_DIR="E:\XXX\Project_UG\Python38"
UGII_PYTHONPATH="E:\XXX\Project_UG\Python38;E:\XXX\Project_UG\Python38\DLLs;E:\XXX\Project_UG\Python38\Lib;E:\XXX\Project_UG\Python38\Lib\site-packages;E:\XXX\Project_UG\Python38\libs;C:\Program Files\Siemens\NX2007\NXBIN\python"

为了验证配置是否修改成功,可以新建一个py文件:

import NXOpen

session=NXOpen.Session.GetSession()
ug=session.ListingWindow
ug.Open()
ug.WriteLine('Hello World')

打开UG,使用快捷键Alt + F8, 选择上面创建的文件,运行,结果如下:
在这里插入图片描述
说明配置修改成功。

二、利用脚本自动更新零件

创建一个零件并导出其表达式,如下:
在这里插入图片描述
更新零件的脚本 model_update.py :

import math
import NXOpen
import NXOpen.Features
import NXOpen.MenuBar
import NXOpen.UserDefinedObjects
def main() : 

    theSession  = NXOpen.Session.GetSession()
    # ----------------------------------------------
    #   菜单:文件(F)->打开(O)...
    # ----------------------------------------------
    basePart1, partLoadStatus1 = theSession.Parts.OpenActiveDisplay("E:\\XXX\\Project_UG\\XXX.prt", NXOpen.DisplayPartOption.AllowAdditional)
    
    workPart = theSession.Parts.Work
    displayPart = theSession.Parts.Display
    partLoadStatus1.Dispose()
    theSession.ApplicationSwitchImmediate("UG_APP_MODELING")
    
    # ----------------------------------------------
    #   菜单:工具(T)->导入和导出表达式(P)
    # ----------------------------------------------
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "开始")
    
    baseDataImportExportBuilder1 = workPart.Features.VehicleDesignCollection.CreateBaseDataImportExportBuilder()
    
    theSession.SetUndoMarkName(markId1, "导入和导出表达式 对话框")
    
    baseDataImportExportBuilder1.SpreadSheetFileName = "E:\\XXX\\Project_UG\\XXX.xlsx"
    
    baseDataImportExportBuilder1.OverrideExistingExpressions = True
    
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "导入和导出表达式")
    
    theSession.DeleteUndoMark(markId2, None)
    
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "导入和导出表达式")
    
    nXObject1 = baseDataImportExportBuilder1.Commit()
    
    theSession.DeleteUndoMark(markId3, None)
    
    theSession.SetUndoMarkName(markId1, "导入和导出表达式")
    
    baseDataImportExportBuilder1.Destroy()
    
    # ----------------------------------------------
    #   菜单:文件(F)->保存(S)
    # ----------------------------------------------
    partSaveStatus1 = workPart.Save(NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue)
    
    partSaveStatus1.Dispose()
    # ----------------------------------------------
    #   菜单:文件(F)->另存为(A)...
    # ----------------------------------------------
    partSaveStatus2 = workPart.SaveAs("E:\\XXX\\Project_UG\\model\\XXX.catpart")
    
    partSaveStatus2.Dispose()
    # ----------------------------------------------
    #   菜单:工具(T)->操作记录(J)->停止录制(S)
    # ----------------------------------------------
    
if __name__ == '__main__':
    main()

通过命令行来执行更新零件的命令:

"C:\Program Files\Siemens\NX2007\NXBIN\run_journal.exe" E:\XXX\Project_UG\modelling_update.py
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值