常用Rhino Script函数

合集下载

RhinoScript_入门教程

RhinoScript_入门教程

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 参数建模

转自: 专筑网 Rhino Script 参数建模内容简介得知《Rhino Script 参数建模》即将出版时我十分高兴。

这是Robert McNeel 公司协助推出的一本专业书籍,《Rhino Script 参数建模》的面世一定能帮助全华语地区的Rhino户,特别是广大建筑行业的从业者,甚至是产品设计行业的从业者更加深入地了解和使用该软件。

Rhino于1998年由美国Robert McNeel公司推出,在竞争激烈的三维图形软件市场,其特有的人性化建模特色,使得用户可以迅速掌握和方便运用NURBS 建模工具服务于各种设计业和制造业,从而成为无数3D专业制作人员、产品设计师、建筑设计师必备的协同设计工具。

Rhino也是一款平民化的三维设计软件,因其易学易用,并且可无缝配合后端的自造领域的特点,它在国内的产品设计领域应用非常广泛。

随着近些年,奥运会、世博会等大型活动的成功举办,以及各地地标性建筑与各类新场馆的兴建。

Rhino的自由造型特点也被建筑业迅速地接受,由它提供的方案成为了最主流的解决方案。

因此近几年,我们在中国大陆接到的用户咨询也多以建筑应用为主。

参数化建模方式的引入,不仅会在建筑形态与外观方面带来突破性的变化,更带动了成本管理、设计建造流程等方面的革新,而这些变化和革新很可能是革命性的。

试想一下,在几年以后,当建筑师、设计师普遍具备了更高层次的使用计算机进行辅助设计的能力,通过编程化、参数化的手段,必将催生出新的造型形式和空间关系。

同时,设计工作中大量的重复性调整工作,将通过使用参数化的方式变得高效而轻松,这将会极大推动建筑及设计行业的发展。

因此在看到中央美术学院建筑学院的王文栋先生的作品之后,《Rhino Script 参数建模》的出版就顺理成章了。

编辑推荐《Rhino Script 参数建模》:编程建模是更高层次使用计算机的能力,我们并不缺乏想象力,只是还没有掌握与之匹配的设计技术。

控制复杂性是编程建模的本质,就其本质而言,是使用计算机的能力。

RhinoScript_入门教程-13页word资料

RhinoScript_入门教程-13页word资料

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 的语法、功能与运用方式做进一步的说明与提供范例。

犀牛指令列表 (1)

犀牛指令列表 (1)

目录数字建立一个单一网格面。

设定为三个工作视窗的工作环境。

设定为四个工作视窗的工作环境。

A编辑导出AutoCAD 文件的配置。

加选选取的控制点的U 方向的下一个控制点。

加选选取的控制点的V 方向的下一个控制点。

加选选取的控制点的U 方向的上一个控制点。

加选选取的控制点的V 方向的上一个控制点。

将物件加入至选取的群组。

打开选项对话框的警示器页面。

以物件的边框方块对齐物件。

将网格顶点移到相同的位置。

将一条曲线缩放后移动至与另一条曲线对齐。

回报两个方向或两组平直物件的夹角。

赋予物件立方体贴图轴。

将曲线对应至曲面上。

以沿着曲线建立的网格圆管显示曲线。

赋予物件自订的贴图轴。

赋予物件圆柱体贴图轴。

赋予曲面、多重曲面或网格置换贴图,产生凹凸效果。

赋予曲面、多重曲面或网格渲染圆角。

将一个网格依据UV 座标对应至一个曲面上。

将网格与点物件对应至一个曲面上。

赋予物件平面贴图轴。

以选取的曲线在曲面、多重曲面或网格上产生凹凸线条的装饰效果。

赋予物件圆柱体贴图轴。

赋予物件UV 贴图轴。

将不可见的浮水印置入Rhino 的物件。

从中心点、起点、角度建立圆弧。

以圆弧混接两条曲线。

回报物件的面积。

回报并标示物件的面积重心。

回报物件的面积惯性力矩。

以栏、列、层的方式等间距复制物件。

沿着一条曲线等距复制物件。

沿着曲面上的一条曲线等距复制物件。

以栏、列的方式在平面上等距复制一个洞。

绕的指定的中心点在平面上等距复制一个洞。

在单一方向上等间距复制物件。

绕的指定的中心点等距复制物件。

沿着曲面,以栏、列的方式等距复制物件。

在曲线的端点加上或移除箭头。

赋予空白的贴图给选取的物件。

加入GHS 特殊资讯至物件。

储存目前模型的备份文件。

B管理工作视窗的背景图。

将物件材质的贴图与印花贴图重新输出一张图片,以输出的图片取代原来的颜色贴图,并删除印花贴图。

将物件呈圆弧状弯曲。

在两条曲线之间以设定的连续性建立混接曲线。

在两条曲线之间以设定的连续性建立可动态调整的混接曲线。

Rhino数控铣削加工(生成代码部分)

Rhino数控铣削加工(生成代码部分)

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学习总结

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。

犀牛指令集

犀牛指令集

ExtractIsocurve ExtractMeshEdges ExtractMeshFaces ExtractMeshFacesByArea ExtractMeshFacesByAspectRatio ExtractMeshFacesByDraftAngle ExtractMeshFacesByEdgeLength ExtractMeshPart ExtractNonManifoldMeshEdges ExtractPt ExtractRenderMesh ExtractSrf ExtractSubCrv ExtractWireframe ExtrudeCrv ExtrudeCrvAlongCrv ExtrudeCrvTapered ExtrudeCrvToPoint ExtrudeSrf ExtrudeSrfAlongCrv ExtrudeSrfTapered ExtrudeSrfToPoint Fair Fillet FilletCorners FilletEdge FilletSrf FillMeshHole FillMeshHoles Fin FitCrv FitSrf FixedLengthCrvEdit
CopyViewportToDetail CPlane CreateSolid CreateUVCrv Crv2View CrvDeviation CrvSeam CullControlPolygon CSec CullDegenerateMeshFaces Curvature CurvatureAnalysis CurvatureAnalysisOff CurvatureGraph CurvatureGraphOff Curve CurveBoolean CurveThroughPolyline CurveThroughPt CurveThroughSrfControlPt Cut CutPlane CutVolume Cylinder Delete DeleteHole DeleteMeshFaces DeleteSubCrv Detail DigBeep DigCalibrate DiDisconnect Digitize DigPause DigScale DigSection DigSketch Dim DimAligned DimAngle DimDiameter DimOrdinate DimRadius DimRecenterText DimRotated Dir DirectionalLight DisableOsnap DisplayCommandPrompt Distance Divide DivideAlongCreases DocumentProperties DocumentPropertiesPage DollyZoom Domain Dot DraftAngleAnalysis DraftAngleAnalysisOff DragMode Drape DupBorder DupEdge DupFaceBorder DFD

RhinoPythonScript犀牛文字批量编辑加前缀后缀

RhinoPythonScript犀牛文字批量编辑加前缀后缀
obj = []
for i in range(getCur.ObjectCount):
obj.append(getCur.Object(i).Object())
#取消选择对象
if blnFilter.CurrentValue:
#文字过滤
getCur.GeometryFilter = Rhino.DocObjects.ObjectType.Annotation
else:
#注解文字过滤
if val and val == "True":
ini_blnFilter = True
else:
ini_blnFilter = False
#初始化变量
strText = ini_strText
blnQianHou = Rhino.Input.Custom.OptionToggle(ini_blnQianHou, "前缀", "后缀")
#TEXT
if blnFilter.CurrentValue:
#获取原文字内容
str1 = rs.TextObjectText(objText.Id)
getCur.AddOptionToggle("过滤", blnFilter)
continue
#选择了文字
elif getRet == Rhino.Input.GetResult.Object:
#获取所有文字对象
blnFilter = Rhino.Input.Custom.OptionToggle(ini_blnFilter, "DOT", "TEXT")

rhino 命令表

rhino 命令表

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函数(DOC)

常用Rhino-Script函数(DOC)

建筑形态设计常用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函数

常用Rhino_Script函数

建筑形态设计常用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 / 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 (平面外) Spline Curve Spline。

RHINOSCRIPT学习笔记

RHINOSCRIPT学习笔记

rhinoscript学习笔记(一)前言为了更好的理解rhinoscript这种非常闹心的软件,并且能在周围没有一个志同道人的情况在坚持学好它(因为我还是个比较懒惰的人),所以我选择将它们写下来,督促我完成rhinoscript 大业。

至于,我为什么对此着迷,因为我越来越钦佩计算机的发展,同时感叹数学的万能,并且我也相信计算机图形学在有朝一日会从艺术的层面上改变建筑,如王文东前辈说“当技术实现了它的真正使命,它就升华为艺术”,而且这种势头已经日渐明晰了。

这里我不得不惊叹那些作为先锋建筑师的前辈付出的能力,他们将建筑带入了一个全新的领域,并创造出一种新的艺术形式。

这是依靠他们对哲学和数学的了解,以及深厚艺术积淀,当然必不可少的还有计算机技术的辅助。

虽然这种计算机技术在现在我所了解的范围内不太普及,但在国内终究还是有一批前辈在辛劳地传播这种计算机技术,也许有朝一日,参数化与非线性能真正地步入建筑的殿堂,而不是成为矫揉造作的代名词而被那些不了解这个领域的建筑师或学生所嘲笑与摒弃。

最后,我想说,至少我在建筑学方面找到了自己所钟爱的领域,虽然它在近阶段不能得到证明,但我会为之不懈的努力。

正文(一)之前,潜水ncf论坛在学习grasshopper时,就听说过rhinoscript,当时就有同我一样的初学者问,grasshopper和rhinoscript哪一个好呢,大神给的答案是,都用一下,自己感觉。

虽然这看似是一种敷衍的答案,但确实是金玉良言。

因为,grasshopper与rhinoscript是相辅相成的。

在学习任何一款软件前,必须首先了解的是这款软件是做什么的,了解软件特性后,才不至于犯低级的错误,也不会为这款软件因为达到不了某些预期的目标而苦恼。

就像我们肯定不会因为电磁炉不能制冷而抱怨它功能不够完善。

那么rhinoscript是做什么的呢。

首先我们知道rhino中有一条指令框,也就是说,我们完全可以用键盘来执行指令,例如,我们想做一条line,我们可以用鼠标在坐标中单击起点和终点,同样,我们也可以用键盘输入line(0,0,0 10,0,0)。

【rhinoscript小程序】穿孔铝板自动生成

【rhinoscript小程序】穿孔铝板自动生成

【rhinoscript小程序】穿孔铝板自动生成Option Explicit'Script written by'Script copyrighted by'Script version 2016年5月17日星期二 18:27:21Call Main()Sub Main()Dim i,j,r,beta,numDim data(4),value(4)data(0) = "铝板样板宽度"data(1) = "铝板样板长度"data(2) = "穿孔直径"data(3) = "孔边到铝板边距离"data(4) = "孔洞中心距"value(0) = 800 'the wide of plate.value(1) = 1200 'the value(4)gth of plate.value(2) = 18 'the diameter of hole.value(3) = 35 'distance of hole's-edge from plate-edge. value(4) = 21 'distance of between two holes.Dim rlt_valuerlt_value = rhino.PropertyListBox(data, value)r = rlt_value(2) / 2Call rhino.AddPolyline(array(array(0, 0, 0), array(rlt_value(0),0, 0), array(rlt_value(0), rlt_value(1), 0), array(0, rlt_value(1), 0), array(0, 0, 0)))Call rhino.AddAlignedDimension(rhino.ViewCPlane, array(0, rlt_value(3) + r, 0), array(rlt_value(3), rlt_value(3) + r, 0), array(0, rlt_value(3) - r, 0))Call rhino.AddAlignedDimension(rhino.ViewCPlane, array(rlt_value(3) + r, 0, 0), array(rlt_value(3) + r, rlt_value(3), 0), array(rlt_value(3) - r, 0, 0))Call rhino.AddAlignedDimension(rhino.ViewCPlane, array(rlt_value(3) + r, rlt_value(3) + r, 0), array(rlt_value(3) + r + rlt_value(4), rlt_value(3) + r, 0), array(0, rlt_value(3) - r, 0)) Call rhino.AddAlignedDimension(rhino.ViewCPlane, array(rlt_value(3) + r + r, rlt_value(3) + r, 0), array(rlt_value(3) + r + rlt_value(4) - r, rlt_value(3) + r, 0), array(0, rlt_value(3) + r, 0)) Call rhino.AddAlignedDimension(rhino.ViewCPlane, array(rlt_value(3) + r, rlt_value(3) + r, 0), array(rlt_value(3) + r + r, rlt_value(3) + r, 0), array(0, rlt_value(3) + r + r, 0))' Dim line' line = rhino.GetObject("select line", 4)' Call rhino.MoveObject(line, array(0, 0, 0), array(rlt_value(3) + r, rlt_value(3) + r, 0))' For i=0 To (1000 - rlt_value(3) * 2) \ rlt_value(4) Step 1' Call rhino.CopyObject(line, array(0, 0, 0), array(rlt_value(4) * i, 0, 0))' NextCall rhino.EnableRedraw(False)For j=0 To (rlt_value(1) - rlt_value(3) * 2 - 2 * r) \ round(rlt_value(4) / 2 * sqr(3), 0) Step 1For i=0 To (rlt_value(0) - rlt_value(3) * 2 - 2 * r) \ rlt_value(4) Step 1If j Mod 2 = 0 ThenCall rhino.AddCircle(array((rlt_value(3) + r) + rlt_value(4) * i, (rlt_value(3) + r) + j * rlt_value(4) / 2 * sqr(3), 0), r)ElseCall rhino.AddCircle(array((rlt_value(3) + r) + rlt_value(4) * i + rlt_value(4) / 2, (rlt_value(3) + r) + j * rlt_value(4) / 2 * sqr(3), 0), r) End Ifnum = num + 1NextNextCall rhino.EnableRedraw(True)Call rhino.Print("孔洞个数为:" & num & " 个。

RhinoScript入门

RhinoScript入门

RhinoScript入门RhinoScript 是以VB语法作为语言基础的,任何一个RhinoScript脚本运行在当前的Rhino环境中时都可以使用Rhino本身的函数和子程序调用,以及某些Rhino环境变量。

注意在脚本或者其他插件中,Rhino 的当前环境被称之为“文档(document)”。

RhinoScript实际为文本文档,为了实现各版本之间的兼容性,请使用标准的ASC编码的脚本文件,即使是注释也不要使用中文。

一般的RhinoScript格式后缀为rvb。

一,RhinoScript的载入在使用RhinoScript前需要将rvb文件载入到文档中。

常用的方法如下:如上图所示,可以使用Tools|RhinoScript|Load,来加载rvb文件。

也可以在Rhino命令行中输入“LoadScript”命令进行载入。

在菜单或者命令操作之后会有如下的对话框出现:点击ADD按钮可以加入新的RVB文件到列表中。

在列表中选择一个文件,点LOAD即可加载。

点REMOVE即可从列表中删除一个文件。

RhinoScript加载规则如下:如果RVB文件中只包含子程序或者函数的定义,这时候没有“裸语句”,Rhino仅仅检查语法规则,不运行任何一个子程序或者函数。

但RVB文件中还包含“裸语句”,这时Rhino会解吸并运行这个脚本。

二,RhinoScript作为命令运行在RhinoScript被载入之后,这个RVB文件内部的一些函数或者子程序便可以当作特殊命令被使用,但并不是RVB文件内的所有函数或者子程序可以被当作特殊命令使用,只有满足如下条件的子程序才可以被使用。

使用条件是:必须为标准的VB子程序,并且这个子程序不可以带任何参数。

如下一段摘自Rhino4 RhinoScript帮助文档的程序Sub Test1()MsgBox "Test1"End SubSub Test2(strMessage)MsgBox strMessageEnd SubFunction Test3()MsgBox strMessageTest3 = strMessageEnd Function其中只有Test1可以被当作命令使用。

犀牛常用的指令和快捷键

犀牛常用的指令和快捷键

犀牛常用的指令和快捷键犀牛常用的指令和快捷键 Rhino指令:s=Split p 点打断se=! SplitEdge 打断面的边j=Join 连接线或面,或将面连成实体s1=! sweep1 单边扫掠s2=! sweep2 双边扫掠p=Project 线或多线投影到面上aO=! AllLayersOn AllLayersOn Show 打开所有层并把隐藏的东西显示出来r=Rebuild 线上布点rd=! radius 测量圆角半径dd=! Distance 测量距离D=DUP ChangeT oCurrentLayer 复制到当前层(线或面,但不能是点)C=interpcrv 样条曲线cc=! copy 多个复制h=Hide 隐藏w=! Show 显示所有hh=HIDESWAP 交换隐藏i=! Intersect 求交点或交线E=! Properties 属性t=Trim 剪切TT=! UNTRIM 还原剪切b=! Blend 顺接线bb=! BlendSrf 顺接面2=! EdgeSrf 2 ,3,4线拉面4=! NetworkSrf 2 ,3,4线拉面3=! CPlane3Pt 3点定面33=! plan 坐标面1=! Extrude Cap=No 扫直面g=! DupEdge 取边界(一条或多条)GG=dupborder 所有边界q=! ExtendBYLINE 延长线qq=! ExtendSrf 延长面n=! Offset 补正(或偏移)线nn=! OffsetSrf 补正(或偏移)面f=! fillet 倒圆角(线)ff=! FilletSrf 倒圆角(面)k=! Lock 锁定kk=! unlock 解锁lk=! lockswap 交换锁定Tg=! MATCH 切线x=section 求剖面cv=! Crv2View 2视窗求线(要求在 2视窗各自是平的) 3a=! arc3pt 3点画弧je=MergeEdge 连接被打断的边vw=CplaneT oView ViewportProperties 视窗属性Rhino快捷键:F1 =TOP 俯视图(上视图)F2 =Right 侧视图(右视图)F3 =Front 前视图(正视图)F7 =! OneLayerOff 关闭一个层F8 =Ortho 正交方式F9 =! Editpton 编辑点ctrl+A =SelAll 全选ctrl+C =! CopyClip 复制ctrl+G =! Group 组ctrl+H =! Hide 隐藏ctrl+J =! Join 连接ctrl+L =! Lock 加锁ctrl+M =ToggleMaxViewport 显示所有窗口ctrl+N =! New 新建ctrl+O =! Open 打开ctrl+P =! Print 打印ctrl+S =! SaveSmall 保存ctrl+T =! Cut 剪切ctrl+U =! UnGroup 炸开组ctrl+V =! Paste 粘贴ctrl+X =! Cut 剪切ctrl+Z =! Undo 取消上一步F4 =Perspective 透视图F5 =! SelLayer 选择层F6 =! ChangeLayer 改变层ctrl+D =! Delete 删除ctrl+Q =Z 放大ctrl+W =ZE 全屏ctrl+1 =! SelPt 选择所有的点ctrl+2 =! SelCrv 选择所有的线ctrl+3 =! SelSrf 选择所有的面ctrl+4 =! SelColor 选择颜色F12 =GRID GRIDAXES 打开或关闭坐标轴ctrl+F2 =Left 左视图ctrl+F3 =TOP-A 右视图ctrl+F1 =Bottom 仰视图F10 =! MatchLayer 改变层F11 =ChangeToCurrentLayer 转换到当前层按键操作指令Ctrl+Alt+W 设定为线框模式 ! _WireframeViewportCtrl+Alt+S 设定为着色模式 ! _ShadedViewportCtrl+Alt+R 设定为渲染模式 ! _RenderedViewportCtrl+Alt+G 设定为半透明模示 ! _GhostedViewportCtrl+Alt+X 设定为X光框模式 ! _XrayViewportCtrl+F1 最大化 Top 视图 '_SetMaximizedViewportTop Ctrl+F2 最大化 Front 视图 '_SetMaximizedViewport Front Ctrl+F3 最大化 Right 视图 '_SetMaximizedViewport RightCtrl+F4 最大化Perspective 视图'_SetMaximizedViewport PerspectiveCtrl+M 最大化当前视图 '_MaxViewportCtrl+Tab 切换视图无Ctrl+W 框选缩放 '_Zoom _WindowCtrl+Shift+E 缩放至最大范围(当前视图) '_Zoom _ExtentsCtrl+Alt+E 缩放至最大范围(全部视图) '_Zoom _All _ExtentsHome 复原视图改变 '_UndoViewEnd 重做视图改变 '_RedoViewF10 开启控制点 ! _PointsOnF11 关闭控制点 ! _PointsOffCtrl+A 选择全部物体 '_SelAllCtrl+C 复制 '_CopyToClipboardCtrl+X 剪切 '_CutCtrl+V 粘贴 '_PasteCtrl+J 结合 ! _JoinCtrl+T 修剪 ! _TrimCtrl+Shift+S 分割 ! _SplitCtrl+Z 复原 _UndoCtrl+Y 重做 ! _RedoCtrl+G 群组 ! _GroupCtrl+Shift+G 解散群组 ! _UngroupCtrl+B 定义图块 ! _BlockCtrl+I 插入图块 ! _InsertCtrl+H 隐藏 ! _HideCtrl+Alt+H 显示 ! _ShowCtrl+Shift+H 显示选取的物体 ! _ShowSelectedCtrl+L 锁定 ! _LockCtrl+Alt+L 解除锁定 ! _UnlockCtrl+Shift+L 解除锁定选取的物体 ! _UnlockSelected Ctrl+N 新建 ! _NewCtrl+O 打开 ! _OpenCtrl+I 插入 ! _InsertCtrl+S 保存 ! _SaveCtrl+P 打印 ! _PrintF1 帮助 '_HelpF2 指令历史 ! _CommandHistoryF3 物体属性 ! _PropertiesF6 显示/隐藏摄像机 ! _Camera _T oggleF7 显示/隐藏网格 noecho -_Grid _ShowGridF8 开启/关闭正交模式 '_OrthoF9 开启/关闭锁定格点 '_SnapF12 以三维数字化仪取点 '_DigClickEsc 取消选择,或中止操作无Space 代替回车,或重复上次操作无。

犀牛grasshopper命令大全

犀牛grasshopper命令大全

Params:参数Geometry:几何体 Box: 立方体 BRep: 边界表现形式 Circle: 圆 Circular Arc: 圆弧 Curve: 曲线 Geometry: 几何 Line: 线 Mesh: 网格面 Plane: 平面 Point: 点 Surface: 表面Twisted box: 扭曲的立方体 Vector: 矢量Primitive: 数据元素 Boolean: 布尔型 Colour: ARGB色彩 Data: 数据Data Path: 数据分支 Integer: 整型Interval: 区间 Interval2: 二维区间 Number: 双精度型浮点数 Shader: 着色器 String: 字符串型 Time: 日期型Special: 专门的 Bar Graph: 条形统计图 Boolean Toggle: 布尔值切换器 Colour Swatch: 色卡 Custom Preview: 预览自定义 Gradient: 多色彩渐变 Graph Mapper:Number Slider: 数字滑动条 Panel: 数据显示面板Param Viewer: 参数结构查看器 Receiver: 数据接收器 Logic 逻辑Boolean: 布尔运算 Gate And: 并集Gate And Ternary: 三元并集 Gate Majority: Gate Nand: Gate Nor: Gate Not: Gate Or: Gate Or Ternary: Gate Xnor: Gate Xor:List: 列表Dispatch: 分配(把一个列表中的项目分派到两个目标列表中) List Item: 清单项List Length: 列表长度(计算列表的长度) Null Item:空值(测试一个数据项是否无效) Reverse List: 反转列表 Shift List: 移动列表 Sort List: 分类列表 Split List: 分拆列表Sub List: 次级列表(从一个列表中提取子集) Weave: 编排(使用自定义的式样编排输入流的设置)Script: 脚本DotNET C# Script: C#脚本 DotNET VB Script: VB脚本 F1 : 一元函数 F2 : 二元函数 F3 : 三元函数Variable Expression : 多元函数Sets: 集合Cull Nth : 选取元素(在列表中每n个选取元素)Cull Pattern : 选取图案(使用反复的掩码在列表中选取元素) Duplicate Date : 复制数据Fibonacci: 费班纳赛(创建一个费班纳赛序列) Jitter: 振动 Random: Range: 范围 Series: 数列Trees: 设计树Clean Tree: 清理设计树(把数据树中所有空项和无效数据清除掉) Create Branch: 创建分支(创建一个分支访问路径) Decompose Branch: 分解分支(分解分支访问路径)Flatten Tree: “夷平”设计树(把设计树中所有分支路径去除) Graft tree: 续接设计树Merge: 合并(把两个数据流合二为一)Merge Multiple: 合并多项(合并多个输入数据流为一个)Simplify Tree : 简化设计树(通过清除重复的可共享的分支简化设计树) Prune Tree: 修剪设计树(从设计树中去掉小的分支路径) Stream Filter: 数据流过滤器(过滤输入的数据流)Stream Gate: 数据流闸口(向一个指定的输出项重新传入数据流) Tree Branch: 设计树分支(从数据树中取回一个指定的分支) Tree Item: 设计树项目(从数据树中取回一个指定的项目)Scalar:标量Constants:常数:Epsilon: 艾普西龙(四舍五入双精度浮点数) Golden Ratio: 黄金分割比(1.618) Natural logarithm: 自然对数(2.718) Pi: 圆周率(3.14)Interval:区间:Bounds: 界限(围绕数字列表创建一个区间)Bounds 2D: 二维界限(围绕坐标列表创建一个二维的区间) Divide Interval: 均分区间 Divide Interval2: 均分二维区间 Interval: 区间 Interval Components: 分解一维区间 Interval2: 通过两个一维区间创建二维区间 Interval2: 通过四个数字创建二维区间Interval2 Components: 分解一个二维区间到四个数字 Interval2 Components: 分解一个二维区间到独立的一维区间Operators:运算符: Addition: 加法运算 Division: 除法运算 Equality: 等量代换Larger Than: 比较运算(大于) Modulus: 取模运算 Multiplication: 乘法运算 Power: 乘方运算 Similarity: 近似运算Smaller Than: 比较运算(小于) Subtraction: 减法运算Polynomials:多项式:Factorial: 阶乘Log N: 求底数为N的对数Logarithm: 求10为底的对数Natural logarithm: 求以e为底的对数Power of 10: 10的乘方Power of 2: 2的乘方Power of E: E的乘方Trig:三角函数: ArcCosine: 反余弦函数 ArcSine: 反正弦函数 ArcTangent: 反正切函数 Cosine: 余弦函数 Sine: 正弦函数 Tangent: 正切函数Util:公用:Mass Addition: 并集运算 Maximum: 取最大值 Mean: 取平均值 Minimum: 取最小值 Truncate:Vector:矢量:Colour: 色彩Add Colours : 颜色相加AHSV : 创建一个HSV色彩通道(浮点色彩)ARGB : 创建一个RGB 色彩通道ARGB Fractional : 创建一个浮点RGB色彩通道Blend Colours : 混合色彩(在两个颜色中取插值)Create Shader : 创建OpenGL着色器Multiply Colours: 色彩倍增Split AHSV: 将颜色分解为HSV通道Split ARGB: 将颜色分解为RGB通道Subtract Colours: 减去颜色通道Constants: 常数:Unit X : 与X轴平行的矢量Unit Y : 与Y轴平行的矢量Unit Z : 与Z轴平行的矢量XY Plane : XY平面XZ Plane : XZ平面YZ Plane : YZ平面Plane:平面:Align Plane : 调整平面(执行最小的旋转调整平面到矢量指向)Align Planes : Plane : 在XY平面上创建一个平面Plane 3Pt : 过三点创建一个平面Plane Components: 把平面分解到其组成元素Plane Normal: 创建平面法线Rotate Plane : 绕Z轴旋转平面Point:点:Closest Point: 查找最近点Decompose : 把点分解到其组成元素Distance : 计算连个点坐标间的欧几里得距离Grid Hexagonal : 在每六个点之间生成六边形网格Grid Rectangular : 在点之间生成矩形网格Plane CP: 查找离平面最近的点Point Cylindrical: 在柱面坐标上创建点(角度,半径,标高)Point List: 点列表(显示坐标点的顺序列表)Point Oriented: 通过UVW坐标创建点Point Polar: 在球面坐标上创建点Point XYZ: 通过XYZ坐标创建点Pull Point: 把点拉至几何体Text Tag: 在rhino视图中创建文字标签Text Tag 3D: 在Rhino视图中创建三维文字标签Vector:矢量:Amplitude : 振幅(设置矢量的振幅)Angle : 角度(计算两个矢量间的夹角)Cross Product : 矢量叉积Decompose: 把矢量分解到其组成元素Dot Product: 矢量点积(计算连个矢量的数量积)Multiply: 执行矢量和标量的乘法运算Reverse: 矢量反向Summation: 求矢量的和Unit Vector: Vector 2Pt: 在两点间创建矢量Vector Length: 计算矢量的振幅Vector XYZ: 通过XYZ创建矢量Curve:曲线:Analysis:分析:Center: 查找圆或圆弧的圆点和半径Closed: 测试一条曲线是闭合的还是周期性的Curvature: 曲率(在指定的部位上评估一条曲线的曲率) Curvature Graph: 曲率图表(绘制Rhino的曲率图表) Curve CP: 在曲线上查找离指定点最近的点Curve Frame: 曲线骨架(在指定的部位上得到曲率骨架)Discontinuity: 不连续(沿曲线找出所有不连续点) End Points: 提取曲线端点Evaluate Curve: 评估曲线(在指定的部位上评估曲线) Evaluate Length: 评估长度(根据长度上一个特定的因子评估曲线,长度因子可以由曲线单元和法线单元提供,可以通过改变N参数来切换这两种模式) Explode: 炸开(把曲线分解到其组成元素)Horizontal Frame: 水平框架(在曲线上一个特定部位获取一个水平基准的框架) Length: 计算曲线长度Perp Frame: 垂直框架(在曲线上一个特定部位获取一个垂直基准的框架) Planer: 测试曲线平面性Division:分割:Curve Frames: 生成一系列等距曲线骨架 Divide Curve: 等长度分割曲线Divide Distance: 用预设距离的点分割曲线 Divide Length: 用预设长度分割曲线Hortzontal Frames: 产生一系列等位等高的曲线骨架 Perp Frames: 用一系列垂直方向的等位骨架分割曲线 Shatter: 按分段数打碎曲线Primitive:基本曲线:Arc: 圆弧(由基准面、半径、角度区间决定) Arc 3Pt: 过指定三点的圆弧Arc SED: SED圆弧(由起点、终点、切线矢量决定) BiArc: Bi曲线(由端点和切线决定) Circle : 圆(由指定平面和半径决定) Circle 3Pt: 过三个定点的圆Circle CNR: CNR圆(由圆心、旋转轴、半径决定) Ellipse : 椭圆(由指定平面和两个焦点决定) Line : 两点确定的线段Line SDL : SDL线段(由起点、正切方向、长度决定) Polygon : 多边形 Rectangle: 矩形Spline:样条曲线: Bezier Span: 贝塞尔曲线 Curve: 控制点曲线Curve On Surface: 创建一个在指定曲面上的内插点曲线 Interpolate: 内插点曲线Iso Curve: ISO曲线(从曲线上提取的uv曲线) Kinky Curve: 混合式曲线(贝赛尔角点控制曲线) Poly Arc: 复合弧线(由圆弧和线段拼接而成)Poly Line: 复合线(连接各点组成的折线段) Sub Curve: 子曲线(从一条基本曲线上获得)Util:公用: Fillet: 接触点圆角 Fillet Distance: 断点圆角 Flip: 翻转曲线 Join Curves: 结合曲线 Offset: 偏移曲线Project: 投射曲线到复合曲面上(BRep曲面集合,即Rhino中的多重曲面)Surface:曲面:Analysis:分析:Box Components: 立方体元素(把立方体分解到其组成元素) Box Corners: 提取立方体角点BRep Area: 计算BRep(边界表示)的面积BRep Components: 把BRep(边界表示)分解到其组成元素 BRep CP: 在BRep(边界表示)上查找离指定点最近的点 BRep Volune: 计算BRep(边界表示)的体积 BRep Wireframe: 提取BRep(边界表示)物体的线框 Dimensions : 尺寸Evaluate Box: 在UVW空间评估一个立方体Evaluate Surface: 在UV坐标系上评估局部曲面特性Osc Circles: 圆上接触点(在指定的UV坐标系上计算出圆周上和曲面的交点) Principal Curvature: 助率(在指定的UV坐标系上计算出曲面的主曲率) Surface CP : 在曲面上查找离指定点最近的点Surface Curvature: 表面曲率在(指定的UV坐标系上计算出曲面的曲率) Trim Inclusion : 测试被修剪部分以内的UV点Freeform:自由曲面:4Point Surface: 由四点创建曲面Extrude: 沿矢量方向拉伸曲线或曲面Extrude Linear: 沿笔直路径拉伸曲线或曲面Extrude Point: 把曲面或曲线拉伸到指定点Loft: 沿界面曲线方向Offset: 定量偏移曲面Pipe: 沿轨道产生管状曲面Planar Srf: 从一系列边界曲线生成平坦面Rail Revolution: 通过绕轨道旋转生成曲面Revolution: 通过旋转生成曲面Sum Surface: 通过两条边界线生成曲面Surface From Point: 通过网格点生成nurbs曲面Sweep1 : 单轨扫描曲面Sweep2 : 双轨扫描曲面Primitive:基本曲面:Bounding Box: 边界立方体(边界范围由需要被包含的集合体决定) Box 2Pt: 空间上两点决定的立方体Box Plane: 创建与一个矩形所在平面相匹配的立方体 Center Box: 在平面的中心点创建立方体 Cone: 圆锥体 Cylinder: 圆柱体Interval Box: 由基准面和边长创建一个立方体 Plane Srf: 平面 Sphere: 球体Util:公用:Brep Join: 结合Brep(复合曲面)Cap Holes: 封闭所有Brep形(复合曲面)的平面开口Copy Trim: 复制修剪数据(将UV修剪数据从一个曲面复制到另一个) Divide Surface: 产生UV网格点分割曲面 Flip: 翻转曲面法线Isotrim: 等参修剪(在曲面上提取由等参线分割的子集) Retrim: 再修剪(基于其它曲面的三维修剪数据)Surface Frames: 曲面框架(在曲面表面生成UV框架网格) Untrim: 撤销修剪(移除曲面上的所有切割线)Mesh:网格面:Primitive:基本网格面: Mesh: 网格面Mesh Box: 网格面立方体 Mesh Plane: 网格平面 Mesh Quad: 四边形网格 Mesh Sphere: 网格球体 Mesh Triangle: 三角面网格Triangulation:三角细分关系:Mesh BRep: 创建一个与现有BRep几何体相似的网格面 Mesh Surface: 网格表面Settings (Custom): 描绘自定义网格设置 Settings (Quality): 描绘高质量光滑曲面设置 Settings (Speed): 快速描绘不带抗锯齿的曲面设置Util:公用:Face Components: 分解一个单元网格面到其组成元素 Mesh Components: 分解一个网格面到其组成元素Mesh Paint: 指派一个反复的色彩图案到网格面物体Intersect:交集:Boolean:布尔:Region Difference: 差集(适用于平面闭合曲线) Region Intersection: 交集(适用于平面闭合曲线) Region Union: 并集(适用于平面闭合曲线) Solid Difference: 实体差集(适用于BRep 形) Solid Intersection: 实体交集(适用于BRep形) Solid Union: 实体并集(适用于BRep形)Mathematical:数学:BRep | Line: 处理复合曲面和线段的交集问题BRep | Plane: 处理复合曲面和平面的交集问题(计算剖面) Curve | Line: 处理曲线和线段的交集问题 Curve | Plane: 处理曲线和平面的交集问题 Line | Plane: 处理平面和线段的交集问题Plane | Plane: 处理平面和平面的交集问题(计算面面交线) Plane | Plane | Plane: 处理三个平面的交集问题 Surface | Line: 处理曲面和线段的交集问题Physical:物理:BRep | BRep: 处理两个复合曲面的交集问题 BRep | Curve: 处理复合曲面和曲线的交集问题 Curve | Curve: 处理曲线和曲线的交集问题 Surface | Curve: 处理曲面和曲线的交集问题Region:区域:Split with BRep: 用复合曲面分割曲线 Split with BReps: 用多个符合曲面分割曲线 Trim with BRep: 用复合曲面修剪曲线 Trim with BReps: 用多个符合曲面修剪曲线 Trim with Region: 用一个范围修剪曲线 Trim with Regions: 用多个范围修剪曲线XForm:变换:file:///C:\Users\JONES\AppData\Local\Temp\ksohtml\wpsB986.tmp.png Affine:仿射:Orient Direction: 指定方向 Project: 将物体映射到平面Scale: 缩放物体(所有方向均匀缩放) Scale NU: 非均匀缩放物体Shear : 扭曲(按矢量扭曲方向扭曲变换物体)Shear Angle: 角度扭曲(按倾斜角度扭曲物体)Euclidian:欧几里得: Mirror: 镜像 Move: 移动Orient: 转向(将几何体从一个坐标系重映射到另一个坐标系) Rotate: 旋转(在平面内旋转物体) Rotate Axis: 绕轴旋转物体Morph:变形:Blend Box: 在两个平面间建立立方体 Box Morph: 扭曲立方体 Camera Obscura: 针孔照相机 Mirror Curve: 以自由曲线为基准镜像 Mirror Surface: 以自由曲面为基准镜像 Surface Box: 在曲面块上创建扭曲立方体Surface Morph: 将几何体变形到曲面UVW坐标系 Twisted Box: 利用角点创建扭曲立方体。

RhinoScript_入门教程

RhinoScript_入门教程

RhinoScript_入门教程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脚本引擎技术介绍

Rhino脚本引擎技术介绍

Rhino脚本引擎技术介绍Rhino是一个开源的脚本引擎框架,可以运行类似javascript语法的脚本,并可以调用java的方法,并可以嵌入Java执行,脚本修改后不需要重启JVM进程,就可以使用解析或编译方式执行,非常方便。

由于Rhino脚本中可以写入任何表达式和javacript程序,既可以进行条件规则的判断,也可以进行各类简单或复杂的计算,因此是BPS中以前参与者规则和连线规则的一个良好替代方案,在某银行新一代流程平台中,我们使用了Rhino脚本引擎来替代以前基于Antlr词法分析器的规则引擎。

由于Rhino的灵活和强大的功能,从JDK1.6开始,JDK将Rhino开源软件纳入JDK内部API中,形成了以javax.script为包名的脚本引擎API。

使用Rhino有如下好处:1、实现简单,灵活,功能强大,对比以前BPS规则用的Antlr词法分析器,实现更加简单,不需要进行规则文件编辑和代码生成(而且对不同规则需要生成多套代码,很不灵活),脚本引擎可以进行几乎任何运算或Java调用,能满足某银行新一代流程平台的要求。

2、即时生效,修改脚本后不用重启Java进程就可以立即生效运行。

3、有编译和解析两种运行方式,编译方式在大量并发的调用情况下性能更好。

4、轻量,JDK内置,不需要引入其他第三方jar。

下面主要介绍JDK内置的Rhino脚本引擎,以及其javax.script的API用法。

翻开JDK1.6的javax.script的API,可以看到脚本API中只包含6个接口和6个类(其中一个还是一个异常),整个API非常简单易用。

主要的类图如下(类图做了一些省略,对一些不常用的类和接口省略了,并只显示了主要的方法):Bindings接口可以理解为上下文,可以往上下文中设置一个Java对象或通过key获取一个对象,它有一个实现类,SimpleBindings,内部就是一个map。

上下文是给脚本引擎执行脚本时使用的,脚本引擎在执行脚本的时候,用到上下文中放置的Java对象,执行其方法,使用其属性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

建筑形态设计常用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。

相关文档
最新文档