59 lines
2.5 KiB
Python
59 lines
2.5 KiB
Python
# 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() |