当前位置: 首页 > news >正文

C4D.python的标签代码,标签名称,常量名互查工具

可以通过print(f"常量:{c4d.RIGID_BODY_DYNAMIC}")查找到标签代码

在 Cinema 4D 的 Python API 中,通常不能直接通过整数类型的标签代码(如 11003)反查对应的常量(如 c4d.RIGID_BODY_DYNAMIC)。

import c4d
from c4d import gui# 定义常量用于 UI 元素的 ID
VALUE_INPUT_ID = 1001
LABEL_INPUT_ID = 1002
CONSTANT_NAME_INPUT_ID = 1003
SEARCH_BY_VALUE_BUTTON_ID = 1004
SEARCH_BY_LABEL_BUTTON_ID = 1005
SEARCH_BY_CONSTANT_NAME_BUTTON_ID = 1006class SearchConstantDialog(gui.GeDialog):def CreateLayout(self):self.SetTitle("常量搜索工具")self.AddStaticText(101, c4d.BFH_CENTER, name="标签代码:")self.AddEditText(VALUE_INPUT_ID, c4d.BFH_CENTER, 200, 15)self.AddButton(SEARCH_BY_VALUE_BUTTON_ID, c4d.BFH_CENTER, 200, 15, name="通过代码找常量名")self.AddStaticText(102, c4d.BFH_CENTER, name="标签名称:")self.AddEditText(LABEL_INPUT_ID, c4d.BFH_CENTER, 200, 15)self.AddButton(SEARCH_BY_LABEL_BUTTON_ID, c4d.BFH_CENTER, 200, 15, name="通过标签找常量名")self.AddStaticText(103, c4d.BFH_CENTER, name="常量名称:(去掉c4d.)")self.AddEditText(CONSTANT_NAME_INPUT_ID, c4d.BFH_CENTER, 200, 15)self.AddButton(SEARCH_BY_CONSTANT_NAME_BUTTON_ID, c4d.BFH_CENTER, 200, 15, name="通过常量找代码")return Truedef Command(self, id, msg):if id == SEARCH_BY_VALUE_BUTTON_ID:self.search_by_value()elif id == SEARCH_BY_LABEL_BUTTON_ID:self.search_by_label()elif id == SEARCH_BY_CONSTANT_NAME_BUTTON_ID:self.search_by_constant_name()return Truedef search_by_value(self):#通过标签代码获取常量名>value_to_find = int(self.GetString(VALUE_INPUT_ID))constant_name = find_constant_by_value(value_to_find)if constant_name:print(f"对应的常量为:c4d.{constant_name}")else:print("未找到对应的常量。")def search_by_label(self):#通过标签名获取常量名》label_name = self.GetString(LABEL_INPUT_ID)constant_name = find_constant_by_label_name(label_name)if constant_name:print(f"对应的常量为:c4d.{constant_name}")else:print("未找到对应的常量。")def search_by_constant_name(self):#通过常量名找标签代码constant_name_input = self.GetString(CONSTANT_NAME_INPUT_ID)try:constant_value = getattr(c4d, constant_name_input)#constant_value = eval("c4d." + constant_name_input)#这个也可以print(f"对应的标签代码为:{constant_value}")except AttributeError:print("未找到对应的常量。")def find_constant_by_value(value):#通过标签代码获取常量名>for attr_name in dir(c4d):attr_value = getattr(c4d, attr_name)if attr_value == value:return attr_namereturn Nonedef find_constant_by_label_name(label_name):#通过标签名获取常量名》for attr_name in dir(c4d):attr_value = getattr(c4d, attr_name)if isinstance(attr_value, int):try:tag_name = c4d.GetTagName(attr_value)if tag_name == label_name:return attr_nameexcept:passreturn Noneif __name__ == '__main__':dialog = SearchConstantDialog()dialog.Open(c4d.DLG_TYPE_ASYNC, xpos=100, ypos=100, defaultw=250, defaulth=100)


http://www.mrgr.cn/news/57043.html

相关文章:

  • 知识点框架笔记3.0笔记
  • 2024软件测试面试秘籍(含答案+文档)
  • Git第二章
  • 某政府所属酒店流程规范化管理咨询项目
  • Dockerfile 详解
  • linux—基础命令及相关知识
  • print_hex_dump调试内核,嘎嘎香
  • c++工程,各个模块间的通信机制设计
  • 进程控制:地址空间、fork与进程异常结束
  • Python日志配置
  • 技术总结(十一)
  • Rust中的Sync特征:确保多线程间安全共享数据
  • 几何算法系列:空间实体体积计算公式推导
  • 不同分辨率的大致带宽
  • 树莓集团:人工智能赋能,共创智慧未来
  • sql数据库的命令行操作(DDL修改表)
  • 餐饮点餐系统小程序源码
  • LeetCode-3185 构成整天的下标对数目Ⅱ
  • 利士策分享,给成功抛个媚眼,学习能否成为“丘比特”?
  • 解除123云盘1G下载限制油猴脚本方法
  • 冒泡,选择,插入,快速,归并排序(JavaScript)代码实现
  • 【面试题】什么是SpringBoot以及SpringBoot的优缺点
  • TitanIDE:解锁编程教学新范式
  • 软考科目怎么选?软考科目选哪个好?
  • Cilium Network Policy
  • 【Excel】函数各类公式总结