版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python+PythonforRhinoceros+PythonforProgrammingAllowsDesignersmoreFromGrasshopperto从Grasshopper到为什么(建筑,景观,规划)设计师也要学习编程语言?为什么学习编程语言会选择ython?设计者在没有接触过任何编程语言辅助设计情况下,面对突然的“新”领域,必然会质疑。然而没有任何事物的出现是一下子的,为什么要学习Python也是从逐渐的需求开始。大部分设计者已经开始使用节点可视化编程语言Grasshopper来协助设计,为设计的创造性带来无限的可能,并解决各类设计过程中遇到的问题,但是节点可视化编程本身的特点,静态的数据处理方式一定程度上限制了编程语言对数据结构处理的能力,然而这完全可以从Python动态更加自由处理数据的方法中获得弥补;另外Grasshopper逐渐扩大的组件群体虽然尽可能满足各类设计的需求但是仍然无法与ython的模块库相比较,从math、random、dcimal、numbers、fractions到abc、array、bisct、Collections、unctools等为ython编程语言带来无限的潜力,同时包括ython作为语言嵌入到三维模型软件从软件平台获取的模块;再者Python从底发明,第一个公开版于1991年以来,因为受到广泛应用领域的支持,日益完善并不断地持续发展,相对ython语言,Grashopper节点可视化编程语言从2000之后开始发展,面对的主要是细分的设计领域,同时Grashopper出现的目的是为了减少设计者学习纯粹语言的负担,能够快速使用组件连线编写程序,并获得实时的几何形式变化,然而事情总是有两个方面,在方便设计者的同时也减弱了纯粹语言本身所应具有的语句魔力。解决ython转向设计领域的使用,又解决Grashopper节点可视化编程的限制,最合适的方法不是强调某一个方面,而是将二者结合,Rhinoceros平台嵌入了ythonythonScript,Gashopper也嵌入了hython,可以完美的实现ython的不同接口方式。如何摆正ython在设计领域的地位?如何正确的定位ython的使用模式?从Gahopper、Rhinoceos、cS到MAYA,的设计领域软件平台对Python语言的支持,使得设计者不用担心不得不学习各类不同编程语言来满足不同平台的需要,Python作为语言具有支持各类平台的趋势,同时ython语言本身的发展规模和可预见的持续发展潜力以及语言简洁易学的特点,必然成为设计者首选的语言,而不是C#又或者VB。设计者学习Python的目的是为了更好地辅助设计,解决各类设计上遇到的问题和探索更广阔的设计形式领域,而不是使用编程语言来代替的设计,那些仅仅依靠编程语言玩味形式而又缺失基本的艺术审美层次的设计只会抹杀编程语言本应该处理解决设计问题的作用。除非特殊情况,不建议使用Rhinoceros嵌入的PythonScript,而是使用Grasshopper中嵌入的Ghython,将Grasshopper与Python。设计的是如何处理设计问题,设计的特点是不断的推敲设计形式和不断的修改提升,并具有创造性,纯粹的Python语言无法实时方便的观察几何形式的变化,也不能够快速的建立起根据设计构思实现的几何形式,这些需求Grashopper却可以达到,构建了一种数据结构调整实时观察几何形式变化推敲的设计过程,然而设计上遇到的各类问题单凭Grashopper很难处理解决,需要凭借yhton更强大的语言协助处理,Gahopper与hython就构成了辅助设计最好的组合方式。《学习ython-做个有编成能力的设计师》不是纯粹的ython编程学习,而是在学习基本ython编程语言时又如何辅助设计的阐述,从ythonS到ythonScript再到Ghython,将ython真正作为设计者从事设计辅助的编程语言;但是这又不是纯粹几何形式编程的说明,而是又包括了Python编程数据结构、基本语句、函数与类的学习。整本书都是在编程与设计、理性与感性的逻辑思维之间不断的跳跃,这正是编程让设计更具有创造力的本质。程序地 网络 M-RHINO模型 Rhinoceros GrasshopperVersionMay-16,2013,0.9.0056 Python3.2.2T-文本文件部分程序需要 研究室内获取,进入为010-1-关于018-2-数据结构(Data020-列表020-索026-列表的基本030-列表的方040-元组040040-Python的字典与Grasshopper044-Pyhton045-GhPython与树型数据059-字符059-用Python替代Grasshopper062073-re(regularexpression082-3-基本语句(Basic084-print()与084-084-使用import102-4-函数141-5-1 10学习Python"ython(英国发音ˈpɪə/发音ˈpɪθː/),是一种面向对象、直译式电脑编程语言,具有二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块。"-ikipedia®Python语言被用于各类领域,十分广泛,例如编程语言、数据库、Windows编程、多、科学计算、网络编程、游戏编程、嵌入和扩展、企业与政务应用等。在过去几十年中,大量的编程语言被发明,被取代,并修改或者组合在一起, 月编成语言榜前名的依次为C、Java、C++、Objective-C、C#、PHP、(Visual)Basic、Python、JavaScript、Perl、Ruby、PL/SQL、Delphi/ObjectPascal、VisualBasic.NET、Lisp、acal、Ada、Transact-SQL、Logo、NXT-G,众多的编成语言并不是都对设计行业都适用的,具体选择哪种语言由行业使用软件平台所支持的语言来确定。对于建筑、景观与城市规划设计行业,Python语言也起到越来越重要的作用,ython往往被嵌入到设计行业的软件平台上作为使用。MAYA是MEL,自8.5之后支持yhton语言。Rhinoceros是Rhinocript,自5.0之后嵌入Ironpython,Houdini使用的是HScript,自9.0后使用HOM(HoudiniObjctMode),支持ython语言。地理信息软件,ArcGi8基于地理视图的语言开始引入,9.0开始支持ython。VUE自然景观生成软件与FME地理数据转化平台同样支持ython语言,可见ython程序语言在逐渐的被更广泛的三维图形软件所支持,成为众望所归共同的语言。Python是“一种解释型的、面向对象的、带有动态语义的高级程序设计语言”,已经具有近二十年的发展历史,成熟且稳定,在2012年之前是2007年、2010年的年度编程语言,众多三维图形软件选择Python作为语言是未来图形程序软件发展的趋势。ython的设计语言“优美”、“明确”、“简单”,在面对多种选择时,ython开发者会花哨的语法,而选择明确的没有或者很少歧义的语言,因此学习ython不像学习C++、Java等语言难以学习,其语言优美与英语语法结构类似,这正是Python语言最早设计指导思想之一,提高代码的可读性。在ython成为绝大部分图形程序的语言后,对于设计师个人来说是有莫大的好处。在项目中,经常使用ARCGIS处理地理数据,FME转换数据格式,使用Rhinoceros与Grasshopper来构建几何模型,在深入进一步拓展软件的设计能力,解决诸多软件本身模块无法解决的现实问题时,就要求助于语言,如果各软件的语言不统一,这就要耗费设计师过多的时间在语言的学习上,然而编程也只是协助设计师处理设计问题的,这个在变的越来越重要时,所有图形化设计软件自然将语言转向ython一种语言形式,以减轻设计师的负担。设计师恐怕从来没有想过建筑等设计行业会与编程发生关联,甚至对设计的传统方法提出调整,甚至。实际上自从计算机辅助设计开始,编程就已经渗入到设计行业,只是各类功能的开发都是由软件科技公司处理提供给设计者使用,例如AutoDesk公司的各类辅助设计的产品。然而随着计算机辅助设计软件平台的发展,为了适应设计无限的创造力,紧紧依靠开发者提供的功能不足以满足设计的要求,必须为设计者提供一套设计者本人根据设计的目的,可以进一步通过程序编写达到要求的方法,那就是在各类三维图形设计软件中嵌入编程语言,例如最为广泛使用的ython。编程语言通过图形程序与设计构建了最为直接的联系,使得设计的过程更加智能化,以利用语言的魔力实现更复杂设计形式的创造和各类设计以及分析问题的解决途径。同时也对设计者提出了新的要求,那就是只有在掌握编程语言的基础上,才能够应用这一具有魔力的技术,实现设计过程的创造性改变。设计技术的发展趋势也使得设计者不得不这一种情况,然而任何人都应该学会编程,编程不仅是一门语言,它在改变着人们思考问题的方式,更何况充满创造力的设计行业。当设计者开始从编程语言的逻辑思维方式思考设计形式的时候,是一种与直观的设计关照截然不同的思维方式,一个在理性逻辑思维与感性设计思维之间不断跳跃的过程,两者之间不断的影响与融合,这正是使用编程语言来辅助设计带来的影响,更是一种设计者乐此不彼的新的设计过程的游戏,因为编程让设计过程更具有创造力。12学习Python>>>frommathimportsqrt#使用frommoduleimportfunction语句直接导入模块math的sqrt>>>sqrt(36)#可以直接使用导入的函PythonS可以逐行的打入语句,并实时地反馈语句的运行结果,也可以从PythonS/File/NewWindow打开新的解释器窗口,可以输入成段的语句,再单击Run/RunModule或者按F5执行程序。x=input('Enteravalueforx')y=input('Enteravaluefory')frommathimportsqrt#按F5执行上述程序,PythonS会执行程序,并打印结Enteravalueforx12Enteravaluefory9PythonS可以帮助设计师学习ython语句,但是却不能处理建筑设计的三维形式,很多三维图形软件平台虽然已经内嵌了Python语言作为,但是推荐使用具有Grashopper节点可视化编程的Rhinocero软件作为辅助设计的工具。Rhinoceros本身具有ythonScript交互式解释器,可以直接调用Rhinoceros的rhinocriptyntax模块,Rhino模块等。基于Rhinoceros的PythonScript解释2Data18学习Python编程的内容之一是数据结构,尤其使用编程进行几何数据的处理,数据结构是通过某种方式组织在一起的数据元素的集合。基于Grashopper节点可视化编程中,数据结构被划分为单元数据(item),线性数据list,列表)和树型数据(tree),单元数据仅包含一个数据;线性数据仅有一个路径,该路径下有多个项值;树型数据由多个线性数据组成,即含有多个列表,对于多个路径分支,每一个分支下有至少包含一个数据。Grasshopper的基本数据结构类Grasshopper节点可视化编程数据结构关系的处理方法与纯粹编程语言数据结构处理方式基本如出一辙,在python语言数据结构中,主要处理的方法分别是,列表(list)和字典(dictionary)。其中列表与Grasshopper中0.0,1.0,2.0],字典则与树型数据基本一致,例如{0:0.01:10Grasshopper的基本数据结构类列表是Grasshoppper数据结构的类型,也是python语言的基础数据结构,在python中通常将列表和元(tuple)统称为序列(squenc),但是元组与列表基本一样,只是元组不能够修改,在具体操作上主要只有创建元组和元组,因此在提及python数据结构序列时以列表为主。python列表用中括号[]表示,数据之间使用逗号隔开,例如[0,1,2,3,6,2]。列表中的每一个元素被分配一个序号,即元素的位置,称之为索引(index)。第一个索引为0,第二个为1,以此类推,这个表示的方法与Grasshopper是一致的,索引值从0开始计数的一个原因是也可以从最后一个元素开始计数,列表中最后一个元素标记为-1,倒数第二个标记为-2,以此类推。在阐述列表及其索引时,结合Grasshopper,GhPython,PythonScript以及Python比较说明。因为都是编程语言,实质都是一样,Python与Grasshopper只是表述方法存在差异,那么对于GhPython,ythonScript只是嵌入的平台不同,一般只会在接口处理上存在差异;python就是最为纯粹的,只有嵌入到不同的设计分析平台才能够真正的发挥作用。从下图中能够看到Grashopper节点可视化编程与ythoncript语言编程达到同一个结果,即构建一个方形,对方形等分10份获取等分点,并标注等分点的索引值。使用Grasshopper使用Grasshopper20学习PythonGhPythonGhPython将等分点的数据输入到hhn中,输入数据的类型为iAccess,语句dpindex=list(range(len(dpoints))),其中len(dpoints)是获取列表长度,即包含元素数量python内建函数,range()是迭代一个数字序列的函数返回一个区间值,list()函数可以将区间值转化为列表,将该列表赋值于变量程序importrhinoscriptsyntaxas #将输入列表赋值给新的变量dpoints,也可以直接使用变量 #返回列表索引值的方 #打印索引值列 #打印等分点列表,可以观察到输入等分点数据在GhPython中显示的DataOut=List#定义GhPython输出项变量,此项为等分点列 #定义GhPython输出项变量,此项为等分点索引值长度、最小值、最大值、数列区经常在列表处理时需要获知列表的长度,如果列表为数字,则一般会提取最大值和最小值。三个内置函数分别为ln()、min、max。通过函数ln()得知列表长度后,如果遍历循环列表,则需要构建遍历列表的区间,即最大值为列表长度,最小值为0,这时就可以使用ange()函数。而在Gasshopper中获取列表长度的方法可以使用组件Litlngth或者Teettiic。目前在0.9.0056版本还没有直接获取一个列表最大值和最小值的组件,但是可以使用Bounds组件获取列表的数据区间,即为最大值和最小值,也可以自行使用hython编写也可以。Python语言编写的程序要比Grasshopper节点组件连接的方法更加简洁,但是节点组件的方更加直观22学习Python>>>print(range(5,20,3))range(5,20,3)>>>>>>[5,8,11,14,>>>len(lst)>>>max(lst)Grasshoper实现列表Grasshoper实现列表长度、最小(大)值、数列区间的方使用PythonScript编写方形等分点标注索引值的程序逻辑与Grasshopper基本一样,首先需要确定在PythonScript中如何建立矩形,可以使用函数AddRectangle实现,其实就相当于Grasshopper组件Rectangle,hinociptynax.Addctngle(plane,idth,hight)函数语法中有三个参数,plane为参考平面确定矩形绘制的位置,width和hight为宽高。因此需要首先建立参考平面,通过函数orldXYlane()获取XY水平方向以原点为中心的参考平面赋值给plane,并通过函数Movelaneplae,oin到指定坐标的位置上。成功构建矩形,DivideCurvecurv_id,egmnt,crat_point=al,rtun_point=True)函数可以将该矩形等分,并返回等分点的列表,使用函数ddointpoint,y=one,z=one即可增加三点。那么如何像Grasshopper组件PointList一样标注索引值呢?在标准库rhinoscriptsyntax模块中有函数AddText(text,point_or_plane,height=1.0,font="Arial",font_style=0,justification=None)可用,需要输入的参数有2.Data>>>[67,5,3,99,5,4,2,1,230,>>>lst.sort()#排序>>>[0,1,2,3,4,5,5,67,99,使用Grasshopper编使用PythonScript不管是使用Grashopper还是PythonScript,基本的逻辑构建过程是一致的,只是因为采取不同的编程语言方式,在语法上有明显的出入,尤其节点可视化的方式与纯粹语言之间的区别。在PythonScript中的函数和方法相当于Grashopper下的组件,因为各自编程平台所提供的函数(组件)存在差异,因此可能在Python中是使用三点通过函数rhinosciptsyntax.ddCuve(point,degree=3)建立有弧度的曲线,但是在Grahoppe中可以使用组件Catnary悬链线建立有弧度的曲线,又例如在根据模式剔出等分点时,ythoncript首先建立模式的列表,再使用list.append()的方法,按照模式列表的索引值提取等分点列表,在组织数据时使用了类似的方法,只是按照另一模式列表的索引值,使用lit.insert()组织数据;在Grashopper下,则使用组件Cullattern模式移除列表,并结合athMapper组件调整数据结构,获取与ythoncipt程序编写一样的形式结果。无论使用哪一种编程方式,遵循的思想仍然是如何构建这个逻辑构建过程,任何语言编程只是为实现设计的形式或者分析数据服务,因此学习任何编程语言的时候不是为了纯粹的语言学习,最为关键的是如何把它应用于需要解决的问题上,也因此Python不是某一个领域特有的编程语言,即不属于互联网、计算机操作程序、科学计算、多,也不属于建筑设计领域。有些时候使用ythonScript看起来要比使用Grashopper要繁琐,在使用编程来处理设计形式领域时,可以将二者结合使用,例如本例的桁架,在Grashopper下编写会更加顺畅,但是在ythonScript下,因为数据组织没有Grahopper来的那么直接,需要借助于or循环语句完成数据结构的调整,就有些繁琐。虽然ython提供了很多列表的基本操作和方法,但是对于需要借助于相关参数而不是直接输入数据的方式调整数据列表结构,例如对于一个列表每隔一个移除一个项值,直至整个列表,在Grasshopper下可以直接使用CullPattern组件方便完成,但是在ython下往往需要借助于循环语句完成。当然因为ython具有更强大的语法方法以及模块函数,在Grashopper解决某类问题失效时,ython语言编程是最好的选择。32学习Python几何逻辑构建过PythonScript与Grasshopper程序编写的逻辑构建过程基本一致,首先拾取一个点,沿一定方向建立一根直线,然后偏移获取两侧的直线,对中间的直线延长一定的距离,获取端点,ythoncript下再拾取中间点,通过三点建立一根有弧度的曲线,Grasshopper下直接使用Catenary悬链线建立有弧度的曲线,对三根曲线等分相同数量,获取等分点,并模式移除部分点,调整数据结构,连为折线。
hyn其它DataTree的方—般在研究Python编写程序时,已经具有了使用Grasshopper编写程序的能力,在GhPython中使用树型数据的方法与Grasshopper类似,只是使用的语法和编写不同。DataTree.Insert(data(T),GHPath,index)是根据指定的路径和指定该路径下索引值位置插入项值的方法;DataTree.ItemExists(GHPath,index)是判断指定路径下的索引值是否存在,返回值为True或者False;而DataTree.PathExists(GHPath)则仅判断指定的路径是否存在;DataTree.Remove(GHPath)移除指定路径以及该路径下所有项值;DataTree.MergeTree(DataTree(T))合并两个路径分支,如果路径分支相同则将项值放置于一个路径之下,不同则不进行路径下项值的合并,而各自单独放置于各自的路径分支之下进行合并;DataTre.ath(indx)指定路径的索引值获取该路径;DataTre.RenumberPaths()将所有路径分支按照顺序从0开始重新命名;ataee.ipliyaths()可以简化路径分支。...#接上文程addpoints=Glst[2][3]#提取Glst列表索引值为2的子列表,并继而提取子列表索引值为3的项值D.netadpnt,G_ath,02#根据指定的路径和printDF)tre{5;3;1;1;1;1;0},如果索引值超出了原路径最大索引值,则在其间填补索引项,值则为空值<null)runv=D.teiGH_ah02#判断指定的路径print(returnv)#返回值为returnv=DF.ItemExists(GH_Path(9,0),3)断指定的路径print(returnv)#返回值为runBE=D.ahit(G_ah90#判断指定的路径 #返回值为returnP=DF.Path(5)#根据指定的路径索引值返回该路print(returnP)#返回值为
标记标记importRhino#调入Rhino模fromGrasshopperimportDataTree#从Grasshopper模块中调入DataTree类fromGrasshopper.Kernel.DataimportGH_Path#调入GH_Path函数data=TreeData#将输入的数据赋值给新定义的变量orgdata=[]#建立空的列表layerTree=DataTree[Rhino.Geometry.Point3d]()#建立空的树型数据foriinrange(data.BranchCount):#循环遍历各个路径分支 #按索引值提取路 #提取路径{A;B;C;D}模式下的Difbranchpath%2==0:#如果D项除以2无余数即等于 #按索引值提取该路径分支下的所有项值并赋值给新的变blst=[]#建立空的列表,用于放置每次循环时每一路径下的项forkinrange(len(branchlst)):#遍历循环提取的每一路径分支 #依次将每一路径分支项值追加到空列表 #将列表的值逆向排 #将重新组织后的列表放入空列表orgdataelse:#除了D项除以2无余数条件下的其它情况,与无余数操作基本一样,但是不反转列forkinbranchlst:#与forkinrange(len(branchlst))类似,只是k直接为项值而不是索引值foriinrange(len(orgdata)):#循环遍历列表,建立树型数据path=GH_Path(i)#使用GH_Path()函数定义路径v=orgdata[i]#依次提取子列表赋值给新变量layerTree.AddRange(v,path)#建立路径为path,值为v的树型数OTreeData=orgdata#输出因为包含子列表,输出值为:IronPython.Runtime.List,因此在 #输出数型数据,值为点坐标,可以在Grasshopper中进一步操%号被用来作为格式化的操作符,如果字符串里包含实际的%,则通过%%即两个百分号进行转义。如果希望格式化浮点数,可以使用说明符类型,精度控制由“.“号加上希望保留的小数位数确定例如>>>formatstr="Piwiththreedecimals:%.3f,andenteravaluewithpercentsign:%.2f%%."#通过%建立格>>>frommathimportpi#从模块math中调入>>>newstr=formatstr%( )#使用格式化值来格式化字符串模式>>>'Piwiththreedecimals:3.142,andenteravaluewithpercentsign:3.14除了转换说明符%外,可以增加转换标志,-表示左对齐,+表示在转换值之前要加上正负号,“”空白字符,表示正数之前保留空格,0表示转换值若位数不够则用0填充;如果格式化字符串中包含*,那么可以在值元组中设置宽度;(.)点号加数字表示小数点后的位数精度,如果转换的是字符串,那么该数字则表示最大字段宽度。转换类型参看表转换类含带符号的十进制整o不带符号的八进u不带符号的十进x不带符号的十六进制(小写X不带符号的十六进制(大写e科学表示的浮点数(小写E科学表示的浮点数(大写十进制浮点g如果指数大于-4或者小于精度值则和e相同,其它情况与fG如果指数大于-4或者小于精度值则和E相同,其它情况与F相C单字符(接受整数或者单字符字符串r字符串(使用repr转换任意Python对象s字符串(使用str转换任意Python对象>>>ormattr="%10,%10.2,%.2,%.5,%.*,$%d,%x,%"#各类转换说明符示例,%10f代表字段宽为10的十进制浮点数,%10.2f代表字段宽为10,精度为2的十进制浮点数,%.2f代表精度为2的十进制浮点数,%.5s宽度为5的字符串,%.*s代表从值元组中指定宽度的字符串,%d代表带符号的十进制整数,%x代表不带符号的十六进制(小写),%f代表十进制浮点>>>newstr=formatstr%(pi,pi,pi,"oPython!",5,"o>>>' 3.14,3.14,o,>>>formatstr="%010.2f,%-10.2f,%+5d,%+5d"#各类转换说明符示例,%010.2f代表字符宽度为10并用0进行>>>newstr=formatstr%(pi,pi,10,->>> ,+10,-string模块提供了另一种格式化字符串的方法,即Template()函数模板字符串,转换操作符为$符号,配合使用t.ubtitute()方法格式化模板字符串达到字符串格式化的目的,参数可以直接赋值,也可以使用字典变量提供值/名称对,如果想替换字符串中单词的一部分,那么参数名需要使用括号括起来。2.Data>>>fromstringimportTemplate#从string模块中调入模板字符串函数>>>s=Template('$x,glorious$x!')#定义模板字符串,$为字符串格式化操作>>> #定义值,并使用s.substitute()方法格式化模板字符'Python,glorious>>>s=Template('${x}thonis #替换单词的一部分时,需要使用大括号{}括>>> #定义值,并使用s.substitute()方法格式化模板字符'pythoniss=Template('$xand$yarebothamazing!')#定义多个需要替换的字符串>>>d=dict([('x','Python'),('y','Grasshopper')])#定义值字典>>>{'x':'Python','y':>>>s.substitute(d)#使用值字典格式化模板字符串'PythonandGrasshopperareboth64学习Python2.字符串在处理不同平台的数据传输时具有重要作用,因为不同的平台所要求的数据格式会有所不同,因此需要格式化字符串使之符合各自平台使用的标准。规划设计过程中需要将基于地理信息系统ArcGIS平台分析的数据接入到Grasshopper之下,为了方便接入,在接入之前将地理信息分析的数据转换为.XYZ格式的数据,并修改其后缀名为.txt可以在文本文件中打开。将.XYZ格式文件修改后缀名为.txt将.XYZ格式文件修改后缀名为.txt据之间由逗号隔开,分别代表X、Y坐标,以及Z值,其中Z值可以是高程,亦可以是坡度、坡向、水文等任何地理信息数据。使用Grasshopper既有的组件即可很容易的将该数据调入到Grasshopper平台之下,并借助于高程数据生成使用Grasshopper1.1.调入文 文5.建立地形表3.切分字符4.数列成6.赋予地形表面颜2.Data打开文件后即可对文件进行读与写。文件的方法可以使用f.read()参数为整数,代表几个字符;.radline()则是单独的一行,直到第一个换行符出现,同时也该换行符,在不使用任何参数的时候仅读取一行,如果参数为一个非负的整数,则代表可以字符数的最大值;.radlins()则可以一个文件中所有行并将其作为列表返回。>>> #以只读方式打开文>>><_io.TextIOWrappername='E:\\PythonDesign\\PythonProgram\\elevation.txt'mode='r'>>> #指定数量的字>>> #一行,从上次过后的位置开始,可以理解为流 .175,247>>> #指定数量的字>>> #剩余所有行并返回列 .175,247\n', .175,247\n', .175,247\n',708.175,247\n', .175,247\n', .175,247\n', \n', .175,247\n', .175,247\n', .175,247\n', .175,247\n', .175,247\n', .175,247\n',08.175,247\n', .175,247\n', .175,247\n', \n', .175,247\n', .175,247\n', .175,247\n', .175,247\n', .175,247\n', .175,247\n',.175,247\n', .175,247\n', .175,247\n', .175,247 .175,247\n', .175,247\n', .175,247\n', .175,247\n', .175,247\n', .175,247\n', 75,247\n', .175,247\n', .175,247\n', .175,247 .175,247\n', .175,247\n', .175,247>>>f.close()#使用f.close()方法关闭文写入文件的方法可以使用.itsting所提供的参数字符串会被追加到文件中已存在部分的后面f.wriines()方法则可以把列表中所有字符串写入文件。另外没有f.wriine()的方法,因为可以使用f.write()>>>f=open('E:\PythonDesign\PythonProgram\write.txt','w')#以写模式打开文件>>><_io.TextIOWrappername='E:\\PythonDesign\\PythonProgram\\write.txt'mode='w'>>>f.write('o #使用f.write()方法写入字符>>>lst=['oPython!\n','oGrasshopper!\n','Theyarebothamazing!']#定义列表,‘\n’为换>>>f.wri #把列表写入文>>>f.close()#使用f.close()方法关闭文被写入字符串后的.txt文68学习Python2.在实际调整数据文件时,需要对文件内容进行迭代,进行相应的操作并所有内容,可以直接使用循环语句即可达到内容迭代的目的,迭代的过程可以使用f.rad()逐个字符迭代,也可以使用f.readlines()逐行迭代;同时可以使用for循环语句迭代forlinein.radlines():,也可以使用whiletru/brak语句迭代,两者中whiletue/beak语句可以让迭代更加简洁,并且在完所有行时结束循环。程序 #以只读方式打开文 #建立空的列表,放置调整后的字符whileTrue:#循环迭代文 #逐一的 #调整字符串,每行前增加标志 #将调整后的字符串追加到列表ifnotline:break#判断是否完全部行,如果完则停止循f.close()print(lst)#打印列['#oPython!oPython!\n','#oGrasshopper!\n','#Theyarebothamazing!',文件是作为流的存在,因此只能从头到尾的顺序数据,如果希望随意移动到位置,可以使用的方法定位,也可以使用f.l()的方法获知当前的位置>>>f=open('E:\PythonDesign\PythonProgram\write.txt','w')#以写入模式打开>>>f.write(o #写入字符>>>f.seek(6)#定义写入或者的位6>>> #在定义的位置写入字符串,原字符串之后的字符被剔>>>f.close()#关闭文>>> #打开文>>>f.read()#文'o>>>f.close()#关闭文>>> #再次打开>>> #逐指定数量的字>>> #逐指定数量的字>>>f.l()#使用f.l()的方法获知当前已完的位置42.Data前文已经构建了基本的地形表面,但是如何按照不同颜分定义的不同高程区间并标注颜例?使用Grasshopper既有的组件也可以达到同样的目的,这里使用GhPythonGhPython分类模GhPython构建等高线部分程70学习PythonGhPython输入条件为划分区间的数列,将数据调入的输出项Z值,即高程坐标或者任何其它地理信息数据例如坡度等,按照划分的区间数列调整数据,将位于各自区间之内的Z值向下取值,例如列表[247,297,347,397,447]的分类数列,即可以划分为0~247,247~297,297~347,347~397,397~447,447几个分区,如果Z值为265.98那么其位于247~297区间之内,则将数据调整为247,其它的所有值以此类推,在保持原来数据结构的基础上来调整数值。importrhinoscriptsyntaxasrs #定义空的列表,用于放置转化为浮点数的forjindata:#循环遍历Z值列表,将字符串使用函数float()转化为浮点数 #将转化后的值追加到列表 #将转化后的值列表赋值给原变量foriincal:#以类似的方法转化分类列表的值为浮点数,该方法为直换原来的forkinrange(len(cal)-1):#循环遍历分类列表,循环截止到索引值为-2的位置,使用k+1获取最后索引位 #获取索引值为k位置的项 #获取索引值为k+1位置的项forqinrange(len(data)):#内循环遍历Z值列表ifa<=data[q]<b:#通过条件语句判断Z值是否位于分类区间a~b之 #Z值如果位于a~b分类区间,则将该Z值以a值替forwinrange(len(data)):#循环遍历初步调整后的Z值列表ifdata[w]>=cal[-1#使用条件语句判断是否Z值有大于分类列表中索引值为-1位置的值,如果存在则将Z值调整为分类列表中索引值为-1位置的值data[w]=cal[-elifdta<=cal0 #使用条件语句判断是否Z将Z值调整为分类列表中索引值为0位置的值分类模块程序的编写,主要是通过两个输入条件,分类列表和Z值列表关系的确定调整数值。第一次or循环语句初步将位于各区间的Z值调整为区间的起始端值,但是并没有判断大于分类列表最大值和小于分类列表最小值的Z值,因此第二次o循环通过使用条件语句来解决这个在第一次循环中为处理的问题。GhPython使用分类模块调整Z值,结合Grahopper下Gradint组件和MehColour组件将地形表面赋予按照分类列表划分区间的颜色。但是如何把颜色的图例标示出来,能够更直观的查找高程区间,可以使用组件Lngnd,其输入项Color以及Tags分别为颜色和,颜色和的值可以借助于Ghython编写相应的程序,根据颜色和分类模块处理后的Z值建立engend组件输入项值。>>> ')#对字符串进行模式匹配,返回MatchObject对>>>m.group(1)#返回模式中与给定组匹配的字符>>>m.start(1)#调给定组匹配项的开始索引4>>>m.end(1)#调给定组匹配项的结束位置索引>>>m.span(1)#调给定组匹配项的区间(4,在Grasshoppper中构建的基本结构线一般需要导入到专业的结构分析平台下进一步进行分析,例如基于AnsysWorkbench下的线性静力结构与动力学分析。AnsysWorkbench下的线性静力结构分析是用来分析结构在给定静力载Mechanical模块求解,一般可以使用集成的StaticStructural分析系3Basic82学习Python列表可以使用循环遍历每一个项值,也可以适用for循环语句遍历字典的所有键forkeyind:也可以遍历/值使用forkey,valueind.items>>>d=dict(a=2,b=3,c=6,d=0)#建立字>>>{'d':0,'a':2,'c':6,'b':>>>forkeyind:#遍历字典中的所有键>>>forkey,valueind.items():#遍历字典的print(key,'correspoinds',value)dcorrespoinds0acorrespoindsccorrespoindsbcorrespoinds86学习Python以古建筑的《营造法式》与《清式则例》以及已此为基础研究文献提供了详细深入古建筑营造的方法,即建筑的基本规则为基础,可以设计变化出万千种的形式。不过设计的过程由于静态关系研究的方法,使古建筑构件关系的梳理不易,例如在研究举架倍数关系时,如果能够自由根据规则变化不同尺度分析形式将使关系研究更易凸显。动态参数研究的方法将有助于研究营造法式的根本逻辑关系,将研究的重心放在基本关系的构建上,由参数控制关系变化,直击古建筑构建的精髓。清式古建筑木构架中,相邻两檁中一中的水平距离为步架;木构架相邻两檁中一中的垂直距离(举高)除以对应步架长度所得的系数为举架。根据《梁思成全集第六卷》举架出檐法编写程序可以建立参数模型。在参数模型构建的过程中,需要梳理举架出檐法的数据关系,以利用输入的举架高、举架差数、步架值、步架数以及檁半径构建进一步古建筑模型构建的参数,一个是下图所示的M列表值,以及计算平水在内的新举架值MH列表。在这个程序编写的过程中,程序依然作为技术的基础,而逻辑构建过程才是编程的理念,因此需要首先读懂《清式则例》举架搭建的参数关系,才能够通过程序编写获取进一步模型构建所需要的数据。以五檁举架小式为例,输入的参数举架高即为0.5举加列表的初始值,举架差数为步幅值,即举架以0.2为差数逐渐递增,所以举架值为0.5,0.7、0.9的一个等差数列,步架值即图中的X值,步架数是有几个X值,小式五檁为2步架,小式七檁为3步架,因为在计算平水高时,规定小式按檁径减一寸计算,因此需要输入参数檁半经。输出参数的M列表值,为举高,其中顶部的举高需要包括平水的高,依次求和的一个列表,即包含第一个索引值为0的值为0在内,代表不移动对象,索引值为1的为0+0.5X,索引值为2的是0+0.5x+(0.7x+平水高),其中七檁举架以此类推。{0:'pointA',1:'pointB',2:'pointC',3:>>>A=[]#建立空的列>>>B=[]#建立空的列>>>fora,binziplst#解包元>>>[0,1,2,>>>['pointA','pointB','pointC',编号迭enumerate()函数可以在迭代列表的时候同时返回索引值和>>>listC=['pointA','pointB','pointC','pointD']#建立列>>>d={}#建立空的字>>>forindex,valueinenumerate(listC):#使用函数enumerate()编号迭d[index]=value>>>{0:'pointA',1:'pointB',2:'pointC',3:列表推导列表推导式 comprehension是利用其它列表创建新列表的法,类似于for循环语句>>>lst=[]#建立空的列表>>>foriinrange(3,37,5):#循环遍ifi%2==0:#确定条件以执行操作 #满足条件的值进行的操>>>[64,324,>>>lst=[x*xforxinrange(3,37,5)ifx%2==0]#使用列表推导式建立上文的for循环程序,将程序的过程>>>[64,324,>>>[(x,y)forxinrange(3)foryinrange(2)]#使用列表推导式建立元组对的列表[(0,0),(0,1),(1,0),(1,1),(2,0),(2,4条件在设计编程的时候,往往需要判断某一种情况是否为真,或者为假继而采取不同的操作策略,例如一组空间随机点Z值即高程值大于或者小于某一个值时将会被删除,这个过程需要判断所有点的高程值与给定值之间的大小关系。条件语句的基本结构为ifexpression:elifexpression:以三维点坐标列表形式存在,初始参考点至少为两个;target为目标参考点,与初始参考点类似,其数量应该与初始参考点保持一致;flags为可选参数,值为1时,原对象,默认时不,值为2时缩放对象,默认时不缩放。获知关键的方法之后并且已经研究了空间面展平的关系,可以尝试构建逻辑过程,索引值为0放置于二中,关键是与之相接索引值为1的第二个平面如何在二维中与之相接,通过ython语言以判断出三维和二维中各面的对应关系,即三维中点a、b、c和d和二维中点a'、b',c'和d'的对位索引值,只需要确定将索引值为1的面次序放置于二,在使用方法OrintObjct()时初始参考点和目标参考点即可。初始参考点即为a、b、d,目标参考点a'、b'已经有了,还需要第三个点,如果直接使用c'在对位时方向是错误的,因此需要将c'点按照a'、b'构建的直线镜像到对面,获取c'点,即完成了目标参考点的构建为a'、b'和c'点。从上段阐述基于编程解决具体问题思考的过程可以明显地感觉到,ython的基本数据结构和基本的语句是基础,rhinocriptyntax模块的方法是使用Python语言处理几何形式的桥梁,基于编程的逻辑构建过程才是问题得以解决的。逻逻辑构建过程图程序:importrhinoscriptsyntaxasrs#调入rhinoscriptsyntax模块并构建别名为rsmeshes=rs.ExplodeMeshes(mesh)#分解Mesh格网为各个单lp=[]#建立空的列表,用于放置输入的定位点转化的点坐标列print(LocationPoint)#输入的点对象格式为<System.Guidobjectat0x00000000000000338524cd80-a17d-foriinLocationPoint:#遍历循环定位点,并获取各个点坐标列表print(lp)#转化为点坐标列表的格式为<Rhino.Geometry.Point3dobjectat0x0000000000000037,-xymeshes=[]#建立空的列表,用于放置次序展平后的Mesh单元foriinrange(len(meshes)):#遍历循环空间Meshifi==0:#使用if条件语句判断,当索引值i为0时的情况,即对第一个单元面操作mesh0point=rs.MeshVertices(meshes[i])#获取第一个单元面的所有顶点lp,1)#将第一个单元面放置于二维平面上,初始参考点为第一个单元面的顶点,目标参考点为输入xymeshes.append(xymesh0)#将第一个展平在二维中的面追加到列表else:#除了索引值i为0的情况之外所有三单元面的处理方式,即从索引值i为1时开始vertices2=rs.MeshVertices(meshes[i])#获取索引值为i时单元面的所有顶点vertices1=rs.MeshVertices(meshes[i-1])#获取索引值为i-1时单元面的所有顶点ver=[mforminvertices1forninvertices2ifm==n]#使用列表推导式循环遍历索引值分别为与i-1时三单元面顶点,并且要求提取的条件为两个列表中重合的点,即前文图式中点a和点a=ver[0]#提取点b=ver[1]#提取点 #获取点a在索引值为i-1时单元面顶点中的索引 #获取点b在索引值为i-1时单元面顶点中的索引d=[morminvetices2lstifmnotinve0]#使用列表推导式循环遍历索引值为i时单元面的顶点,并且要求提取的条件为不重合的点,如果为四边面则有四个点,因此增加了]以提取第一个不重合的点,即前文图式中的点d。其中mnotinver表示m不是ver容器(列表)中的成员revertic=r.Mherticsxymhei1])#获取已经转化为二维单元面索引值为i-1时的单元顶点,即如果i为1时,第一个二维单元平面索引值为0时的单元面即程序中ifi==0条件时追加的单元面,如果i为2时,二维单元平面索引值为1,即上次循环展平的单元面,以此类推indexc=[cforcinrange(0,3)ifc!=indexaandc!=indexb]#获取索引值为i-1时单元面顶点除a、b之外,点c的索引值,c!=indexaandc!=indexb即为c即不等于a也不等于b[indexb])#镜像前述图式二维中c'点,参考点为a'、b',获取cm #获取cm'点的点坐标列8005f]>),即m、y虽然表示同一个点,但是值不相je=(m==n)#判断在GhPython中链式赋值得两个变量是否相tjmn#打印返回值为(True,<System.Guidobjectat0x0000000000000038[7ccba4d3-7284-49d3-8836-aa8b8a2b3673]>,<System.Guidobjectat0x0000000000000038[7ccba4d3-7284-49d3-8836-布尔运算使用if条件语句在进行条件判断时,有时也需要同时判断多个条件,例如当符合条件x<100,同时x>36使用布尔运算符连接ifx>36andx<00:即可。如果为或的关系使用or连接,为非的关系使用not连接。获取最短路径情况获取最短路径情况98学习Python程序:实现将直线在各个交汇处打断的方法,可以分别获取每条直线与所有其他直线交点的列表,并将该直线的首点和尾点分别放置于列表的开始和结束,使用函数hinoscitytxotititpoint,toleance=one点后,再使用函数hinosciptsyntax.Addolylinepoint,eplace_id=None)根据首尾点和交汇点建立折线。在程序编写过程中,使用for循环语句遍历列表项值,并增加了嵌套for循环代码,使用函数hinosciptsyntax.ineineIntersetionlineA,lineB,planar=ue)获取每条直线与所有直线交汇处的交点。if条件语句的判断,借助布尔运算符选择同时符合三个条件的点,即首先存在交点,其次该点位于索引值为i的直线上,再者该点位于直线p上,即符合交点的条件。importrhinoscriptsyntaxasrslst=[]#建立空的列表,用于放置直线首尾点与交点pls=[]#建立空的列表,用于放置根据交点构建的折线plsp=[]#建立空的列表,用于临时放置循环每一步的交点pl=[]#建立空的列表,用于临时放置循环每一步的交点和首尾foriinrange(len(li)):#使用for循环语句遍历直线列表forpinli:#使用嵌套循环语句再次遍历直线列表,即将li[i]的直线与所有直线进行相交的 #次序将li[i]直线与p直线相交提取交ifpointandrs.IsPointOnCurve(li[i],point[0])andrs.IsPointOnCurve(p,point[0#确定条件满足存在点,点在直线li[i]和点在p上的三个条件,找交 #如果满点的条件,将该点追加到列表lstplsp.append(point[0])#如果满点的条件,将该点追加到列表plst中 end=rs.CurveEndPoint(li[i])#获取li[i]直线的尾点 #将首尾点和plsp列表的交点放置于一个列表中,因为首尾点是单个元素,所以pls.append(rs.AddPolyline(rs.SortPointList(pl)))#排序点与连为折线plsp=[]#清空列表,用于循环的下一步pl=[]#清空列表,用于循环的下一100学习Python4102学习Python定义交互程序以及建筑屋顶结构defmainfunction():#使用deffunction(parameter):语句定义交互程序,如果不需要传递参数,即设置形basicpoint=rs.GetPoint('Selectonepoint:')#在Rhinoceros空间中拾取一个点作为初始定位点ifnotbasicpoint:return#return语句后面没有跟任何值的函数则不返回值values=[5,120,12,5,4,3,4]#定义预设的实际参数列表 #赋值截面间距单元控制距离,即单元长angle=values[1]#定义建筑转折角度offsetvalue=values[2]#定义建筑进深topbplineheight=values[3]#定义屋脊线相对高度multiple1=values[4]#定义建筑开始段截面间距单元控制距离倍数multiple2=values[5]#定义建筑转折段截面间距单元控制距离倍数multiple3=values[6]#定义建筑结束段截面间距单元控制距离倍数whileTrue:#使用whileTrue:语句定义交互程prompt='Setting'#赋值字符串,用于Rhinoceros命令行提示交互 个元组
ifnotresult:return#如果不存在值,则不返回result=result.upper()#将输入的字符串大写ifresult=='LENGTHUNIT':#使用条件语句判断变量result的值f=rs.GetReal('Lengthunit:',values[0])#根据result的值输入相应的值,同时设置默认值iffisnotNone:lengthunit=f#如果非空,则将值赋值给变量lengthunit即单位长度elifresult=='ANGLE':#使用同样的方法赋值iffisnotNone:angle=felifresult=='OFFSETVALUE':iffisnotNone:offsetvalue=felifresult=='TOPBPLINEHEIGHT':iffisnotNone:topbplineheight=felifresult=='MULTIPLE1':iffisnotNone:multiple1=felifresult=='MULTIPLE2':iffisnotNone:multiple2=felifresult=='MULTIPLE3':110学习Pythonreturnoine,eooinea,eopiepaainunonbioi,enghui,anoeumultiple2,multiple3,floorheight)调入到Ghython中的程序可以使用Grashopper节点可视化程序继续编写,完善设计的细部,大部分情况下只要Grashoppr能够处理的程序,都建议在Grashoppr处理,甚至上文的程序完全可以在Grahopper平台下完成,因此就没有必要使用ython来完成。只有在Grashopper无法处理程序和处理较为复杂时需要考虑使用ython来协助完成,任何编程都是出自于如果协助完成设计的创造,而不是无谓的炫技,本末倒置。114学习Pythondeffactorial(n):#定义ifn==1:#最小可能性,即1的阶乘是1return1returnn*factorial(n-1)#大于1的数的阶乘是n*(n-1)的阶乘递归的过程可以参考右侧的图示进一步理解,图示中的红色线标示的部分都可以被下一组语句替换(即调用自身一次),依次类推,全部被替换完时的要求为参数为1,此时返回值为1,即最后的表达式为7×6×5×...×2×1在Python中自带了一个turtle乌龟绘图的库,可以配合递归的使用绘制分形图形。但是turtle绘图在Rhinoceros下的PythonScript中并没有嵌入,也许是因为Rhinoceros本身就是绘图平台,因此如果希望在PythonScript下实现turtle绘图,可以自行编写相应的类。而在Grasshopper中可以安装已经开发好的组件Rabbit获取Lsystem系统,实现turtle绘图的方法。程序fromturtleimport*#使用*星号导入turtle模块中的所有函数deff(length,depth):#定义函数,形式参数length为单位长度,depth为递归迭代的次ifdepth==0:#最小可能性,即迭代次数为0时,向前一个单位长else:#不断调用自身函数的f(500,4)#执行定义函120学习Python•变•变化变化 condition(direction='z',swing='x',multi=5,swingangle=0,rotateangle=20,pd='x'):#调整旋转角度后的几何形变化forninrange(300):#调整for循环语句以及初dineo,gici,i,gge,oaa,dlnoicdni,elaptngeeapienegienuigngeedineo,gici,i,gge,oaa,dlnoicdni,elaptngeeapienegienuigngeedineo,gici,i,gge,oaa,dlnoicdni,elaptngeeapienegienuigngee126学习Python•变•变化forninrange(1000):#调整for循环语句以及初始值ieoneingiein,uiinganeangeppaeieodonui,elaptngeeapienegienuigngeeieoneingiein,uiinganeangeppaeieodonui,elaptngeeapienegienuigngeeieoneingiein,uiinganeangeppaeieodonui,elaptngeeapienegienuigngeelambda函>>>deff(x):#常规的定义函数方return>>>f(3)>>>flam=lambdax:x**2#使用lambda定义函数,其中x相当于形式参数,冒号后面的为操作程序,赋值给定义的>>>flam(3)130学习Python4工业机器人已经在逐步的替代部分手工制造,这个趋势伴随着技术的进步与机器人成本的降低越来越明显.工业机器人的应用可以增加工作的效率,可以获得手工不易达到的一些施工。工业机器人的动作指令则由计算机发出,编程正是设计师与机器人之间沟通的语言途径。使用工业机器人进行施工作业,可以进行虚拟模拟以检查施工过程中是否存在隐患,例如定位点的错误,部分作业区域不在机器人作业范围,多个机器人协同合作时发生机械臂碰撞等。在研究过程里,使用了ABBIRB-6400工业机器人来模拟建筑作业过程。工业机器人将从一侧底端一点开始作业,水平方向按顺序逐一进行作业,例如焊接、安装或者搬运等工作。工业机器人一般是根据已经设计好的形式,编入指令从始作业。虽然这个过程并不是形式创造的过程,但是却可以根据工业机器人的运动构建逻辑过程逆向形式探索。本次研究使用了ABBIRB2600ID型号的工业机器人,可以用于集成弧焊工艺设备,以及搬运和上下料作业,该型号工业机器人的基本参数和实体模型可以从./即ABB机器 获取和研究中虚拟搭建了IRB2600ID型号的 工业机器人的主要部件,以保证逻辑构虚拟搭建的IRB2600ID型号机器建过程中物理模拟过程的真实性。使用Ghython语言编写逻辑构建过程,输入的参数确定为工业机器人机械臂轴运动的工作范围,并设置了各轴在整个运动过程中运动的速率,增加了工业机器人整体运动的方向。在逻辑构架过程中,确定了各轴运动与迭代时间db10_timr正弦绝对值周期性运动的规律,以速率axis虚拟搭建的IRB2600ID型号机器控控制参数下记录机器人的运动轨从ABB机器的IRB2600ID型号机器人已经分好各个部分并组装完好,可以在Rhinoceros入。将各个部分的机械臂调入到Grashopper操作平台为Mesh格网,并根据机械臂的初始位置绘制各个机械臂的轴线用于控制运动的转向。使用GhPython结合时间time模块编写运动的方式,当时间开始时,按照程序开始运动,并记录尾端机械臂头轴线中点的运动轨迹。机器人各个机械臂底部的部分逐次控制之上的部分,因此开始确定底座的运动方式,再去除底座来控制其余的部分,在其余的部分中仍然首先控制底部的机械臂获得整体运动,再移出,计算剩余部分的运动,依次类推完成整个运动过程。如果不停止时间运动将会一直持续下去,也可以调整不同的参数以及机器人整体的运动轨迹来逆向模拟获取不同的几何形式。134学习Python
Grasshopper封装组件程函dbl0_timer=round(dbl0_time_current-dbl0_time_00,1)#计算两次获取 #以差值为参数计算轴3的转动角度 MoveD=dbl0_timer*(float(move))#以差值为参数计算整体移动的距离设置不同的参数,对于各轴设置了不同的速率,即在整个模拟过程中各轴运动的次数频率的不同将获得不同的形式结果。由于多个参数的输入只是在控制工业机器人的运动规律,却不易预测最终的形式结果。只是这种形式结果是在一定参数控制下同一逻辑构架过程衍生的结果。根据设定参数的不同,这个结果也并不唯一,但是构建逻辑是一致的,这个逻辑就是由物理机械的运动规律和限制由语言所表述的过程。不仅可以通过输入参数改变形式结果,的逻辑构建过程仍然可以无止境的调整和塑造,以获得的形式演化。目前基于Grasshopper的扩展组件Godzilla和HAL||RbProgramming&tl都可以控制工业机器人,可5类138学习Python事物认知过程中,总是习惯将世界中存在的对象进行分类,例如鸟类、鱼类、花草等,在Rhinoceros几何形式中则有点、线、曲面、格网等。每个分类之所以能够归为一类,是因为该类的对象具有共同的属性特征,例如鸟类一般都能够飞翔,具有翅膀,身披羽毛等,而鱼类则水中,用腮呼吸,用鳍辅助身体平衡与运动;而点具有坐标,线具有曲率、长度、方向,曲面具有表面积、截面线等。每一类都有每一类的属性特点,也具有该类的一些行为方法,但是每一个类下又有很多子类,例如鸟类又分雨燕目、鸽形目、雁形目等,而雨燕目之下由有科,科下则为具体的对象例如黑雨燕、珍雨燕、小雨燕等。对于人类认知世界的分类系统,在ythonclassBird:#定义一般鸟类的属性与方法,语句classBird:中Bird为类的名fly='Whirring'#定义一般鸟类飞的属definit(self):#调用init构造函数,初始化对象的各属性,类的各属性(成员变量)均可以在构造函数中定义;每一个类方法的第一个参数(self),包括
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度医疗设备租赁合同:医用影像设备的租赁与维护
- 04版股权转让及收购合同范本
- 2024年度艺人经纪合同:艺人经纪公司代理艺人对外演出及商业合作
- 2024年度太阳能光伏项目开发合同2篇
- 2024年度企业法律顾问委托合同
- 2024年度建筑项目防水合同
- 2024年度国际石油勘探开发合作合同
- 二零二四年度货物租赁及运营管理合同
- 二零二四年电子版合同标的买卖协议
- 2024年度汽车展销会参展商展台装修合同2篇
- 企业用电量分析报告
- 放射源的正确使用及安全存放培训
- 2023-2024学年人民版六年级下册劳动教学设计(第6课)学用洗衣机(教案)
- 人工智能在教育行业的远程学习应用
- 图形创意共生图形实训+讲授
- 温病学试题及答案大全
- 铁路行车安全-作业防护(工务安全管理)
- 年度总结仓库管理的成功面与挑战
- 人体免疫系统的结构与功能研究
- 拓培非格司亭注射液-临床药品应用解读
- 施工安全措施
评论
0/150
提交评论