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

c4d的重命名工具(支持模型和材质) 及 python窗口定义

不是我牛逼,是豆包牛逼!

一个简化版的窗口

import c4d
from c4d import guiclass MyDialog(gui.GeDialog):def __init__(self):super().__init__()self.SetTitle("My Dialog")def CreateLayout(self):# 设置对话框布局return Truemy_dialog = MyDialog()
my_dialog.Open(c4d.DLG_TYPE_ASYNC, xpos=100, ypos=100, defaultw=300, defaulth=200)

进化了的重命名工具

保存为py文件单独调用会运行速度更快

 使用方法:扩展菜单,用户脚本,运行脚本

import c4d
from c4d import guiclass MyDialog(gui.GeDialog):def __init__(self):self.char_input = ""self.num_input = 0gui.GeDialog.__init__(self)def CreateLayout(self):self.SetTitle("rename")self.AddStaticText(2000, c4d.BFH_CENTER, name="阿拉丁的重命名工具")# 创建行布局用于放置“命名和位数”相关的元素self.GroupBegin(1004, c4d.BFH_LEFT | c4d.BFV_TOP, cols=6, rows=1)self.GroupBorderSpace(10, 10, 10, 10)self.AddStaticText(2000, c4d.BFH_LEFT, name="命名")self.AddEditText(1000, c4d.BFH_LEFT, 120, 15)self.AddStaticText(2001, c4d.BFH_LEFT, name="位数")self.AddEditNumberArrows(1001, c4d.BFH_LEFT, 100, 15)self.AddButton(1002, c4d.BFH_LEFT, 100, 15, "重命名物体")self.AddButton(1003, c4d.BFH_LEFT, 100, 15, "重命名材质")self.GroupEnd()# 创建行布局用于放置“查找和替换”相关的元素find_replace_row = self.GroupBegin(1005, c4d.BFH_LEFT | c4d.BFV_TOP, cols=5, rows=1)self.GroupBorderSpace(10, 10, 10, 10)self.AddStaticText(2002, c4d.BFH_LEFT, name="查找文本")self.find_field = self.AddEditText(1007, c4d.BFH_LEFT, 120, 15)self.AddStaticText(2003, c4d.BFH_LEFT, name="替换文本")self.replace_field = self.AddEditText(1008, c4d.BFH_LEFT, 120, 15)self.AddButton(1006, c4d.BFH_LEFT, 100, 15, "查找替换")self.GroupEnd()# c4d.BFH_LEFT 实际像素左对齐 #c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT 上下充满return Truedef Command(self, id, msg):if id == 1002:self.char_input = self.GetString(1000)self.num_input = self.GetInt32(1001)self.rename()elif id == 1003:self.char_input = self.GetString(1000)self.num_input = self.GetInt32(1001)self.renameMaterials()elif id == 1006:self.find_replace()return Truedef rename(self):selection = doc.GetSelection()i = 1for obj in selection:obj.SetName(f"{self.char_input}_{i:0{self.num_input}}")i += 1c4d.EventAdd()        def renameMaterials(self):materials = doc.GetMaterials()i = 1for mat in materials:mat.SetName (f"{self.char_input}_{i:0{self.num_input}}")i += 1c4d.EventAdd()def find_replace(self):self.find_text = self.GetString(1007)self.replace_text = self.GetString(1008)selection = doc.GetSelection()if not selection:c4d.gui.MessageDialog("没有选中任何对象。")returnnames = [obj.GetName() for obj in selection]for i, obj in enumerate(selection):new_name = names[i].replace(self.find_text, self.replace_text)obj.SetName(new_name)c4d.EventAdd()if __name__ == '__main__':dialog = MyDialog()dialog.Open(c4d.DLG_TYPE_ASYNC, xpos=100, ypos=100, defaultw=200, defaulth=200)def main():# 如果这里有一个独立的 main 函数定义,可以在这里进行修改或补充pass

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)
  • [数据集][目标检测]智慧交通铁路异物入侵检测数据集VOC+YOLO格式802张7类别
  • [网络][CISCO]Cisco-PIX配置详解
  • 创建Django 项目
  • 【python计算机视觉编程——10.OpenCV】
  • 图新地球-将地图上大量的地标点批量输出坐标到csv文件【kml转excel】
  • Linux驱动开发-字符设备驱动开发
  • 如何在本地计算机中打开远程服务器的Jupyter notebook
  • leetcode hot100刷题【持续更新】
  • 深度挖掘| 如何高效实现Cloudera 安装之基础环境搭建
  • 学习贵在善假于物
  • LCR 024
  • 【android10】【binder】【2.servicemanager启动——全源码分析】
  • 多线程拷贝的基本原理
  • C++《类和对象》(下)
  • chrome扩展demo1-小时钟
  • Codepen 每日精选(2018-3-25)
  • C语言笔记(第一章:C语言编程)
  • echarts的各种常用效果展示
  • ES6核心特性
  • ES6系统学习----从Apollo Client看解构赋值
  • Git同步原始仓库到Fork仓库中
  • idea + plantuml 画流程图
  • 编写符合Python风格的对象
  • 对JS继承的一点思考
  • 浮现式设计
  • 技术:超级实用的电脑小技巧
  • 开源地图数据可视化库——mapnik
  • 蓝海存储开关机注意事项总结
  • 聊聊redis的数据结构的应用
  • 手写一个CommonJS打包工具(一)
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 函数计算新功能-----支持C#函数
  • 交换综合实验一
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (12)目标检测_SSD基于pytorch搭建代码
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (七)Activiti-modeler中文支持
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (已解决)什么是vue导航守卫
  • (转载)Linux 多线程条件变量同步
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net中生成excel后调整宽度
  • .net中我喜欢的两种验证码
  • .net专家(张羿专栏)
  • /boot 内存空间不够
  • [20170713] 无法访问SQL Server