cityengine切割函数split语法
CityEngine规则建模-常用函数和语法 PPT
e:边 | v:点} selector (keyword) front, back, left, right, top, bottom 前后左右上下(模型轴
系),常用 vertical(垂直), horizontal(水平), aslant(有坡度的),
规则---随机规则
形式: PredecessorShape --> percentage%: Successor1 percentage%: Successor2 ... else: SuccessorN
nutant
大家有疑问的,可以询问和交流
可以互相讨论下,但要小声点
常用函数—— p
Lot--> extrude(10) pModel pModel--> p(f){side: ColorsSideFacade | top: ColorfTopFacade}
常用函数——color
功能:给模型着色
注:符号“ * ”代表重复执行,“ ~ ”代表一个近似值
练习:简单规则的编写
练习:简单规则的编写
参考规则
Lot--> extrude(10) extrudeModel
extrudeModel--> p(f){side:SplitModel | top: ColorfTopFacade }
特点:与无参函数比较类似,其结果返回给模型标识
示例规则: Lot--> extrude(10) pModel
规则---带参规则
形式: PredecessorShape(Parameters) --> Successor
特点:与有参函数比较类似,根据需要传递改变后继模型外 观的信息
split方法
split方法在JavaScript中,split()方法是一个非常常用的字符串方法,它可以将一个字符串拆分成一个字符串数组,然后返回这个数组。
在本文中,我们将详细介绍split()方法的用法和一些实际应用场景。
首先,让我们来看一下split()方法的基本语法:```javascript。
string.split(separator, limit)。
```。
这里,string是要进行拆分的字符串,separator是用来指定拆分位置的分隔符,limit是一个可选参数,用来限制返回的数组的长度。
接下来,我们来看一些实际的例子,来更好地理解split()方法的用法。
例1,使用空格拆分字符串。
```javascript。
var str = "Hello world";var arr = str.split(" ");console.log(arr); // ["Hello", "world"]```。
在这个例子中,我们使用空格作为分隔符,将字符串"Hello world"拆分成了一个包含两个元素的数组。
例2,使用逗号拆分字符串。
```javascript。
var str = "apple,banana,orange";var arr = str.split(",");console.log(arr); // ["apple", "banana", "orange"]```。
在这个例子中,我们使用逗号作为分隔符,将字符串"apple,banana,orange"拆分成了一个包含三个元素的数组。
除了使用单个字符作为分隔符外,我们还可以使用正则表达式来进行更复杂的拆分操作。
例3,使用正则表达式拆分字符串。
CityEngine建模示例教程6:BasicShapeGrammar之Part1:简单建筑物
CityEngine建模⽰例教程6:BasicShapeGrammar之Part1:简单建筑物本着从⽰例中学习使⽤规则建模的⽬的,学习⼀下CityEngine中的教程。
前⼏个教程是熟悉软件以及如何使⽤规则的,第六个教程是开始使⽤规则建模,并给建筑物贴纹理的。
因此⼀边学习教程6中的步骤,⼀边查看其中创建规则的CGA具体语法,希望我们都能从教程中有很多收获。
前提要了解如何创建规则和应⽤规则。
本次学习的教程为Tutorial_06_Basic_Shape_Grammar__2011_1,其中包含四部分,分别为:1.构建简单建筑物;2.为简单建筑物贴纹理;3.添加LOD;4.建筑物属性随机变化。
本节学习该教程中的第⼀部分。
本节学习最终要构建⼀个如下图的建筑物,该建筑物有地⾯⼀楼和其他楼层,⼀楼的正⾯有⼀个⼊⼝的门,其他窗⼝都使⽤的是⼀个提前做好的OBJ模型。
下⾯开始创建规则进⾏建模:为了更好的理解规则,我们⾃⼰创建⼀个新的规则,按照教程中的语句进⾏规则的书写。
1. 在规则⽂件的最开始处定义建筑的属性(也可以放在规则⽂件的其他位置)。
在CGA⽂件中,这些属性将对整个规则⽂件产⽣作⽤。
这些属性将显⽰在属性查看器(Inspector)中,可通过属性查看器修改这些属性。
attr groundfloor_height = 4 //地⾯⼀楼的⾼度attr floor_height = 3.5 //其他楼层的⾼度attr tile_width = 3 //将楼⾯按块划分的宽度attr height = 11 //楼⾼attr wallColor = "#fefefe" //墙⾯颜⾊2. 教程中构建的窗户是使⽤的⼀个已经建好的窗户模型window.obj,这个⽂件存放在assets⽂件夹中,使⽤之前也要先定义出来。
window_asset = "facades/window.obj" //指定obj⽂件3. 下⾯我们定义第⼀条规则为Lot. 在属性检查器中,该规则被指定为开始规则。
Split 函数详解
A = Split(intB, Space(1), -1, 1)
For i = 0 To UBound(A, 1)
Debug.Print A(i); " ";
s = s + A(i)
Next i
Debug.Print ",10个学生的平均成绩是 :" & s / 10
count 可选的。要返回的子字符串数,-1表示返回所有的子字符串。
compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。
语法
Visual Basic(声明)
Public Function Split ( _ ParamArray separator As Char() _) As String()
End If
Next s
End Sub 'Main
End Class 'SplitTest
' The example displays the following output to the console:
' This
' is
' a
' list
Visual Basic (用法)
Dim instance As StringDim separator As Char()Dim returnValue As String()returnValue = instance.Split(separator)
C#
public string[] Split( params char[] separator)
对字符串进行分割的方法
对字符串进行分割的方法字符串是编程中常用的数据类型之一,它由字符组成的有限序列。
在处理字符串时,常常需要根据特定的规则对字符串进行分割,以得到有用的信息或进行进一步的处理。
本文将介绍几种常见的字符串分割方法。
一、使用split()函数进行分割split()函数是字符串的内置函数,可以将字符串按照指定的分隔符进行分割,并返回一个列表。
例如,对于字符串"Hello World!",可以使用空格作为分隔符进行分割:```pythons = "Hello World!"result = s.split(" ")print(result) # 输出结果为 ['Hello', 'World!']```在使用split()函数时,需要注意以下几点:1. 分隔符可以是一个字符串,也可以是多个字符串组成的列表;2. 如果不指定分隔符,则默认使用空格进行分割;3. 如果分隔符在字符串中不存在,则返回原字符串;4. 如果分隔符在字符串中连续出现多次,则分割结果中将会出现空字符串。
二、使用正则表达式进行分割正则表达式是一种描述字符串规则的语言,可以用于字符串的匹配、查找和分割。
在Python中,可以使用re模块来操作正则表达式。
下面是一个使用正则表达式进行分割的例子:```pythonimport res = "Hello,123World!456"result = re.split(r"\d+", s)print(result) # 输出结果为 ['Hello,', 'World!']```在上述例子中,使用正则表达式"\d+"作为分隔符,\d表示匹配任意数字,+表示匹配一次或多次。
因此,字符串中的数字会被作为分隔符进行分割。
三、使用切片操作进行分割切片操作是Python中对序列类型进行分割的一种方式,可以通过指定起始位置和结束位置来截取字符串的一部分。
cityengine导入规则的方法
cityengine导入规则的方法CityEngine是一种专业的城市建模软件,它可以帮助用户快速创建和修改城市景观。
CityEngine具有强大的导入规则功能,可以将外部数据导入到软件中,并根据指定的规则进行自动化建模。
在本文中,我们将介绍如何使用CityEngine的导入规则功能,以及一些常用的导入规则方法。
在使用CityEngine之前,我们需要准备一些外部数据作为导入的对象。
这些外部数据可以是地图、建筑模型、道路网络等。
CityEngine支持导入多种格式的文件,包括Shapefile、OBJ、FBX等。
我们可以根据项目的需求选择合适的外部数据格式。
在导入外部数据之前,我们需要先创建一个新项目。
在CityEngine的主界面中,点击“New Project”按钮,然后选择一个合适的项目文件夹,并为项目命名。
创建完成后,我们可以在项目文件夹中看到一些默认的文件,如“scenes”文件夹和“rules”文件夹。
我们将在“rules”文件夹中编写导入规则。
导入规则是用来告诉CityEngine如何读取并解析外部数据的指南。
我们可以在导入规则中定义对象的属性、位置、旋转、缩放等信息。
导入规则使用CGA语言编写,CGA语言是CityEngine的一种脚本语言,用于描述建筑和城市景观的规则和约束。
要创建一个导入规则,我们可以在“rules”文件夹中创建一个新的CGA脚本文件。
我们可以使用文本编辑器打开这个文件,然后开始编写导入规则。
导入规则通常由三个部分组成:导入声明,解析规则和生成规则。
导入声明用于指定导入的文件路径和格式,解析规则用于定义如何解析外部数据,生成规则用于生成建模结果。
在导入声明部分,我们需要使用“import”关键字来指定要导入的文件。
例如,如果我们要导入一个名为“building.obj”的OBJ文件,可以使用以下代码:```import building = "path/to/building.obj"```在解析规则部分,我们可以使用一些预定义的函数和操作符来解析外部数据。
基于CityEngine与CGA规则构建3D室外及室内精细模型的研究
基于CityEngine与CGA规则构建3D室外及室内精细模型的研究【摘要】利用2013年最新版安徽建筑大学南校区土地利用测绘CAD图纸为GIS基础数据,借助参数化三维设计平台ESRI CityEngine,以校标志性建筑物大学生活动中心设计为例,通过其特有的CGA语法规则,实现复杂建筑物精细建模,包括室外及室内场景的构建。
弥补人们片面认为CityEngine除能快速高效批量建模之外难以构建精细模型的不足,旨在拓展参数化建模的应用领域。
【关键词】CityEngine;参数化;CGA规则;3D;精细建模1.引言智慧城市是数字城市与物联网相结合的产物,而CityEnine则是创造鲜活的交互式三维数字城市的首选软件,但如何构建逼真的的城市建筑物模型,则是很多人一直研究的课题。
2008年7月,第一个商业版本的CityEngine2008发布之后,CityEngine也进入了三维建模软件的行列,2011年7月被ESRI公司正式收购后,在国内也逐渐被三维设计工程师所熟知。
Esri CityEngine是三维数字城市建模的首选软件,其主要特点之一基于规则批量建模的优点也被广泛运用于数字城市、城市规划、轨道交通、电力、管线、建筑、国防、仿真、游戏开发和电影制作等领域。
随着城市化的快速发展,城市建筑物的外观也越来越复杂,三维模型的构建也相应的要求贴近真实,因此如何快速批量构建复杂的精细建筑物,也成为当前亟需解决的问题。
虽然CityEngine 较之传统三维软件3D max,SketchUp 等大大解放了手动建模,但对于复杂的精细建模目前依然是无人问津。
陈晓秋[1] 对道路参数化进行了初探,施天越[2]对CityEngine在城市设计应用中进行了理论研究,吕永来[3]对基于CityEngine CGA的三维简单建筑建模进行了阐述,李娟[4]对基于参数化建模的三维城市设计方法进行了探讨。
对于参数化CityEngine 三维设计,目前研究均停留在理论和简单三维建筑或道路的建模,未涉及到对于复杂建筑物如何进行精细建模,另外,在数字城市建设中用CityEngine进行设计和分析,会减少成本和时间。
Excel的VBA中Split函数的用法教程
Excel的VBA中Split函数的用法教程一、概念在Excel的VBA(Visual Basic for Applications)中,Split函数是一个用于将字符串拆分为子字符串数组的函数。
它可以根据指定的分隔符将字符串分割成多个部分,并将这些部分存储在一个数组中。
二、功能Split函数的主要功能是将一个字符串按照指定的分隔符进行拆分,返回一个包含所有子字符串的数组。
这样,我们可以通过访问数组中的元素来获取拆分后的各个部分。
三、语法Split函数的语法如下:Split(expression, delimiter, [limit], [compare])参数说明:expression:必需,要拆分的字符串表达式。
delimiter:必需,用于拆分字符串的分隔符。
可以是一个字符串或正则表达式。
limit:可选,指定返回的子字符串数组的最大长度。
如果省略该参数,则会返回所有子字符串。
compare:可选,指定比较的方式。
可以是一个数值或一个字符串。
如果省略该参数,则默认使用二进制比较。
四、案例下面是一个使用Split函数的简单示例:Sub SplitExample()Dim inputString As StringDim outputArray() As StringDim i As Integer'定义要拆分的字符串和分隔符inputString = "苹果,香蕉,橙子,葡萄"Dim delimiter As Stringdelimiter = ","'使用Split函数拆分字符串outputArray = Split(inputString, delimiter)'遍历数组并输出每个子字符串For i = 0 T o UBound(outputArray)Debug.Print outputArray(i)Next iEnd Sub在这个例子中,我们将一个包含水果名称的字符串使用逗号作为分隔符进行拆分,并将拆分后的子字符串逐个输出。
Excel的Split功能的应用技巧
Excel的Split功能的应用技巧在日常的工作中,我们经常需要对大量数据进行处理和分析。
Excel 作为一款功能强大的电子表格软件,为我们提供了许多方便和高效的数据处理工具。
其中,Split功能是Excel中一个非常实用的函数。
本文将介绍Split功能的应用技巧,以帮助读者更好地利用Excel进行数据处理和分析。
一、Split功能的简介Split功能是Excel中的一个文本函数,其主要作用是根据指定的分隔符将一个文本字符串分割成多个部分,然后将这些部分放入一个数组中返回。
在进行数据处理和分析时,我们经常会遇到需要将一个字符串按照某种规则进行拆分的情况,而Split功能正是可以帮助我们实现这一目的。
二、Split功能的语法Split函数的语法如下:Split(要拆分的字符串, 分隔符, [子字符串个数], [比较模式])参数说明:1. 要拆分的字符串:表示需要进行拆分的文本字符串;2. 分隔符:表示用于拆分字符串的分隔符,可以是一个字符或者一段文本;3. 子字符串个数:表示期望返回的子字符串个数,默认为-1,表示返回所有拆分后的部分;4. 比较模式:表示指定字符串比较的方式,默认为0,表示使用二进制方式比较,可以选择1代表文本比较。
三、Split功能的应用实例下面通过几个具体的示例来演示Split功能的应用。
示例1:拆分姓名假设我们有一个包含姓名的文本列,其中名字和姓氏由空格分隔。
我们想要将该列中的姓名拆分成名字和姓氏两列。
假设原始数据如下:姓名李明张三王小红...我们可以使用Split功能来实现这一目的。
具体操作如下:1. 在B列输入函数表达式:=SPLIT(A2," ")2. 拖动B2单元格的右下角下拉填充至整个B列3. 即可得到拆分后的名字列表示例2:拆分电子邮件地址假设我们有一个包含电子邮件地址的文本列,其中用户名和域名由@符号分隔。
我们希望将该列中的电子邮件地址拆分成用户名和域名两列。
CityEngine的规则文件简介
CityEngine的规则⽂件简介
这是⼀个我个⼈写的⼀个很简单的建筑案例,如图左边的现代建筑
attr floorH = 5
Lot -->
extrude(world.y,60) Shape
comp(f){side: Facade |top: Roof}
Facade-->
split(y){~8:grondfloor|{~1:X|floorH:Floor}*|~1:X}
grondfloor-->
split(x){{2:X|~6:door}*|2:X}
Floor-->
split(x){{~1:X|~5:Window}*|~1:X}
Window-->
i("facade/windows/win.single.05.sashwindow.obj")
t(0,0,-0.2)
Roof--> offset(0.5) Roofex
Roofex-->comp(f){inside:X|border:Roofout}
Roofout-->extrude(-2.5)
规则⽂件也⼀并送给⼤家,希望对cityengine有兴趣的朋友能够⼀起交流。
只要有⼀定的逻辑,CE都可以通过它的命令能够帮您实现。
另外CE对外界的模型也有很好的⽀持,当然贴图也可以很好的⽀持
相对于⽬前市⾯上的数字城市建模软件,CE最⼤的特点就是提供了⼀个建筑的多个属性值供您随时更改,更加强调的就是让模型更加数字化,⽽不再是外界的模型导进来是什么样就是⼀个定值了。
CityEngine规则建模-常用函数和语法
常用函数——extrude
功能:挤出一个高度,使模型从面状变为体块
概要:
• extrude(height) • extrude(axisWorld, height)
参数说明:
• height:拉伸的高度。默认沿模型的Y轴拉伸 • axisWorld:设定拉伸轴线,使用世界坐标系的轴作为拉伸轴线。其可选参数为:
规则语法
规则(函数)
• 标准规则 • 带参规则 • 随机规则 • 条件规则 • 递归规则
属性 自定认函数 注释(comments)
规则---标准规则
形式:
• PredecessorShape --> Successor
特点:与无参函数比较类似,其结果返回给模型标识
示例规则: Lot-->
参数说明:
• s (string):文本类型的颜色值(16进制)例如:"#rrggbb" • r,g,b (float,float,float):浮点类型的颜色值,每个值的取值在0到1.0之间
常用函数——color
Lot-->
• extrude(10) CompModel
CompModel-->
注意2:具有不同参数个数的带参规则(前缀一样)比较类似于函数的重载,在 CityEngine认为这样的规则为不同的规则
规则---带参规则
示例规则: Lot -->
• color(1,0,0) • Footprint(20)
Footprint(height)-->
• extrude(height) • Envelope.
• comp(f){side: ColorsSideFacade | top: ColorfTopFacade}
split命令参数及用法详解
split命令参数及⽤法详解---linux分割⽂件命令Split:按指定的⾏数截断⽂件格式: split [-n] [name]参数说明:-n: 指定截断的每⼀⽂件的长度,不指定缺省为1000⾏file: 要截断的⽂件name:截断后产⽣的⽂件的⽂件名的开头字母,不指定,缺省为x,即截断后产⽣的⽂件的⽂件名为xaa,xab....直到xzz例⼀:split -55 myfile ff将⽂件myfile依次截断到名为ffaa,ffab,ffac.....的⽂件中,每⼀⽂件的长度为55⾏例⼆:PostgresSQL ⼤型数据库备份与回存:因 Postgres 允许表格⼤过你系统档案的最⼤容量,所以要将表格 mp 到单⼀的档案可能会有问题,使⽤ split 来进⾏档案分割。
% pg_ dbname | split -b 1m - filename.dump.例三:想给⼀个朋友传⼀个⼤视频,有⼏百M,尝试多种传输办法失败后,最后想到的是把视频切开⼀⽚⽚“邮递”过去给他,让它⾃⼰组装起来吧。
[root@pps public_rw]# -lh RevolutionOS.rb-rwx------ 1 hoho hoho 276M 2005-09-09 RevolutionOS.vb将将这个276M⽂件分割成20M的⼩⽂件,⽂件分割操作如下:⽤法:split [选项] [输⼊ [前缀]][root@pps public_rw]# split -b 20m RevolutionOS.rmvb RevOS_part_[root@pps public_rw]# ls -lh总计 552M-rwx------ 1 hoho hoho 276M 2005-09-09 RevolutionOS.rmvb-rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_aa-rw-r--r-- 1 root root 20M 03-19 17:59 RevOS_part_ab...-rw-r--r-- 1 root root 20M 03-19 18:00 RevOS_part_am-rw-r--r-- 1 root root 16M 03-19 18:00 RevOS_part_an“-b 20m”指定分割⽂件的⼤⼩为20M,⽂件后⾯的“RevOS_part_”是分割⽂件的前缀,最后的是16M的“剩余”⽂件。
cityengine切割函数split语法
概要split(splitAxis) { size1 : operations1 | size2 : operations2 | ... | sizen-1 : operationsn-1 } split(splitAxis) { size1 : operations1 | size2 : operations2 | ... | sizen-1 : operationsn-1 }* split(splitAxis, adjustSelector) { size1 : operations1 | ... | sizen-1 : operationsn-1 }split(splitAxis, adjustSelector) { size1 : operations1 | ... | sizen-1 : operationsn-1 }*参数splitAxis (selstring):有三个取值:X,Y,Z,splitAxis表示沿哪个轴切割,XYZ轴系为模型轴系adjustSelector:有两个取值:adjust和noAdjust,默认为adjust,adjust表示切割出来的新几何体自动调整scope范围(几何体外接最小长方体)为新几何体的scope,noAdjust表示新几何体的scope保持为切割前的scopesize (float):切割的宽度,根据前缀的不同具有不同的含义,沿轴的宽度有以下不同的解释1.没有前缀,size代表绝对宽度,优先级高2.带有前缀',相对值,值应该在0 到1 之间,超过了没有意义,取整体宽度的百分比,优先级高3.带有前缀~,取近似值,根据前缀后的值,在带有相同前缀的值间进行比较。
Size 值的大小本身没有绝对意义,取同类型比较的百分比。
这种类型的宽度总值取前两种类型分割后的剩余值。
优先级低operations:执行在新产生的模型上的一系列操作* :重复{ }中的分割内容注意相同优先级,在前面的优先程度高。
CityEngine规则建模-常用函数和语法
• s (string):文本类型的颜色值(16进制)例如:"#rrggbb" • r,g,b (float,float,float):浮点类型的颜色值,每个值的取值在0到1.0之间
常用函数——color
Lot-->
• extrude(10) CompModel
CompModel-->
常用函数——comp
Lot-->
• extrude(10) • CompModel
CompModel-->
• comp(f){side: ColorsSideFacade | top: ColorfTopFacade}
常用函数——color
功能:给模型着色
概要:
• color(s) • Color(r,g,b)
注意:条件语句外不能出现任何语句
规则---条件规则
示例规则 Lot -->
• case geometry.area<400:color(1,0,0) Footprint(20) • case geometry.area>1000:color(0,1,0) Footprint(30) • else:color(0,0,1) Footprint(50) •
常用函数——extrude
功能:挤出一个高度,使模型从面状变为体块
概要:
• extrude(height) • extrude(axisWorld, height)
参数说明:
• height:拉伸的高度。默认沿模型的Y轴拉伸 • axisWorld:设定拉伸轴线,使用世界坐标系的轴作为拉伸轴线。其可选参数为:
• 行内注释:行内注释也是通过“/*……*/”来实现的。示例如下:
Python之split()函数
Python之split()函数在Python的⾼级特性⾥有切⽚(Slice)操作符,可以对字符串进⾏截取。
Python还提供split()函数可以将⼀个字符串分裂成多个字符串组成的列表。
split()的语法挺简单的:str.split(sep, maxsplit).sep 是分割符,不写分割符时表⽰所有的空字符,包括空格、换⾏(\n)、制表符(\t)等,有分隔符时,以该分隔符进⾏分割。
maxsplit是分割次数。
eg:不写分隔符L = '100 200 300\n400\t500'print(L.split())# 执⾏结果:['100', '200', '300', '400', '500']结论:当不带参数时,默认是以空字符作为参数,不管空字符在哪,或者有⼏个全部被分割了!eg:分割1次L = '100 200 300\n400\t500'print(L.split('', 1))# 执⾏结果:['100', '200 300\n400\t500']eg:以''+''号为分割符L = '+100+200+300+400+500+'print(L.split('+'))# 执⾏结果:['', '100', '200', '300', '400', '500', '']结论:从左往右分割,遇到⼀个'+'号分割⼀次,左边的部分分割完做为list的⼀个元素,直到分割完⼀个重量级的例⼦:str='hello world[]python'print(str.split('['))print(str.split('[')[1].split(']'))print(str.split('[')[1].split(']')[0].split('.'))#执⾏结果:#['hello world', ']python']#['', 'python']#['www', 'zhangguoli', 'cn']。
Cityengine中cga示例(1)
Cityengine中cga⽰例(1)⼏何凸形的细分1、split 切割Lot-->extrude(20) //拉伸BuildingBuilding -->split(y){~2:ceng}* //切割ceng-->color(0,1,0) //颜⾊设为绿⾊2、comp 拆分Lot-->extrude(20) //拉伸BuildingBuilding -->comp(f){top : A | side : B } //拆分A-->color(0,1,0) //颜⾊设为绿⾊B-->color(1,0,0)可以拆分为idx、front、backi、left、right、top、bottom、vertical(垂直)、horizontal(⽔平)、aslant(倾斜)、nutant(下垂的)、side、all、border、inside、eave(屋檐)、hip(屋脊)、valley(屋顶排⽔沟)、ridge(脊)等。
3、offset 偏移Lot-->offset(3,border)//border保留放⼤或缩⼩的部分,还可以是all和insert,即全部和内部AA-->color(0,1,0)4、setback 后退Lot-->setback(3){side: A}A-->color(0,1,0)setback和offset可以达到相似的效果,但原理不同,细看的话可以看到差异。
5、shapeLLot-->shapeL(2,3){shape: A | remainder : B}A-->color(0,1,0)B-->color(1,0,0)6、shapeULot-->shapeU(2,3,4){shape: A | remainder : B}A-->color(0,1,0)B-->color(1,0,0)7、shapeOLot-->shapeO(2,3,4,5){shape: A | remainder : B}A-->color(0,1,0)B-->color(1,0,0)8、scatter 随机点Lot-->scatter(surface,50,uniform) { tree }//uniform是均匀分布,如果是gaussian则为⾼斯分布;50代表⽣成的数量tree-->i("alleyTree_5_v1.obj")上⾯的scatter中surface表⽰在模型的表⾯上⽣成,另外的还有volume和scope,volume在模型封闭的区域内⽣成,如果不封闭在模型的表⾯⽣成;scope表⽰在模型的scope范围内⽣成。
split方法
split方法split方法是javascript中所拥有的一种常用的字符串操作的方法,它可以实现字符串的拆分与分割。
换句话说,它可以从一个字符串中提取子字符串,并将其存储到一个字符串数组中以便于更好的处理。
通过该方法,可以让我们更方便的调用每个字符串。
那么,如何使用split方法呢?split方法可以在字符串上调用,并且它有两个参数,第一个参数是分隔符,也就是定义将字符串分割的字符,这个参数是必须要传递的,且可以是正则表达式。
而第二个参数是限定分割的次数,如果设置为0,则表示不限制次数,一直分割到字符串的末尾,这个参数是可选的。
要实现split方法,需要先获得要拆分的字符串,然后调用该方法,传入第一个参数,即定义将字符串分割的字符,若不需要限定分割次数,则可以填写第二个参数。
最后,调用该方法时,可以获得一个字符串数组,这个数据存储了拆分后的结果。
举例来说,例如有一个字符串Apple,Banana,Orange,如果想要将每个单词以逗号分割,可以使用split方法,将这个字符串传入split()方法中,并将第一个参数设定为逗号,这时即可获得一个包含Apple,Banana,Orange三个字符串的字符串数组。
除此之外,split方法还可以作为一种字符串格式化的方法使用,例如,如果想要将一个单词首字母大写,可以使用split方法拆分字符串,然后将每个单词保存到一个字符串数组中,再利用toUpperCase()方法将每个字符串的首字母转换为大写,最后将这些字符串重新拼接起来,即可实现格式化的字符串。
另外,split方法也可以用来检查字符串是否包含某一元素,即当某一元素出现在字符串中时,可以使用split方法将字符串拆分,并使用include方法检测数组中是否包含某一元素。
总之,split方法是javascript中一种重要的字符串操作的方法,它可以实现字符串的拆分与分割,可以作为一种格式化字符串的方式使用,也可以检测字符串中是否包含某一元素,同时还能够把字符串转换为数组,从而让我们更好的调用每个字符串的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
概要
split(splitAxis) { size1 : operations1 | size2 : operations2 | ... | sizen-1 : operationsn-1 } split(splitAxis) { size1 : operations1 | size2 : operations2 | ... | sizen-1 : operationsn-1 }* split(splitAxis, adjustSelector) { size1 : operations1 | ... | sizen-1 : operationsn-1 }
split(splitAxis, adjustSelector) { size1 : operations1 | ... | sizen-1 : operationsn-1 }*
参数
splitAxis (selstring):有三个取值:X,Y,Z,splitAxis表示沿哪个轴切割,XYZ轴系为模型轴系
adjustSelector:有两个取值:adjust和noAdjust,默认为adjust,adjust表示切割出来的新几何体自动调整scope范围(几何体外接最小长方体)为新几何体的scope,noAdjust表示新几何体的scope保持为切割前的scope
size (float):切割的宽度,根据前缀的不同具有不同的含义,沿轴的宽度有以下不同的解释
1.没有前缀,size代表绝对宽度,优先级高
2.带有前缀',相对值,值应该在0 到1 之间,超过了没有意义,取整体宽度的百分比,优先级高
3.带有前缀~,取近似值,根据前缀后的值,在带有相同前缀的值间进行比较。
Size 值的大小本身没有绝对意义,取同类型比较的百分比。
这种类型的宽度总值取前两种类型分割后的剩余值。
优先级低
operations:执行在新产生的模型上的一系列操作
* :重复{ }中的分割内容
注意
相同优先级,在前面的优先程度高。
先满足优先级程度高的需求
如果仅有带前缀~的,那么后面的值按照真实值进行计算,如果整个要分割的长度还有剩余,那么均分到每一个小块
示例
沿X轴切割,调整scope
[plain]view plain copy
1.Lot -->
2. extrude(16)
3. split(x) { 10 : A.|20 : B.| 30 : C.}
沿X轴切割,不调整scope
[plain]view plain copy
1.Lot -->
2. extrude(16)
3. split(x,noAdjust) { 10 : A.|20 : B.| 30 : C.}
相对尺寸切割
[plain]view plain copy
1.Lot -->
2. extrude(16)
3. split(x) { '0.2 : A|'0.3 : B| '0.5 : C}
4.A-->
5. color("#ff0000")
6.B-->
7. color("#00ff00")
8.C-->
9. color("#0000ff")
注意:当切割范围超出几何体尺寸范围,则超出尺寸的切割操作无效如若设置第二次切割的尺寸比例因子为0.8,则第三次切割操作无效[plain]view plain copy
1.Lot -->
2. extrude(16)
3. split(x) { '0.2 : A|'0.8 : B| '0.5 : C}
4.A-->
5. color("#ff0000")
6.B-->
7. color("#00ff00")
8.C-->
9. color("#0000ff")
绝对尺寸切割与近似尺寸切割
设置近似切割尺寸为~10,两个绝对切割尺寸也为10 [plain]view plain copy
1.Lot -->
2. extrude(16)
3. split(x) {~10 : A|10 : B| 10 : C}
4.A-->
5. color("#ff0000")
6.B-->
7. color("#00ff00")
8.C-->
9. color("#0000ff")
注意:虽然近似切割尺寸设置为10,但因为它是一个近似值,优先级低,在绝对切割尺寸完成后,自动调整尺寸
设置两个近似切割尺寸分别为~2和~1,绝对切割尺寸为10
[plain]view plain copy
1.Lot -->
2. extrude(16)
3. split(x) {~1 : A|10 : B| ~2 : C}
4.A-->
5. color("#ff0000")
6.B-->
7. color("#00ff00")
8.C-->
9. color("#0000ff")
注意:在绝对切割尺寸优先完成后,还存在两个近似切割,在存在多个近似切割的情况下,根据近似切割尺寸与同类型尺寸的百分比确定切割范围,如图,第一个近似切割尺寸占所有近似切割尺寸三分之一,第二个近似切割尺寸占所有近似切割尺寸三分之二
重复绝对切割
[plain]view plain copy
1.Lot -->
2. extrude(16)
3. split(x) {5 : A|10 : B| 15 : C}*
4.A-->
5. color("#ff0000")
6.B-->
7. color("#00ff00")
8.C-->
9. color("#0000ff")
注意:如图,绝对切割执行了3次完整地切割和1次不完整的切割,直到超出尺寸为止
重复近似切割
[plain]view plain copy
1.Lot -->
2. extrude(16)
3. split(x) {~5 : A|~10 : B| ~15 : C}*
4.A-->
5. color("#ff0000")
6.B-->
7. color("#00ff00")
8.C-->
9. color("#0000ff")
注意:如图,虽然尺寸与绝对切割尺寸相同,但近似切割并没有出现不完整切割的现象,因为近似切割会自动调整尺寸保证完整切割。