常用Rhino Script函数
- 格式:doc
- 大小:85.00 KB
- 文档页数:8
01=Introduction to RhinoScript (Marcos and Scripts)An short introduction to RhinoScript假使从字面上来直译,RhinoScript可以翻译为「犀牛脚本」。
RhinoScript是架构在VB(Visual Basic)语言之上的Rhino专属程序语言,大致上又可分做Marco与Script两大部分。
以下简单地说明Marco与Script两者之间的差别。
Marcos = Static (fixed, linear sequence)Scripts = Dynamic (non-linear)‧flow control (skipping and repeating lines)‧variable control (logical and mathematical operations)‧input and output (user interaction)简单地说,在Rhino中的Marcos (可以称做宏)就像是一个口令一个动作的叫Rhino帮我们执行「动作」(actions)。
Marco 的命令行是线性、静态的,意思就是说,如果我们下了一百条指令,Rhino就会从第一条、第二条、第三条、、、这样一路执行到第一百条命令,无法跳跃也无法重复执行某个命令。
相对而言,Scripts则是动态且非线性的。
首先,透过Flow Control我们可以跳过或者重复某些命令行,而Variable Control则可以让我们创造出逻辑与数学的运算,Input and Output (I/O)则是使用者与Rhino之间的互动,使用者可以送进许多种类型的资料 (data),再经过运算之后以许多种数据形态输出。
本文的主要目的在于说明Marcos与Scripts 之间的差别,之后将进一步对Scripts 的语法、功能与运用方式做进一步的说明与提供范例。
转自: 专筑网 Rhino Script 参数建模内容简介得知《Rhino Script 参数建模》即将出版时我十分高兴。
这是Robert McNeel 公司协助推出的一本专业书籍,《Rhino Script 参数建模》的面世一定能帮助全华语地区的Rhino户,特别是广大建筑行业的从业者,甚至是产品设计行业的从业者更加深入地了解和使用该软件。
Rhino于1998年由美国Robert McNeel公司推出,在竞争激烈的三维图形软件市场,其特有的人性化建模特色,使得用户可以迅速掌握和方便运用NURBS 建模工具服务于各种设计业和制造业,从而成为无数3D专业制作人员、产品设计师、建筑设计师必备的协同设计工具。
Rhino也是一款平民化的三维设计软件,因其易学易用,并且可无缝配合后端的自造领域的特点,它在国内的产品设计领域应用非常广泛。
随着近些年,奥运会、世博会等大型活动的成功举办,以及各地地标性建筑与各类新场馆的兴建。
Rhino的自由造型特点也被建筑业迅速地接受,由它提供的方案成为了最主流的解决方案。
因此近几年,我们在中国大陆接到的用户咨询也多以建筑应用为主。
参数化建模方式的引入,不仅会在建筑形态与外观方面带来突破性的变化,更带动了成本管理、设计建造流程等方面的革新,而这些变化和革新很可能是革命性的。
试想一下,在几年以后,当建筑师、设计师普遍具备了更高层次的使用计算机进行辅助设计的能力,通过编程化、参数化的手段,必将催生出新的造型形式和空间关系。
同时,设计工作中大量的重复性调整工作,将通过使用参数化的方式变得高效而轻松,这将会极大推动建筑及设计行业的发展。
因此在看到中央美术学院建筑学院的王文栋先生的作品之后,《Rhino Script 参数建模》的出版就顺理成章了。
编辑推荐《Rhino Script 参数建模》:编程建模是更高层次使用计算机的能力,我们并不缺乏想象力,只是还没有掌握与之匹配的设计技术。
控制复杂性是编程建模的本质,就其本质而言,是使用计算机的能力。
01=Introduction to RhinoScript (Marcos and Scripts)An short introduction to RhinoScript假使从字面上来直译,RhinoScript可以翻译为「犀牛脚本」。
RhinoScript是架构在VB(Visual Basic)语言之上的Rhino专属程序语言,大致上又可分做Marco与Script两大部分。
以下简单地说明Marco与Script两者之间的差别。
Marcos = Static (fixed, linear sequence)Scripts = Dynamic (non-linear)‧flow control (skipping and repeating lines)‧variable control (logical and mathematical operations)‧input and output (user interaction)简单地说,在Rhino中的Marcos (可以称做宏)就像是一个口令一个动作的叫Rhino帮我们执行「动作」(actions)。
Marco 的命令行是线性、静态的,意思就是说,如果我们下了一百条指令,Rhino就会从第一条、第二条、第三条、、、这样一路执行到第一百条命令,无法跳跃也无法重复执行某个命令。
相对而言,Scripts则是动态且非线性的。
首先,透过Flow Control我们可以跳过或者重复某些命令行,而Variable Control则可以让我们创造出逻辑与数学的运算,Input and Output (I/O)则是使用者与Rhino之间的互动,使用者可以送进许多种类型的资料 (data),再经过运算之后以许多种数据形态输出。
本文的主要目的在于说明Marcos与Scripts 之间的差别,之后将进一步对Scripts 的语法、功能与运用方式做进一步的说明与提供范例。
目录数字建立一个单一网格面。
设定为三个工作视窗的工作环境。
设定为四个工作视窗的工作环境。
A编辑导出AutoCAD 文件的配置。
加选选取的控制点的U 方向的下一个控制点。
加选选取的控制点的V 方向的下一个控制点。
加选选取的控制点的U 方向的上一个控制点。
加选选取的控制点的V 方向的上一个控制点。
将物件加入至选取的群组。
打开选项对话框的警示器页面。
以物件的边框方块对齐物件。
将网格顶点移到相同的位置。
将一条曲线缩放后移动至与另一条曲线对齐。
回报两个方向或两组平直物件的夹角。
赋予物件立方体贴图轴。
将曲线对应至曲面上。
以沿着曲线建立的网格圆管显示曲线。
赋予物件自订的贴图轴。
赋予物件圆柱体贴图轴。
赋予曲面、多重曲面或网格置换贴图,产生凹凸效果。
赋予曲面、多重曲面或网格渲染圆角。
将一个网格依据UV 座标对应至一个曲面上。
将网格与点物件对应至一个曲面上。
赋予物件平面贴图轴。
以选取的曲线在曲面、多重曲面或网格上产生凹凸线条的装饰效果。
赋予物件圆柱体贴图轴。
赋予物件UV 贴图轴。
将不可见的浮水印置入Rhino 的物件。
从中心点、起点、角度建立圆弧。
以圆弧混接两条曲线。
回报物件的面积。
回报并标示物件的面积重心。
回报物件的面积惯性力矩。
以栏、列、层的方式等间距复制物件。
沿着一条曲线等距复制物件。
沿着曲面上的一条曲线等距复制物件。
以栏、列的方式在平面上等距复制一个洞。
绕的指定的中心点在平面上等距复制一个洞。
在单一方向上等间距复制物件。
绕的指定的中心点等距复制物件。
沿着曲面,以栏、列的方式等距复制物件。
在曲线的端点加上或移除箭头。
赋予空白的贴图给选取的物件。
加入GHS 特殊资讯至物件。
储存目前模型的备份文件。
B管理工作视窗的背景图。
将物件材质的贴图与印花贴图重新输出一张图片,以输出的图片取代原来的颜色贴图,并删除印花贴图。
将物件呈圆弧状弯曲。
在两条曲线之间以设定的连续性建立混接曲线。
在两条曲线之间以设定的连续性建立可动态调整的混接曲线。
Rhino数控铣削加工(生成代码部分)本文档旨在介绍Rhino数控铣削加工的生成代码部分。
1. 概述Rhino是一款强大的3D建模软件,它提供了一系列的工具用于数控铣削加工。
在进行数控铣削加工时,生成有效的机器代码是非常重要的。
本文将讨论如何在Rhino中生成代码以实现数控铣削加工。
2. Rhino生成代码工具在Rhino中,有几种方法可以生成用于数控铣削的代码。
以下是一些常用的工具和插件:2.1. GrasshopperGrasshopper是Rhino的可视化编程工具,它可以用于自动化生成数控铣削代码。
通过连接各种组件和算法,可以创建复杂的加工路径。
在生成代码之前,确保连接正确并进行必要的参数设置。
2.2. CAM插件Rhino还支持多种CAM(计算机辅助制造)插件,这些插件可以生成适用于不同数控机床的代码。
根据具体需求选择合适的插件,并按照插件提供的指导生成代码。
2.3. RhinoScriptRhinoScript是一种基于Rhino内置脚本语言的方式来生成代码。
通过编写脚本,可以自定义加工路径和参数,并生成相应的代码。
3. 代码生成的基本原则在生成数控铣削代码时,有一些基本原则需要遵循:- 准确性:生成的代码必须准确无误,以确保机床按照预期的路径进行加工。
- 精确性:代码中的参数设置和加工路径必须精确,以达到所需的加工质量和精度。
- 可读性:代码应该易于阅读和理解,便于检查和修改。
4. 示例代码为了更好地理解Rhino数控铣削加工的代码生成过程,以下是一个简要示例:import rhinoscriptsyntax as rs获取曲面或实体对象obj = rs.GetObject("选择需要加工的对象")设置加工参数speed = 1000 # 加工速度depth = 10 # 加工深度生成铣削路径path = rs.OffsetCurve(obj, offset_distance=2)生成数控铣削代码code = ""for point in path:code += "G1 X{} Y{} Z{}\n".format(point.X, point.Y, depth)输出代码print(code)以上代码演示了如何通过RhinoScript在Rhino中生成数控铣削代码。
Rhino学习笔记1.简介rhino是使用java代码实现的javascript解释器,它实现了javascript的核心,符合Ecma-262标准,支持javascript标准的所有特性。
Rhino 提供了如下功能✓对 JavaScript 1.5 的完全支持✓直接在 Java 中使用 JavaScript 的功能✓一个 JavaScript shell 用于运行 JavaScript 脚本✓一个 JavaScript 的编译器,用于将 JavaScript 编译成 Java 二进制文件2.如何运行js脚本将js.jar放入classpath中,在cmd中键入java org.mozilla.javascript.tools.shell.Main后进入运行交互界面(js〉),而后在js〉提示符下输入load( “文件路径”),注意次数的目录间隔是“/”。
而后输入要运行的js的函数名称即可运行js脚本。
例:js 代码function isPrime (num){if (num <= 1) {print("Please enter a positive integer >= 2.")return false}var prime = truevar sqrRoot = Math.round(Math.sqrt(num))for (var n = 2; prime & n <= sqrRoot; ++n) {prime = (num % n != 0)}return prime}java org.mozilla.javascript.tools.shell.Mainload("D:/isPrime.js");isPrime(77);结果=false3.脚本调试在命令行输入java org.mozilla.javascript.tools.debugger.Main可以看到脚本调试页面4.如何通过java代码执行javascriptRhino执行代码的过程1)先设置环境,生成各种javascript的本地对象,如:Object,Function2)使用语法分析对字符串进行分析生成ast。
rhino3.0命令详解点sqq/s11 选取所有的点 selptqq 多点 _Points线s22 选取所有的线 selcrvs2q 选取所有的短线 SelShortCrvs2w 选取所有的开放的线 SelOpenCrvs2e 选取所有的封闭的线 SelClosedCrvs2r 选取所有的复合线 SelPolyline圆cdd 通过已知直径来画圆 _Circle _Diametercd3 通过已知三点来画圆 _Circle _3Point椭圆edd 画椭圆,有各种参数可选, _Ellipse四方形rec 画四方形(长/正方形),有各种参数可选, _Rectangle req 画多边形,有各种参数可选, _Polygon面s33 选取所有的面 selsrfs3w 选取所有的开放的面 SelOpenSrfs3e 选取所有的封闭的面 SelClosedSrf复合面s44 选取所有的复合面 SelPolySrfs4w 选取所有的开放的复合面 SelOpenPolySrf s4e 选取所有的封闭复合面 SelClosedPolySrf 网格面s55 选取所有的网格面 SelMeshs5w 选取所有的开放的网格面 SelOpenMesh s5e 选取所有的封闭的网格面 SelClosedMesh 选取层er 打开层面板 layeraw 打开所的层 AllLayersOn窗口v3 切换到三个视图 _3Viewv4 切换到四个视图 _4Viewvt F1 顶视 '_SetMaximizedViewport Topvf F2 前视 '_SetMaximizedViewport Frontvr F3 右视 '_SetMaximizedViewport Rightvq F4 三视 '_SetMaximizedViewport PerspectiveZ 放大 '_Zoomze 全屏显示,物件放中间 '_Zoom _Extentszea '_Zoom _All _Extentszs 全屏显示,被选取的物件放中间 '_Zoom _Selectedzsa '_Zoom _All _Selectedgd F7 打开/关闭网格 noecho -_DocumentProperties _Grid _ShowGrid_ShowGridAxes ! 线操作fce 两直线倒直角 _Chamferfe 两直线倒圆角 _Filletfa 修整曲线使其平滑(流线形化) Fair利用两点修剪曲线 SubCrvex 拉面,通过一线来拉面 ExtrudeCrvff 偏移线 offsetet 延长线 extendb 连接已经有的两线 blendqqq 线导圆管 _Pipe _Pausec 多条复合直线 _Polylinec1 画控制点在外的曲线 _Curvec2 画控制点在上的曲线 _InterpCrvsec 徒手自由绘制曲线 Sketchbw 使物体弯曲,可以用做微调 Bend objectsra 测量线曲的半径 _Radiusva 当两线之间的距离不大时,可用她来融接两点,使之变得光滑 _Matchcv 两线取三维空间上的镜像线 _Crv2Viewa3 通过三点来确定一条弧,先外两点,后中间点_Arc _StartPoint re 旋转形成面 _Revolve 先点第一线,后点第二线,右键确定(旋转轴)一线围绕二线旋转面操作de 在面上取一个边线 _DupEdgedb 在面上取所有的边线 _DupBorderew 取面上所有的线 _ExtractWireframeec 面上取一法线 _ExtractIsoCurvese 取断面 _Sectionbs 连接已经有的两面 blendsrfsg 由二,三或四边形成一面,没有方向 _EdgeSrfsn 有方向即A.B.C _NetworkSrfqa 利用点与曲线生成曲面(还没用过)_Patchsf 圆滑一些,一般形成三角形 Lofts1 一条线通过加一条线的轨迹来扫面,有先后顺序之分 _Sweep1s2 有三条钱,其中一根通过其它两根来形成曲面 _Sweep2 fff 偏移面 _OffsetSrffcs 两曲面倒角(直角)ChamferSrffs 两曲面倒角 FilletSrfvs 变化变径融接曲面 VRBSrf//vt 吻合曲线,使两临的两曲线变得光滑,要点击两面的边线 MatchSrfjt 融合曲面,使两曲面变成一曲面 JoinEdgees 延长面 _ExtendSrf线/面/系统等操作st 打断,如果是用线来打断面,则面应该是单面,不能是复合面 _Split(可用点打断线,也可用线打断面)t1 两面/两线/面与线来取交集 _Intersectrb 重建,一般是打开属性 _Rebuildrt 打开总的属性栏 _Optionsrq F5 属性 ! _Propertieshd 隐藏所选取的 hidesh 显示所有 showsaa 反向选取所有 _Invertsea ctrl+a 选择所有 SelAllhdd 反向隐藏所有 ! _Invert _Hiderr 镜像 mirrortb 打开工具条栏 _Toolbarww 导入 Importt 修剪 trimcy 复制 copye 炸断 _Explodev 移动 mover2 二维旋转 _Rotatef3 三维旋转 _Rotate3Dqe 打开编辑点(qedit) _EditPtOnqc F10 打开控制点(qcontrol) _PointsOngr 群组成一个物件 _Groupgrg 从群组中分离 _ungroupte 文字 Textsc2 _Scalesc3 _Scale2Dch 改变到某层 ChangeLayerss 在曲面上画一条曲线 InterpCrvOnSrferf 选择图层中的物体以关闭该图层 OneLayerOff snr 捕捉曲面上最接近的一点 OnSrfqar 平面绘图模式 Planarbn 抓屏保存成.bmp文件 ScreenCaptureToFilesbd 选择有问题的物体 SelBadObjectsssq 选定某一图层上的所有物体 SelLayersvs 选择所有Mesh网格物体 SelMeshsna 通过名字选择物体 SelNamesnn 为物体命名 SetObjectNameswd 设定Rhino工作路径 SetWorkingDirectoryssd 在当前视图窗中shade渲染选择的物体 ShadeSelectedsbe 突出显出断裂的边 ShowBrokenEdgesseg 显示曲面及多边形表面物体的边 ShowEdgessen 显示曲面及多边形表面物体未连接的边线 ShowNakedEdgeszt 选择放缩视图中心点 ZoomTargetzw 框选设定视图放缩的大小 ZoomWindowsth 使之变得光滑 Smooth投影q1 正向投影 Projectq2 法向投影 Pullq3 将曲线投影到面上 ApplyCrva4 ApplyMesh 将网格投射到面上zb Zebra 斑马线测试ea emap 环境贴图sts splitsrf 把一个面打成若干块to be continuedRhino在建nurbs面方面的强大功能,真是无以言表,在全面的600多命令中(所有的操作都可能用命令完成任务且RhinoScript支持多字符定义.Max和Maya不可以)感谢此软件,能够让我运用自如。
建筑形态设计常用Rhino Script函数Application MethodsCommand 运行仅一条内部命令LastCommandResult 返回上一命令的执行结果Print / PrintEx 向命令行显示一条信息SendKeyStrokes 向命令行传送字符可包括回车Ortho / Osnap / Planar / ProjectOsnaps 打开或关闭或返回辅助绘图OsnapMode 设定或返回对象捕捉类型Exit 结束RhinoDocument MethodsCreatePreviewImage 抓屏EnableRedraw / Redraw 使能/触发屏幕重画Selection MethodsFirstObject / NextObject / LastObject 内存最新/下一个/最老对象GetPointCoordinates / GetCurveObject / GetSurfaceObject / GetObject / GetObjects互动选取点、线、面、对象LastCreatedObjects 选取最新一群创建的对象ObjectsByGroup / ObjectsByLayer / ObjectsByType / ObjectsByName符合条件选对象群Object Methods属性查询类IsObjectSolidObjectDescriptionObjectType属性查询设置类ObjectColorObjectLayerObjectName / ObjectNames几何变换类CopyObject / CopyObjectsDeleteObject / DeleteObjectsMirrorObject / MirrorObjectsMoveObject / MoveObjectsOrientObject / OrientObjectsRotateObject / RotateObjectsScaleObject / ScaleObjectsShearObject / ShearObjectsCurve Methods创建类AddCurve 建控制点曲线AddInterpCurve / AddInterpCurveEx 建穿越点曲线AddInterpCrvOnSrf 在给定曲面上建曲线AddInterpCrvOnSrfUV 在给定曲面上用曲面座标建线AddNurbsCurve 根据point,knot,degree建曲线AddSubCrv 用参数从头至尾取曲线一段AddLine 建直线AddPolyline 建折线MeshPolyline 以折线建mesh编辑类ConvertCurveToPolyline 转曲线为折线CurveBrepIntersect ?有问题(无法选取曲线)CloseCurve 闭合曲线CurveSeam 改变闭合点DivideCurve / DivideCurveLength 分段ExplodeCurves 炸开ExtendCurve / ExtendCurveLength / ExtendCurvePoint 延长非闭合线FairCurve 减小曲线的曲率变化InsertCurveKnot 加入节点JoinCurves 连接曲线MakeCurvePeriodic 使拼接曲线连贯封闭OffsetCurve 间距ReverseCurve 反转曲线方向SimplifyCurve 简化曲线SplitCurve 某点断开TrimCurve 裁剪属性查询类ArcAngle 返回角度ArcCenterPoint / CircleCenterPoint 返回中心ArcMidPoint / CurveMidPoint 返回中点ArcRadius / CircleRadius / CurveRadius 返回半径CircleCircumference 返回周长CurveArea 返回面积CurveArcLengthPoint 返回曲线定长处点CurveAreaCentroid 返回质心CurveClosestPoint 返回曲线上某点的曲线坐标CurveCurvature 返回曲率CurveDegree 返回度数CurveDim ?永远返回3CurveDiscontinuity 返回曲线不连续点CurveDomain ?定义不明CurveEditPoints 返回曲线穿越的编辑点CurveEndPoint / CurveStartPoint 返回曲线始末点CurveEvaluate ?不懂EvaluateCurve 用曲线参数确定点坐标CurveFrame 返回某点切向/曲向平面文档案例第9行错误CurvePerpFrame 返回某点切向为Z轴平面文档案例第9行错误CurveKnotCount / CurvePointCount 返回节点数CurveKnots / CurvePoints 返回节点坐标CurveWeights 返回权重CurveLength 返回长度CurveNormal 返回曲面法线CurvePlane 返回平面曲线的所在平面CurveTangent 返回某点切向IsArc / IsCircle / IsCurve 返回类型IsCurveClosable 返回是否可用6点闭合IsCurveClosed 返回是否闭合IsCurveInPlane 返回是否曲线在一特定平面上IsCurvePlanar 返回是否曲线全在平面IsCurveLinear 返回是否曲线为一直线IsCurvePeriodic 返回是否曲线无头无尾IsCurveRational 返回是否由弧线组成IsLine / IsPolyCurve / IsPolyline 返回曲线类型PolyCurveCount 返回多段曲线的段数PolylineVertices 返回折线顶点关系查询类CurveCurveIntersection 两曲线相交重合情况CurveDeviation 两曲线间的最大最小距离CurveDirectionsMatch 两曲线方是否同向(算法不明)CurveSurfaceIntersection 曲线与曲面相交重合情况IsPointOnCurve 点是否在曲线PlanarClosedCurveContainment 两平面闭合曲线的关系无法判断有一个交点的内包含,其会被认为是相交PlanarCurveCollision 两共面曲线是否相交PointInPlanarClosedCurve 点与平面闭合曲线的关系Surface Methods创建图元AddBox / AddCone / AddCylinder 拼接polysurfaceAddSphere / AddTorus / 连续surface创建surfaceAddSrfPt / AddPlaneSurface / AddEdgeSrf/ AddLoftSrf / AddRailRevSrf / AddRevSrf/ ExtrudeCurve / ExtrudeCurvePoint / ExtrudeCurveStraight / ExtrudeSurface常见建面方式AddNurbsSurface 建NURBS曲面AddPlanarSrf 用共面曲线建平面AddSrfControlPtGrid 用控制点建曲面AddSrfPtGrid 用过点建面编辑类BooleanDifference / BooleanIntersection / BooleanUnion布尔运算CapPlanarHoles 补孔ExplodePolysurfaces 打碎面JoinSurfaces 连接面FlipSurface 反转法向InsertSurfaceKnot 给面加节点MakeSurfacePeriodic 消除闭合曲面始末交接的节OffsetSurface 位移复制ShrinkTrimmedSurface 把经切割的原面缩至切割边界SplitBrep 分割曲面属性查询类IsBrep Boundary Representation Object IsPlaneSurface / IsSurfacePlanar ?是否为一平面没区别?IsPolysurface 是否由两个以上surface组成IsPolysurfaceClosed 是否是solid IsPolysurfacePlanar 是否共面IsSurface 是否为面IsSurfaceClosed 是否面闭合(UV两向)IsSurfacePeriodic 是否面闭合且连续(UV两向)IsSurfaceRational 是否为弧线或椭圆线面IsSurfaceSingular 是否某一方向收于一点IsSurfaceTrimmed 是否曾被裁剪SurfaceArea 返回面积SurfaceAreaCentroid 返回质心SurfaceAreaMoments 返回面积贯性弯矩SurfaceVolume 返回solid体积SurfaceVolumeCentroid 返回solid质心SurfaceVolumeMoments 返回体惯性矩SurfaceCurvature 返回某点曲率SurfaceCurvatureAnalysis 返回四种曲率分析结果SurfaceDegree 返回某点度数SurfaceDomain ?不懂SurfaceEditPoints 返回编辑点其与控制点对应SurfaceKnotCount / SurfaceKnots 返回节点数/节点SurfacePointCount / SurfacePoints / SurfaceWeights 返回控制点数/控制点/权重SurfaceIsocurveDensity ?不懂SurfaceNormal 返回某点法线PullCurve 已知一曲线在面上法线投影SurfacePrincipalCurvature 面上一点的最大最小曲率弧几何查询类BrepClosestPoint / SurfaceClosestPoint 返回曲面上距给定点最近点DuplicateEdgeCurves 返回曲面的边界曲线EvaluateSurface 用UV参数确定表面坐标SurfaceEvaluate ?不懂ExtractIsoCurve 返回曲面上一点的UV轴线?IntersectBreps / SurfaceSurfaceIntersection 返回两曲面交线IsPointInSurface 判断一点是否在曲面体内IsPointOnSurface 判断一点是否在曲面上ShortPath 返回曲面上两点间的最短路径SurfaceContourPoints 返回等高线顶点SurfaceFrame 返回曲面上选定点的切向平面Geometry Methods创建类AddPoint / AddPoints 加点或点群AddPointCloud 加点云(为一个对象)AddText 加文字VectorCreate 建一矢量PlaneFitFromPoints 用一群点拟合建CplanePlaneFromFrame 用两个矢量一个原点建Cplane PlaneFromNormal 用法线矢量建CplanePlaneFromPoints 用三点建CplaneWorldXYPlane / WorldYZPlane / WorldZXPlane 建顶、侧、前Cplane编辑类MovePlane 移动CplaneRotatePlane 旋转CplanePointAdd / PointSubtract 点加、减矢量成新点PointDivide / PointScale 点坐标缩放矢量运算VectorAdd / VectorSubtract 矢量加减VectorCrossProduct 返回与两个矢量平面垂直矢量VectorDotProduct 返回|a|*|b|*cos夹角VectorMultiply / VectorDivide 矢量乘除VectorScale 矢量缩放VectorReverse 矢量反向VectorRotate 矢量旋转VectorUnitize 矢量单元化为长度1常数与转换函数PI 圆周率ToDegrees / ToRadians 弧度转角度Polar 以极坐标求笛卡儿坐标XformCPlaneToWorld / XformWorldToCPlane 点坐标在不同坐标系间转换属性查询类BoundingBox 返回对象的三轴范围IsVectorTiny 返回是否矢量太小于1e-12 IsVectorZero 返回是否矢量为零PlaneEquation 返回Cplane方程四系数PointCloudCount / PointCloudPoints 返回点云内点数、各点坐标VectorLength 返回矢量长度属性查询设置类PointCoordinates 查询、设置某点坐标TextObjectHeight / TextObjectPlane / TextObjectPoint / TextObjectText查询、设置某文字属性关系查询类Angle / Angle2 返回两点、线夹角Distance / DistanceToPlane 返回两点、点到平面距离IsVectorParallelTo 返回两个矢量是否平行IsVectorPerpendicularTo 返回两个矢量是否垂直PlaneClosestPoint 返回点在Cplane上的投影点PointsAreCoplanar 返回群点是否共平面PointCompare 返回两点重合关系VectorCompare 返回两矢量重合关系PullPoints 返回沿法线方向拉至面上的点Mesh MethodsMeshFaces 逐面返回各点坐标MeshVertices 返回各顶点坐标MeshFaceVertices 返回各面其顶点的编号MeshTriangleCount / MeshQuadCount 返回面数Layer Methods创建类AddLayer 添加层编辑类PurgeLayer 除去非当前层及其对象RenameLayer 更名查询类IsLayer 返回某层是否存在LayerCount 返回文件中的层数LayerNames 返回文件中所有层名查询设置类CurrentLayer 查询或设置当前层LayerColor 查询或设置层色LayerVisible 查询或设置层可见性View MethodsViewCPlane 查询并设置CplaneZoomBoundingBox / ZoomExtents / ZoomSelected 缩放视图Group Methods创建类AddGroup / DeleteGroup / RenameGroup 创建、消除、更名组AddObjectsToGroup / AddObjectToGroup 添加组成员RemoveObjectFromAllGroups / RemoveObjectFromGroup / RemoveObjectsFromGroup减少组成员查询类GroupCount 返回文件中组数GroupNames 返回文件中组名IsGroup 返回某组名是否存在IsGroupEmpty 返回某组是否为空User Interface Methods通用类BrowseForFolder / Open / Save 返回一个文件定位CheckListBox / ComboListBox / ListBox / MultiListBox 返回列表选择结果PropertyListBox 返回对于列表的编辑EditBox 返回多行文本GetBoolean 返回布尔量GetColor 返回颜色GetInteger / IntegerBox 返回整数GetReal / RealBox 返回实数GetString / StringBox 返回一字符串MessageBeep 返回一声响MessageBox 返回对于对话框的反应PopupMenu 返回对于弹出菜单的反应Rhino类GetLayer 返回选择的层名GetLinetype 返回选择的线型几何类GetAngle 返回一个夹角GetBox 返回一个立方体积GetDistance 返回距离GetPoint / GetPoints 返回一点或多点GetPointOnCurve 返回某曲线上一点GetPointOnMesh 返回某面体上一点GetPointOnSurface 返回某曲面上一点GetRectangle 返回一矩形Utility MethodsJoinArrays / Strtok 连接/分离一元数组Pt2Str / Str2Pt / Str2PtArray 转换坐标与字符串SimplifyArray 转换三维点数组为一维数组SortNumbers / SortPointList / SortPoints / SortStrings 一维数组、点集、字符串排序CullDuplicateNumbers / CullDuplicatePoints / CullDuplicateStrings 消除元素间重复其它文档VBscript概念辨析Line / Polyline / CurveSurface / Polysurface / Solid / Brep / MeshDomain 似乎不是表面长度(曲线的值并非其长)-Evaluate (Derivatives)不懂Rational (弧线+椭圆线,无法对点光滑编辑) / Not Rational(非弧线或椭圆线,可对点光滑编辑)Periodic / Non-Periodic 闭合曲线/面的始末交接是否有节kinkIsocurve似乎是曲面的UV轴线图元转换Rhino DXFLine linePolyline (平面内) Polyline (2d)Polyline (平面外) Spline Curve Spline。
建筑形态设计常用Rhino Script函数Application MethodsCommand 运行仅一条内部命令LastCommandResult 返回上一命令的执行结果Print / PrintEx 向命令行显示一条信息SendKeyStrokes 向命令行传送字符可包括回车Ortho / Osnap / Planar / ProjectOsnaps 打开或关闭或返回辅助绘图OsnapMode 设定或返回对象捕捉类型Exit 结束RhinoDocument MethodsCreatePreviewImage 抓屏EnableRedraw / Redraw 使能/触发屏幕重画Selection MethodsFirstObject / NextObject / LastObject 内存最新/下一个/最老对象GetPointCoordinates / GetCurveObject / GetSurfaceObject / GetObject / GetObjects互动选取点、线、面、对象LastCreatedObjects 选取最新一群创建的对象ObjectsByGroup / ObjectsByLayer / ObjectsByType / ObjectsByName符合条件选对象群Object Methods属性查询类IsObjectSolidObjectDescriptionObjectType属性查询设置类ObjectColorObjectLayerObjectName / ObjectNames几何变换类CopyObject / CopyObjectsDeleteObject / DeleteObjectsMirrorObject / MirrorObjectsMoveObject / MoveObjectsOrientObject / OrientObjectsRotateObject / RotateObjectsScaleObject / ScaleObjectsShearObject / ShearObjectsCurve Methods创建类AddCurve 建控制点曲线AddInterpCurve / AddInterpCurveEx 建穿越点曲线AddInterpCrvOnSrf 在给定曲面上建曲线AddInterpCrvOnSrfUV 在给定曲面上用曲面座标建线AddNurbsCurve 根据point,knot,degree建曲线AddSubCrv 用参数从头至尾取曲线一段AddLine 建直线AddPolyline 建折线MeshPolyline 以折线建mesh编辑类ConvertCurveToPolyline 转曲线为折线CurveBrepIntersect ?有问题(无法选取曲线)CloseCurve 闭合曲线CurveSeam 改变闭合点DivideCurve / DivideCurveLength 分段ExplodeCurves 炸开ExtendCurve / ExtendCurveLength / ExtendCurvePoint 延长非闭合线FairCurve 减小曲线的曲率变化InsertCurveKnot 加入节点JoinCurves 连接曲线MakeCurvePeriodic 使拼接曲线连贯封闭OffsetCurve 间距ReverseCurve 反转曲线方向SimplifyCurve 简化曲线SplitCurve 某点断开TrimCurve 裁剪属性查询类ArcAngle 返回角度ArcCenterPoint / CircleCenterPoint 返回中心ArcMidPoint / CurveMidPoint 返回中点ArcRadius / CircleRadius / CurveRadius 返回半径CircleCircumference 返回周长CurveArea 返回面积CurveArcLengthPoint 返回曲线定长处点CurveAreaCentroid 返回质心CurveClosestPoint 返回曲线上某点的曲线坐标CurveCurvature 返回曲率CurveDegree 返回度数CurveDim ?永远返回3 CurveDiscontinuity 返回曲线不连续点CurveDomain ?定义不明CurveEditPoints 返回曲线穿越的编辑点CurveEndPoint / CurveStartPoint 返回曲线始末点CurveEvaluate ?不懂EvaluateCurve 用曲线参数确定点坐标CurveFrame 返回某点切向/曲向平面文档案例第9行错误CurvePerpFrame 返回某点切向为Z轴平面文档案例第9行错误CurveKnotCount / CurvePointCount 返回节点数CurveKnots / CurvePoints 返回节点坐标CurveWeights 返回权重CurveLength 返回长度CurveNormal 返回曲面法线CurvePlane 返回平面曲线的所在平面CurveTangent 返回某点切向IsArc / IsCircle / IsCurve 返回类型IsCurveClosable 返回是否可用6点闭合IsCurveClosed 返回是否闭合IsCurveInPlane 返回是否曲线在一特定平面上IsCurvePlanar 返回是否曲线全在平面IsCurveLinear 返回是否曲线为一直线IsCurvePeriodic 返回是否曲线无头无尾IsCurveRational 返回是否由弧线组成IsLine / IsPolyCurve / IsPolyline 返回曲线类型PolyCurveCount 返回多段曲线的段数PolylineVertices 返回折线顶点关系查询类CurveCurveIntersection 两曲线相交重合情况CurveDeviation 两曲线间的最大最小距离CurveDirectionsMatch 两曲线方是否同向(算法不明)CurveSurfaceIntersection 曲线与曲面相交重合情况IsPointOnCurve 点是否在曲线PlanarClosedCurveContainment 两平面闭合曲线的关系无法判断有一个交点的内包含,其会被认为是相交PlanarCurveCollision 两共面曲线是否相交PointInPlanarClosedCurve 点与平面闭合曲线的关系Surface Methods创建图元AddBox / AddCone / AddCylinder 拼接polysurfaceAddSphere / AddTorus / 连续surface创建surfaceAddSrfPt / AddPlaneSurface / AddEdgeSrf/ AddLoftSrf / AddRailRevSrf / AddRevSrf/ ExtrudeCurve / ExtrudeCurvePoint / ExtrudeCurveStraight / ExtrudeSurface常见建面方式AddNurbsSurface 建NURBS曲面AddPlanarSrf 用共面曲线建平面AddSrfControlPtGrid 用控制点建曲面AddSrfPtGrid 用过点建面编辑类BooleanDifference / BooleanIntersection / BooleanUnion布尔运算CapPlanarHoles 补孔ExplodePolysurfaces 打碎面JoinSurfaces 连接面FlipSurface 反转法向InsertSurfaceKnot 给面加节点MakeSurfacePeriodic 消除闭合曲面始末交接的节OffsetSurface 位移复制ShrinkTrimmedSurface 把经切割的原面缩至切割边界SplitBrep 分割曲面属性查询类IsBrep Boundary Representation Object IsPlaneSurface / IsSurfacePlanar ?是否为一平面没区别?IsPolysurface 是否由两个以上surface组成IsPolysurfaceClosed 是否是solid IsPolysurfacePlanar 是否共面IsSurface 是否为面IsSurfaceClosed 是否面闭合(UV两向)IsSurfacePeriodic 是否面闭合且连续(UV两向)IsSurfaceRational 是否为弧线或椭圆线面IsSurfaceSingular 是否某一方向收于一点IsSurfaceTrimmed 是否曾被裁剪SurfaceArea 返回面积SurfaceAreaCentroid 返回质心SurfaceAreaMoments 返回面积贯性弯矩SurfaceVolume 返回solid体积SurfaceVolumeCentroid 返回solid质心SurfaceVolumeMoments 返回体惯性矩SurfaceCurvature 返回某点曲率SurfaceCurvatureAnalysis 返回四种曲率分析结果SurfaceDegree 返回某点度数SurfaceDomain ?不懂SurfaceEditPoints 返回编辑点其与控制点对应SurfaceKnotCount / SurfaceKnots 返回节点数/节点SurfacePointCount / SurfacePoints / SurfaceWeights 返回控制点数/控制点/权重SurfaceIsocurveDensity ?不懂SurfaceNormal 返回某点法线PullCurve 已知一曲线在面上法线投影SurfacePrincipalCurvature 面上一点的最大最小曲率弧几何查询类BrepClosestPoint / SurfaceClosestPoint 返回曲面上距给定点最近点DuplicateEdgeCurves 返回曲面的边界曲线EvaluateSurface 用UV参数确定表面坐标SurfaceEvaluate ?不懂ExtractIsoCurve 返回曲面上一点的UV轴线?IntersectBreps / SurfaceSurfaceIntersection 返回两曲面交线IsPointInSurface 判断一点是否在曲面体内IsPointOnSurface 判断一点是否在曲面上ShortPath 返回曲面上两点间的最短路径SurfaceContourPoints 返回等高线顶点SurfaceFrame 返回曲面上选定点的切向平面Geometry Methods创建类AddPoint / AddPoints 加点或点群AddPointCloud 加点云(为一个对象)AddText 加文字VectorCreate 建一矢量PlaneFitFromPoints 用一群点拟合建CplanePlaneFromFrame 用两个矢量一个原点建Cplane PlaneFromNormal 用法线矢量建CplanePlaneFromPoints 用三点建CplaneWorldXYPlane / WorldYZPlane / WorldZXPlane 建顶、侧、前Cplane编辑类MovePlane 移动CplaneRotatePlane 旋转CplanePointAdd / PointSubtract 点加、减矢量成新点PointDivide / PointScale 点坐标缩放矢量运算VectorAdd / VectorSubtract 矢量加减VectorCrossProduct 返回与两个矢量平面垂直矢量VectorDotProduct 返回|a|*|b|*cos夹角VectorMultiply / VectorDivide 矢量乘除VectorScale 矢量缩放VectorReverse 矢量反向VectorRotate 矢量旋转VectorUnitize 矢量单元化为长度1常数与转换函数PI 圆周率ToDegrees / ToRadians 弧度转角度Polar 以极坐标求笛卡儿坐标XformCPlaneToWorld / XformWorldToCPlane 点坐标在不同坐标系间转换属性查询类BoundingBox 返回对象的三轴范围IsVectorTiny 返回是否矢量太小于1e-12 IsVectorZero 返回是否矢量为零PlaneEquation 返回Cplane方程四系数PointCloudCount / PointCloudPoints 返回点云内点数、各点坐标VectorLength 返回矢量长度属性查询设置类PointCoordinates 查询、设置某点坐标TextObjectHeight / TextObjectPlane / TextObjectPoint / TextObjectText查询、设置某文字属性关系查询类Angle / Angle2 返回两点、线夹角Distance / DistanceToPlane 返回两点、点到平面距离IsVectorParallelTo 返回两个矢量是否平行IsVectorPerpendicularTo 返回两个矢量是否垂直PlaneClosestPoint 返回点在Cplane上的投影点PointsAreCoplanar 返回群点是否共平面PointCompare 返回两点重合关系VectorCompare 返回两矢量重合关系PullPoints 返回沿法线方向拉至面上的点Mesh MethodsMeshFaces 逐面返回各点坐标MeshVertices 返回各顶点坐标MeshFaceVertices 返回各面其顶点的编号MeshTriangleCount / MeshQuadCount 返回面数Layer Methods创建类AddLayer 添加层编辑类PurgeLayer 除去非当前层及其对象RenameLayer 更名查询类IsLayer 返回某层是否存在LayerCount 返回文件中的层数LayerNames 返回文件中所有层名查询设置类CurrentLayer 查询或设置当前层LayerColor 查询或设置层色LayerVisible 查询或设置层可见性View MethodsViewCPlane 查询并设置CplaneZoomBoundingBox / ZoomExtents / ZoomSelected 缩放视图Group Methods创建类AddGroup / DeleteGroup / RenameGroup 创建、消除、更名组AddObjectsToGroup / AddObjectToGroup 添加组成员RemoveObjectFromAllGroups / RemoveObjectFromGroup / RemoveObjectsFromGroup减少组成员查询类GroupCount 返回文件中组数GroupNames 返回文件中组名IsGroup 返回某组名是否存在IsGroupEmpty 返回某组是否为空User Interface Methods通用类BrowseForFolder / OpenFileName / SaveFileName 返回一个文件定位CheckListBox / ComboListBox / ListBox / MultiListBox 返回列表选择结果PropertyListBox 返回对于列表的编辑EditBox 返回多行文本GetBoolean 返回布尔量GetColor 返回颜色GetInteger / IntegerBox 返回整数GetReal / RealBox 返回实数GetString / StringBox 返回一字符串MessageBeep 返回一声响MessageBox 返回对于对话框的反应PopupMenu 返回对于弹出菜单的反应Rhino类GetLayer 返回选择的层名GetLinetype 返回选择的线型几何类GetAngle 返回一个夹角GetBox 返回一个立方体积GetDistance 返回距离GetPoint / GetPoints 返回一点或多点GetPointOnCurve 返回某曲线上一点GetPointOnMesh 返回某面体上一点GetPointOnSurface 返回某曲面上一点GetRectangle 返回一矩形Utility MethodsJoinArrays / Strtok 连接/分离一元数组Pt2Str / Str2Pt / Str2PtArray 转换坐标与字符串SimplifyArray 转换三维点数组为一维数组SortNumbers / SortPointList / SortPoints / SortStrings 一维数组、点集、字符串排序CullDuplicateNumbers / CullDuplicatePoints / CullDuplicateStrings消除元素间重复其它文档VBscript/en-us/library/d1wf56tt.aspx概念辨析Line / Polyline / CurveSurface / Polysurface / Solid / Brep / MeshDomain 似乎不是表面长度(曲线的值并非其长)-Evaluate (Derivatives)不懂Rational (弧线+椭圆线,无法对点光滑编辑) / Not Rational(非弧线或椭圆线,可对点光滑编辑)Periodic / Non-Periodic 闭合曲线/面的始末交接是否有节kinkIsocurve似乎是曲面的UV轴线图元转换Rhino DXFLine linePolyline (平面内) Polyline (2d)Polyline (平面外) SplineCurve Spline。