# NX Version:NX 2412 # Email:809262979@qq.com # python .py created by JackLee # NX run .py alt+F8 import NXOpen import NXOpen.CAM import NXOpen.UF as UF import inspect import io from contextlib import redirect_stdout # 获取当前会话 session = NXOpen.Session.GetSession() # 打开列表窗口用于输出信息 lw = session.ListingWindow lw.Open() # 定义要检查的模块列表,具体要检查的模块自行设定,不建议设置太多模块同时导出,会卡死你的! modules = [NXOpen] def print_with_indent(indent_level): indent = " " * indent_level return indent def main(): for module in modules: lw.WriteLine(f"module name:{module.__name__}") classes = inspect.getmembers(module) for cls_name,cls in classes: # 过滤掉以双下划线开头的成员 if not cls_name.startswith('__') and not cls_name.startswith('_'): lw.WriteLine(f"{print_with_indent(1)}class:{module.__name__}.{cls_name}") # 获取类的所有成员 members = inspect.getmembers(cls,inspect.isclass) for member_name, member in members: if not member_name.startswith('__'): lw.WriteLine(f"{print_with_indent(4)}member:{member_name}") attrs=inspect.getmembers(member) for attr_name,attr in attrs: if not attr_name.startswith('__'): lw.WriteLine(f"{print_with_indent(6)}attr:{attr_name}") funcs = inspect.getmembers(cls) for func_name, func in funcs: _type=type(func).__name__ # 过滤掉以双下划线开头的成员 if not func_name.startswith('__') and not func_name.startswith('_'): #过滤掉影响阅读的成员 if not (type(func).__name__).startswith('method_descriptor') \ and not (type(func).__name__).startswith('getset_descriptor') \ and not (type(func).__name__).startswith('builtin_function_or_method') \ and not (type(func).__name__).startswith('type'): _type=type(func).__name__ lw.WriteLine(f"{print_with_indent(4)}func:{func_name}") if __name__ == '__main__': main()