QQ登录 微博登录 帐号登录 我已阅读并接受《用户协议》
QQ、微博及系统账号均为独立账号,账号信息不互通
欢迎来到C4D素材网
赞助会员下载VIP模型
立即加入
您的VIP会员开通成功!
您的VIP会员开通成功!
今日下载数已用完
赞助会员
感谢您留下宝贵的建议
下载提示!请输入验证码验证哦!
看不清,重新获取
提交验证码
首页 > 插件下载 > 常规辅助 >

C4D不同版本之间切换快捷键设置插件ShortcutTool 1.0

jexC4D模型
如果你的电脑安装了不止一个版本的c4d,在不同的版本使用中,用惯了一套快捷键,想切换到另外c4d版本上面,还需要手动设置一遍,但是你如果使用ShortcutTool就可以轻松实现不同版本间的快捷键切换设置。jexC4D模型
实现这个插件的逻辑比较简单。读取C盘的MAXON文件夹内的prefs文件即可。里面存放了你在电脑上安装的C4D所有版本的缓存信息,其中就包含了快捷键的存储。jexC4D模型
jexC4D模型
获取各版本的快捷键信息  jexC4D模型
快捷键信息一般存储为res格式,里面包含了大约400多项快捷键配置。我们通过搜索这个res格式,并保存它的文件名和路径。jexC4D模型
创建一个GUI类继承gui.GeDialog并初始化两个属性用于存储信息。jexC4D模型
jexC4D模型
class ShortcutTool(gui.GeDialog):jexC4D模型
    ID_STATIC_TEXT1 = 10000jexC4D模型
    ID_COMBOBOX1 = 10001jexC4D模型
    ID_SAVE = 20000jexC4D模型
    ID_INPUT = 30000jexC4D模型
jexC4D模型
    def __init__(self):jexC4D模型
        self.dict = self.init_value() if self.init_value() else {}jexC4D模型
        self.list = []jexC4D模型
jexC4D模型
遍历文件夹寻找res,这里没有粗暴的walk所有文件,因为在MAXON内还有其他文件也是res格式。为了避免把无关的信息过滤,把路径更明确之后再walk。jexC4D模型
jexC4D模型
    def init_value(self):jexC4D模型
        dct = {}jexC4D模型
        file = c4d.storage.GetUserSiteSpecificPath()jexC4D模型
        if file.split('\\')[5].upper() == "MAXON":jexC4D模型
            fn = os.path.join(*file.split('\\')[:6])jexC4D模型
            fn_dirs = os.listdir(fn)jexC4D模型
            for fn_dir in fn_dirs:jexC4D模型
                if os.path.isdir(os.path.join(fn, fn_dir)) and 'Cinema 4D' in fn_dir:jexC4D模型
                    sub_files = os.listdir(os.path.join(fn, fn_dir))jexC4D模型
                    for sub_file in sub_files:jexC4D模型
                        sub_fn = os.path.join(fn, fn_dir, sub_file)jexC4D模型
                        if 'prefs' in sub_file and os.path.isdir(sub_fn):jexC4D模型
                            key_name = fn_dir.split('_')[0]jexC4D模型
                            if key_name not in dct.keys():jexC4D模型
                                dct[key_name] = []jexC4D模型
                            for dirpath, dirnames, filenames in os.walk(sub_fn):jexC4D模型
                                for filename in filenames:jexC4D模型
                                    if '.res' in filename or 'shortcuttable' in filename:jexC4D模型
                                        dct[key_name].append([filename, os.path.join(dirpath, filename)])jexC4D模型
                            for dirname in dirnames:jexC4D模型
                                if 'shortcuts' in dirname:jexC4D模型
                                    files = os.listdir(os.path.join(dirpath, dirname))jexC4D模型
                                    for file in files:jexC4D模型
                                        if '.res' in file or 'shortcuttable' in file:jexC4D模型
                                            dct[key_name].append([file, os.path.join(dirpath, dirname, file)])jexC4D模型
            return dctjexC4D模型
        else:jexC4D模型
            return FalsejexC4D模型
jexC4D模型
创建GUI  jexC4D模型
根据得到的res文件数量,创建GUI和下拉框。为GUI设置菜单和ComboBox。jexC4D模型
读取self.dict添加combobox的选项。jexC4D模型
jexC4D模型
    def CreateLayout(self):jexC4D模型
        self.SetTitle("ShortcutTool")jexC4D模型
        self.MenuSubBegin('File')jexC4D模型
        self.MenuAddString(self.ID_SAVE,'Save As')jexC4D模型
        self.MenuAddString(self.ID_INPUT, 'Load new project..')jexC4D模型
        self.MenuFinished()jexC4D模型
        if self.GroupBegin(0,c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT,cols=1, rows=3):jexC4D模型
            self.GroupBorderSpace(5,5,5,5)jexC4D模型
            self.AddStaticText(self.ID_STATIC_TEXT1, c4d.BFH_LEFT, name="Load Project:")jexC4D模型
            self.AddComboBox(self.ID_COMBOBOX1, c4d.BFH_SCALEFIT | c4d.BFV_SCALEFIT)jexC4D模型
            n = 1jexC4D模型
            if self.dict:jexC4D模型
                for i,(key,values) in enumerate(self.dict.items()):jexC4D模型
                    for j,value in enumerate(values):jexC4D模型
                        self.AddChild(self.ID_COMBOBOX1, n, key + " :: " + value[0])jexC4D模型
                        self.list.append(value[1])jexC4D模型
                        n += 1jexC4D模型
            self.AddDlgGroup(c4d.DLG_OK | c4d.DLG_CANCEL)jexC4D模型
            self.GroupEnd()jexC4D模型
        return TruejexC4D模型
jexC4D模型
绑定事件响应  jexC4D模型
为按钮设置响应函数。当点击确定按钮,导入快捷键方案。并提示安装完成,关闭GUI窗口。当点击取消按钮,关闭GUI窗口。jexC4D模型
jexC4D模型
def Command(self, m_id, msg):jexC4D模型
        if m_id == c4d.DLG_OK:jexC4D模型
            n_id = self.GetInt32(self.ID_COMBOBOX1)jexC4D模型
            path = self.list[n_id-1]jexC4D模型
            if c4d.gui.LoadShortcutSet(path, False):jexC4D模型
                c4d.gui.MessageDialog("Load successfully!")jexC4D模型
                self.Close()jexC4D模型
            else:jexC4D模型
                c4d.gui.MessageDialog("Fail to load!",type=c4d.GEMB_ICONSTOP)jexC4D模型
jexC4D模型
        if m_id == c4d.DLG_CANCEL:jexC4D模型
            self.Close()jexC4D模型
jexC4D模型
考虑到可能有其他的快捷键配置方案没有被收集,设置了自定义导入。jexC4D模型
jexC4D模型
def Command(self, m_id, msg):jexC4D模型
jexC4D模型
        if m_id == self.ID_SAVE:jexC4D模型
            file = c4d.storage.GetUserSiteSpecificPath()jexC4D模型
            fn = os.path.join(*file.split('\\')[:7])jexC4D模型
            new_fn = os.path.join(fn,'prefs','shortcuts')jexC4D模型
            try:jexC4D模型
                path = c4d.storage.SaveDialog(type=c4d.FILESELECTTYPE_ANYTHING, title='Save Shortcut Project', force_suffix='res', def_path=new_fn)jexC4D模型
                if c4d.gui.SaveShortcutSet(path):jexC4D模型
                    c4d.gui.MessageDialog("Save successfully!")jexC4D模型
                else:jexC4D模型
                    c4d.gui.MessageDialog("Fail to load!", type=c4d.GEMB_ICONSTOP)jexC4D模型
            except TypeError:jexC4D模型
                c4d.gui.MessageDialog("Fail to load!", type=c4d.GEMB_ICONSTOP)jexC4D模型
jexC4D模型
        if m_id == self.ID_INPUT:jexC4D模型
            file = c4d.storage.GetUserSiteSpecificPath()jexC4D模型
            fn = os.path.join(*file.split('\\')[:7])jexC4D模型
            new_fn = os.path.join(fn, 'prefs')jexC4D模型
            path = c4d.storage.LoadDialog(type=c4d.FILESELECTTYPE_ANYTHING, title='Load Shortcut Project', flags=c4d.FILESELECT_LOAD, force_suffix='', def_path=new_fn)jexC4D模型
            if c4d.gui.LoadShortcutSet(path,False):jexC4D模型
                c4d.gui.MessageDialog("Load successfully!")jexC4D模型
                self.Close()jexC4D模型
            else:jexC4D模型
                c4d.gui.MessageDialog("Fail to load!", type=c4d.GEMB_ICONSTOP)jexC4D模型
        return TruejexC4D模型
jexC4D模型
以上,就是本次实现快捷方式切换的插件。jexC4D模型
【脚本安装】 jexC4D模型
1.将ShortcutTool文件夹拷贝C4D安装目录D:\ProgramFiles\MaxonCinema4DR26\plugins下,重新启动C4D(请根据个人安装位置放置jexC4D模型
2.重新打开C4D之后,shift+F12打开【命令管理器】,在搜索框中 输入ShortcutTool。同时设置快捷键。jexC4D模型
3.将ShortcutTool拖入C4D的窗口合适的位置,保存窗口布局方便使用。jexC4D模型
jexC4D模型
【使用步骤】 jexC4D模型
1.点击插件按钮启动。jexC4D模型
2.在下拉菜单中选择要切换的快捷键方案。jexC4D模型
3.如果下拉菜单中没有对应的快捷键方案,可以点击file指定路径加载。jexC4D模型
jexC4D模型
【版本信息】C4DR18及以上。jexC4D模型
【作者信息】西技大神

C4D插件:C4D不同版本之间切换快捷键设置插件ShortcutTool 1.0(快捷键,切换快捷键,设置快捷键,版本切换,C4D插件,ShortcutTool,plugin),版本为ShortcutTool 1.0/c4d r18+,分类属于常规辅助,软件语言为中文,支持PC(Windows) , MAC(Mac OS)系统平台,安装好的插件会出现在CINEMA 4D软件的插件(扩展)菜单下拉位置,附件大小约298.57 KB,下载方式为本地下载。更多不错常规辅助下载,尽在C4D模型-C4D.COM。

立即下载
收藏
187
1
6
  • 提供者:
  • 插件评分:
  • 编号:
    7606
  • 权限:
  • 模点:
    0点
  • 属性:
    常规辅助插件
  • 语言:
    中文
  • 平台:
    PC(Windows) / MAC(Mac OS)
  • 版本:
    ShortcutTool 1.0/c4d r18+
  • 位置:
    插件(扩展)菜单下拉
  • 大小:
    298.57 KB
  • 下载方式:
    本地下载
  • 更新时间:
    2023-09-28 15:03:04
您可能还喜欢其他相关插件