这里是引用


// Copyright (C) 2000-2001 Michael Bazhutkin - Copyright (C) 2000 studio Klassika
// www.geocites.com/bazhutkin
// bazhutkin@mail.ru
//
//  Rivet (button) 1.0
//  Script File
//  MODIFY THIS AT YOUR OWN RISK
//
//  Creation Date:  April 13, 2001
//
//
//  Description:
//  Use "Rivet" to constrain locator to polygon or NURBS surfaces
//  Select two edges on polygon object
//  or select one point on NURBS surface and call rivet
//  Parent your rivets and buttons to this locatorglobal proc string rivet ( )
{string $nameObject;
string $namePOSI;string $parts[];
string $list[] = `filterExpand -sm 32`;
int $size = size($list);
if ($size > 0)
{if ($size != 2){  error("No two edges selected");return "";}tokenize($list[0],".",$parts);$nameObject = $parts[0];tokenize($list[0],"[]",$parts);float $e1 = $parts[1];tokenize($list[1],"[]",$parts);float $e2 = $parts[1];string $nameCFME1 = `createNode curveFromMeshEdge -n "rivetCurveFromMeshEdge1"`;setAttr ".ihi" 1;setAttr ".ei[0]"  $e1;string $nameCFME2 = `createNode curveFromMeshEdge -n "rivetCurveFromMeshEdge2"`;setAttr ".ihi" 1;setAttr ".ei[0]"  $e2;string $nameLoft = `createNode loft -n "rivetLoft1"`;setAttr -s 2 ".ic";setAttr ".u" yes;setAttr ".rsn" yes;$namePOSI = `createNode pointOnSurfaceInfo -n "rivetPointOnSurfaceInfo1"`;setAttr ".turnOnPercentage" 1;setAttr ".parameterU" 0.5;setAttr ".parameterV" 0.5;connectAttr -f ($nameLoft + ".os") ($namePOSI + ".is");connectAttr ($nameCFME1 + ".oc") ($nameLoft + ".ic[0]");connectAttr ($nameCFME2 + ".oc") ($nameLoft + ".ic[1]");connectAttr ($nameObject + ".w") ($nameCFME1 + ".im");connectAttr ($nameObject + ".w") ($nameCFME2 + ".im");
}
else
{   $list = `filterExpand -sm 41`;$size = size($list);if ($size > 0){if ($size != 1){   error("No one point selected");return "";}tokenize($list[0],".",$parts);$nameObject = $parts[0];tokenize($list[0],"[]",$parts);float $u = $parts[1];float $v = $parts[2];$namePOSI = `createNode pointOnSurfaceInfo -n "rivetPointOnSurfaceInfo1"`;setAttr ".turnOnPercentage" 0;setAttr ".parameterU" $u;setAttr ".parameterV" $v;connectAttr -f ($nameObject + ".ws") ($namePOSI + ".is");}else{  error("No edges or point selected");return "";}
}string $nameLocator = `createNode transform -n "rivet1"`;
createNode locator -n ($nameLocator + "Shape") -p $nameLocator;string $nameAC = `createNode aimConstraint -p $nameLocator -n ($nameLocator + "_rivetAimConstraint1")`;setAttr ".tg[0].tw" 1;setAttr ".a" -type "double3" 0 1 0;setAttr ".u" -type "double3" 0 0 1;setAttr -k off ".v";setAttr -k off ".tx";setAttr -k off ".ty";setAttr -k off ".tz";setAttr -k off ".rx";setAttr -k off ".ry";setAttr -k off ".rz";setAttr -k off ".sx";setAttr -k off ".sy";setAttr -k off ".sz";connectAttr ($namePOSI + ".position") ($nameLocator + ".translate");
connectAttr ($namePOSI + ".n") ($nameAC + ".tg[0].tt");
connectAttr ($namePOSI + ".tv") ($nameAC + ".wu");
connectAttr ($nameAC + ".crx") ($nameLocator + ".rx");
connectAttr ($nameAC + ".cry") ($nameLocator + ".ry");
connectAttr ($nameAC + ".crz") ($nameLocator + ".rz");select -r $nameLocator;
return ($nameLocator);}rivet;

选中两根线直接运行即可

rivet(... )相关推荐

  1. python 替换字符串的方法replace()、正则re.sub()

    一.replace()函数 1用字符串本身的replace方法: a = 'hello word' b = a.replace('word','python') print b 1 2 3 二.re. ...

  2. Scrapy 学习笔记(-)

    Scrapy Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所 ...

  3. 67)vector的begin() end() 和 front() back()的区别 rbegin() rend()

    1) ·············· 2)`````````v1.begin() 和v1.end()  是作为迭代器v1的 第一个位置  和 最后一个元素的下一个位置. `````````````v1. ...

  4. 转:【CSS/JS学习】如何实现单行/多行文本溢出的省略(...)--老司机绕过坑道的正确姿势...

    本文来源:http://www.cnblogs.com/penghuwan/p/6682303.html 引言: 写前端UI的朋友们也许都遇到过这样的问题:我们需要实现这样一个需求,在一个父级元素中隐 ...

  5. Python中的对象,类,super()函数

    对象:(1)外观的特征 (2)正在做的事情 比如:那个穿蓝色衣服的正在打球的帅哥  类:属性(静态的变量)+方法(函数)是对对象的近似 类名约定是以大写字母开始的 类的出现: 是为了使得对象可以进行大 ...

  6. Python中的super()函数

    多路继承的问题 描述: 解决这样的问题Python中可以使用super() super()函数有点: (1)在父类中可以直接的调用未绑定的方法 (2)在确保所有的父类的构造方法都使用了super()函 ...

  7. 函数assert()详解

    函数assert()详解: 断言assert是一个宏,该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式.预处理器产生测试该断言的代码,如果断言不为真, ...

  8. 若显示器接口电路中的刷新存储器容量为1MB,当采用800*600的分辨率模式时,每个像素最多可以有多少()种颜色

    若显示器接口电路中的刷新存储器容量为1MB,当采用800*600的分辨率模式时,每个像素最多可以有多少()种颜色. 显示内存 >= 分辨率与彩色位数/8的乘积 1MB=800*600*T: T= ...

  9. 下面算法中,不属于公开密钥加密算法的是()。D

    下面算法中,不属于公开密钥加密算法的是().D A.ECC B.DSA C.RSA D.DES 常用的公钥加密算法有RSA.DSA.ElGamal和ECC. 常用的对称加密算法有DES.3DES.ID ...

最新文章

  1. 至强® 平台配备先进遥测技术让您的数据中心更智能
  2. day042前端之HTML
  3. 软件测试质量过程检测文档_如何编写实际上有效的质量检查文档
  4. 渗透知识-常用DOS命令windows
  5. UVA11292杀怪
  6. 用jedis访问Redis进行对象存取示例
  7. qt中new与delete使用示例
  8. 第5章 Python 数字图像处理(DIP) - 图像复原与重建14 - 逆滤波
  9. 三羊献瑞c语言编程入门,蓝桥杯-三羊献瑞,
  10. vue 入门环境搭建
  11. ios 消息服务器,关于IOS APNS推送消息(iphone端+服务端)
  12. 2018杭州电子科技大学计算机研究生复试笔试编程题第三题
  13. One Web MKey
  14. 太阳山采风(部分稿件)
  15. 【免费域名】freenom免费申请域名步骤
  16. 路由器动态ip获取不到的处理办法
  17. 电子招标采购系统源码之什么是电子招投标系统?
  18. 华为认证三个等级区别在哪?
  19. msf后渗透之文件交互指令、上传下载文件、屏幕截图、键盘记录、创建账户、音频录像和提权(上)
  20. 在线博客系统——评论列表

热门文章

  1. vue插槽面试题_常见的vue面试题
  2. PowerMILL 2016汽车零件模具编程加工视频教程
  3. TVS管的原理与应用
  4. (Habitat) A Platform for Embodied AI Research --Facebook开源室内导航仿真平台 的简介和安装
  5. Android Studio——简单视频播放器
  6. python面试设计模式问题_聊聊 Python 面试最常被问到的几种设计模式(上)
  7. thinkphp6下使用phpqrcode生成二维码
  8. Java学习路线-19:日期操作类Date、SimpleDateFormat
  9. Android pid uid 机制分析Permission Denial的错误
  10. 第一范式1NF、第二范式2NF、第三范式3NF详解