#lockTemple

import  maya.cmds  as  mc
import string
if  mc.window('LockWin',ex=1)==1:
    mc.deleteUI('LockWin')
mc.window('LockWin',t="lockTemple",wh=(300,100),menuBar=True)
mc.menu('about..')
mc.menuItem('author : 栋栋')
mc.menuItem('qq : 27971533')
mc.menuItem(d=1)
mc.menuItem('功能:摆模板时候锁定子层级,移动父层级')

mc.columnLayout(adj=1)
mc.button('LOCK_select',l="LOCK_select",bgc=(0.8,0.2,0.2),c='LK_select()')
mc.button('unLOCK_select',l="unLOCK_select",bgc=(0.8,.8,0.2),c='UnLK_select()')
mc.button('unLK_All',l="unLOCK_All",bgc=(0.2,0.2,0.2),c='unLK_all()')
mc.showWindow('LockWin')

def LK_select():
    myNeedLock=mc.ls(sl=True)
    myFinalAttr=[]
    myChannel=['translateX','translateY','translateZ','rotateX','rotateY','rotateZ']
    for  a  in  range(len(myNeedLock)):
        myNewLOC=mc.spaceLocator( p=( 0, 0 ,0),n=myNeedLock[a]+"_LOCKconstraint")    
        myNeedHaveAttr=mc.listAttr(myNeedLock[a],k=1)
        for  b  in  myNeedHaveAttr:
            if b  in   myChannel  and  mc.getAttr(myNeedLock[a]+'.'+b,l=1)==0   and  mc.getAttr(myNeedLock[a]+'.'+b,k=1)==1:
                myFinalAttr.append(b)
        skipTranslate=[]
        skipRotate=[]
        if  myFinalAttr!=[]:
            for  c  in  myChannel:
                if  c  not in   myFinalAttr:
                    if "translate"  in  c:
                        if  c[-1]  not in skipTranslate:
                            skipTranslate.append(c[-1])
                        
                    elif "rotate"  in  c:
                        if  c[-1]  not in skipRotate:
                            skipRotate.append(c[-1])
                            
        skipTranslate=  [item.lower() for item in skipTranslate]    
        skipRotate=  [item.lower() for item in skipRotate]       
                                       
        mc.parentConstraint(myNewLOC[0],myNeedLock[a],mo=1,skipTranslate=skipTranslate,skipRotate=skipRotate,w=1)

def UnLK_select():
    needUnLock=mc.ls(sl=True)
    for  a  in   needUnLock:
        myCons=mc.listRelatives(a,type='parentConstraint')
        if myCons:
            mc.delete(myCons[0])
        if  mc.objExists(a+'_LOCKconstraint'):
            mc.delete(a+'_LOCKconstraint')

def unLK_all():

myCNS_LOC=mc.select('*_LOCKconstraint')
    allLoc=mc.ls(sl=True)
    for  a  in  allLoc:
    
        myCons=mc.listConnections(a,s=0,d=1)
        if  myCons:
            mc.delete(myCons[0])
            mc.delete(a)

欢迎交流  VX:27971533

maya模板lock工具的更多相关文章

  1. flask模板的基本用法(定界符、模板语法、渲染模板),模板辅助工具(上下文、全局对象、过滤器、测试器、模板环境对象)

    flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTM ...

  2. A Package Manager for Xcode -Xcode模板管理工具Alcatraz使用

    一款功能强大的Xcode模板管理工具 一:安装之后的效果图 二:安装 1:先关闭 xcode 2:  打开 terminal 3:  复制粘贴运行如下代码 mkdir -p ~/Library/App ...

  3. WPF - 模板查看工具:Show Me The Template及如何查看第三方主题

    原文:WPF - 模板查看工具:Show Me The Template及如何查看第三方主题 在学习WPF的模板(DataTemplate.ItemsPanelTemplate.ControlTemp ...

  4. 一款批量修改AE模板的工具

    一.需求分析 对于视频后期剪辑及相关从业人员来说,AE(After Effects)模板效果是一个不错的开始点.在模板效果的基础上,可以很快的做出各种炫酷的后期效果.但是在网上下载的模板工程中,往往包 ...

  5. java下载Excel模板(工具类)

    一次文件下载记录 一次不成熟的文件下载操作记录,希望能对需要的人有所帮助. 1.前端代码 $("#downloadModel").click(function(){ var mod ...

  6. 虚拟化技术之kvm镜像模板制作工具virt-sysprep

    virt-sysprep这个工具来自libguest-tools这个工具包,它能够把kvm虚拟机对应的磁盘文件做成一个模板,后续我们启动虚拟机就可以基于这个镜像模板启动:什么是镜像模板呢?所谓模板就是 ...

  7. zend studio快捷模板 开发工具之zend studio一些配置

    以下是以Zend Studio 10.0.0版本为基础的: 模板的配置(template): [菜单]->[Window]->[preferences]->[PHP]->[Ed ...

  8. [原创软件]Maya语言切换工具

    软件主要功能: 切换Maya语言 软件界面截图: 开发环境及语言: c# .NET Framework 4.0 Visual Studio 2015 更新日志: v1.0(2016.7.20) 发布初 ...

  9. ICPC模板排版工具

    感谢参考:https://www.cnblogs.com/palayutm/p/6444833.html 额外安装texlive, ubuntu环境提供参考: 1.下载镜像包 https://mirr ...

随机推荐

  1. JAVA中时间格式(SimpleDateFormat)和数字格式(DecimalFormat)转换详解(转)

    时间格式转换SimpleDateFormat: //定义日期的格式 SimpleDateFormat format =new SimpleDateFormat("yyMMdd"); ...

  2. js 回调

    function getTittleLableData(callback) { $.ajax({ type : 'POST', url : ctx + '/feeInf/getDataValue', ...

  3. ORACLE数据库管理员的职责

    ORACLE数据库管理员的职责 一.概述 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情 ...

  4. BluePrism初尝2

    在接近三周的自学中,初步体验到了RPA的甜头. 在对BP这个工具慢慢的深入接触中,从0 到1的探索式学习,从最开始的一个个的小功能模块的用途,每一个的属性的功能,到现在自己能初步尝试组织一些简单的流程 ...

  5. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165326

    kali的安装及配置 目录 下载 安装 相关配置 一.下载 官方下载网址https://www.kali.org/downloads/ 选择64位的.iso文件下载 返回 二.安装kali 打开VMw ...

  6. Vim+Taglist+AutoComplPop之代码目录分栏信息和自动补全提示(Ubuntu环境)

    一步: 首先在Ubuntu环境中安装ctags:  sudo apt-get install ctags 第二部:       安装Taglist-------------Taglist是vim的一个 ...

  7. SqlServer 游标逐行更新数据,根据上一行的数据来更新当前行

    工作中用到的记录一下,游标的详细定义及说明请百度 --游标格式化数据 DECLARE cursor_jxsmb CURSOR FOR --定义一个游标 SELECT F0 FROM dbo.JXSMB ...

  8. django学习系列——python和php对比

    python 和 php 我都是使用过,这里不想做一个非常理性的分析,只是根据自己的经验谈一下感想. 在web开发方面,无疑 php 更甚一筹. 从某种角度来说,php 就是专门为 web 定制的语言 ...

  9. SQA计划与系统测试

    (一)目的 本计划的目的是定义我们该小组所做的“爱上长大”项目的SQA任务和职责,在项目过程中应遵循的流程.规范和约定等,以确保软件质量得到维持. (二)范围 本计划应用于“爱上长大”项目开发的整个生 ...

  10. Fescar: Fast & Easy Commit And Rollback

    Fescar is an easy-to-use, high-performance, java based, open source distributed transaction solution ...