NXOpen 12.0 代理模块

本文详细介绍了如何使用两个Python脚本来生成NXOpen12.0的Python代理模块,包括checkNXOpenInfo.py和genNXOpenAgent.py的使用方法,以及在不同环境下(如Pycharm、Eclipse等)的安装配置步骤。


搜索引擎看过来(NXOpen Python API Pycharm Eclipse Anaconda Spyder 安装 配置 设置 代理)

NXOpen 12.0 Python 代理模块

NXOpen 12.0 代理模块的截图如下,下载地址
NXOpen 12.0 代理模块
实际使用效果如下:
在这里插入图片描述

代理模块的生成方法

需要用2个脚本文件处理:

  1. checkNXOpenInfo.py,此脚本文件需要在NX12中运行(Alt+F11, 菜单–>工具–>操作记录–>编辑–>打开–>运行),在 dataDir 参数指定的目录生成 journal1_xxxx.txt
  2. genNXOpenAgent.py ,此脚本文件在任意python解释器下运行,读取 journal1_xxxx.txt文件,在agent子目录下创建代理文件。

checkNXOpenInfo.py

# -*- coding:UTF-8 -*-
import NXOpen
import sys,os,logging,re
logging.basicConfig(
    level=logging.DEBUG,
    filename=r'c:\temp.py',
    filemode='w',
    format='%(message)s'
)

dataDir = r'E:\win7admin\desktop\NXOpen_examples\develop'

attrs = []
infos = []

def recursivePrint(object, depth=1, maxdepth=5):
    global attrs
    global infos
    chars = '    '*depth
    if depth <= maxdepth:
        for name in dir(object):
            if name.startswith('_'): continue
            try:
                attr = getattr(object, name)
                if attr not in attrs:
                    attrs.append(attr)
                    # logging.info('%s%s  %s' % (chars,name,type(attr)))
                    infos.append('%s%s  %s' % (chars,name,type(attr)))
                    if type(attr) not in (int, float, str, list, tuple, dict, set):
                        if name != 'Null':   # 与上级相同
                            recursivePrint(attr, depth+1)
            except:
                pass
        
def writeNXOpenInfo1():
    """
    探索步骤1:
        help(NXOpen)
    结论1:
        NXOpen 有详细的说明文档
    """
    out = sys.stdout
    with open(os.path.join(dataDir,'journal1_NXOpen.txt'), 'w') as fp:
        sys.stdout = fp
        help(NXOpen)
    for name in dir(NXOpen):
        if name.startswith('_'): continue
        attr = getattr(NXOpen, name)
        if str(type(attr)).split("'")[1] == 'module':
            with open(os.path.join(dataDir,'journal1_%s.txt' % name), 'w') as fp:
                sys.stdout = fp
                help(attr)
        
    sys.stdout = out

def writeNXOpenInfo2():
    """
    探索步骤2:
        dir(NXOpen) 检查所有属性的类型,
        attr = getattr(NXOpen, name)
        type(attr) 均为 <class 'type'>
    结论1:
        所有非_开头的属性均为类,都可以用类代理
    """
    out = sys.stdout
    with open(os.path.join(dataDir,'journal2.txt'), 'w') as fp:
        sys.stdout = fp
        for name in dir(NXOpen):
            if name.startswith('_'): continue
            attr = getattr(NXOpen, name)
            print('**%-60s\t%s\t%s' % (name, type(attr), attr.__doc__))
        
        sys.stdout = out

def writeNXOpenInfo3():
    """
    探索步骤3:
        检查所有属性的属性 _ 开头除外
    结论3:
        类型较多,有重复
    """
    recursivePrint(NXOpen,0,5)
    with open(os.path.join(dataDir,'journal3.txt'), 'w') as fp:
        fp.write('\n'.join(infos))

def main():

    theSession  = NXOpen.Session.GetSession()
    # theUI = NXOpen.UI.GetUI()

    # Insert code here
    workPart = theSession.Parts.Work
    info = theSession.ListingWindow
    
    info.CloseWindow()
    info.Open()
    
    writeNXOpenInfo1()
    # writeNXOpenInfo2()
    # writeNXOpenInfo3()
    # info.WriteLine("%s" % (NXOpen.Session.GetSession.__doc__))

    info.WriteLine("Done!")
    
if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值