您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 第2章_GRIP编程基础(2)
CAD软件二次开发技术基础24苗盈102CAD软件二次开发技术基础第二章GRIP编程基础(二)3GRIP书写规则变量、数组和字符串转移结构、逻辑结构和循环结构子程序的应用文件管理本章主要内容4变量的种类、声明和赋值数组与子集字符串的运算、编辑2.2变量、数组和字符串5变量的种类数字变量简单变量:唯一不用声明的变量种类。indx=1flag=2数组变量:包含一维数组变量、二维数组变量、三维数组变量。flag(1)=0flag(1,1)=1falg(1,1,1)=2字符串变量Str=‘unigraphics’$$简单字符串变量Str(1)=‘unigraphics’$$一维字符串变量Str(1,1)=‘unigraphics’$$二维字符串变量2.2.1变量的种类、声明和赋值6变量的种类实体变量Pt=point/0,0,0$$简单实体变量Pt(1)=point/1,2,3$$一维实体变量Ln(1,1)=line/0,0,0,1,1,1$$二维实体变量Ln(1,1,1)=line/1,2,3,4,5,6$$三维实体变量有关变量名的规定一般情况下,变量名的有效长度是32个字符,但未声明的简单数字变量的有效长度是6个字符;变量名必须是以字母开头的字母或字母与数字的组合;变量名中不得含有非字母和数字的其他一切字符;不得将任何主词或辅词作为变量名。2.2.1变量的种类、声明和赋值7变量的声明一般情况下,除了简单数字变量不许声明外,其他所有变量必须声明。数字变量格式:number/name[(dim1[,dim2[,dim3]])][,name(dim1[,dim2[,dim3]])]+name:变量名;dim1,dim2,dim3:数字数组变量的维数。2.2.1变量的种类、声明和赋值number/flag$$简单数字变量number/flag(10)$$一维数字数组变量number/flag(10,10)$$二维数字数组变量number/flag(10,10,10)$$三维数字数组变量8变量的声明字符串变量格式:string/name[(dim1[,dim2]],n)][,name([dim1[,dim2]]),n]+name:变量名;dim1,dim2:字符串数组变量的维数;n:字符串的长度,n≤132。2.2.1变量的种类、声明和赋值String/str(10)$$简单字符串变量String/str(3,10)$$一维字符串数组变量String/str(2,2,10)$$二维字符串数组变量9变量的声明实体变量格式:entity/name[(dim1[,dim2[,dim3]])][,name(dim1[,dim2[,dim3]])]+name:变量名;dim1,dim2,dim3:实体数组变量的维数。2.2.1变量的种类、声明和赋值Entity/pt$$简单实体变量Entity/ln(10)$$一维实体数组变量Entity/face(10,10)$$二维实体数组变量Entity/body(10,10,10)$$三维实体数组变量10变量的赋值变量的赋值有三种方式:一般赋值语句、data赋值语句、实体赋值语句。一般赋值语句一般赋值语句就是利用算术运算符对数字和字符串变量进行赋值。Num=10+4*indx/6-sh**5$$对数字变量进行赋值Str=‘unigraphics’$$对字符串变量进行赋值Data赋值语句格式:data/name,value[,value]+[,name,value[,value]+]+name:变量名;value:赋予变量名的值。2.2.1变量的种类、声明和赋值Number/flag(2)String/str(2,20)Data/flag,10,20,str,’unigraphics’,’grip’利用上式的data语句赋值之后,flag(1)=10,flag(2)=20,str(1)=’unigraphics’,str(2)=’grip’。11实体赋值语句实体赋值就是调用函数生成一个实体。此外,还可以用&nulent对实体赋空值2.2.1变量的种类、声明和赋值entity/pt,cenpt=point/0,1,0cen=circle/center,pt,radius,1,start,0,end,180entity/ptpt=&nulent12GRIP规定数组的最大维数是三维。数组可分为数字数组、字符串数组、实体数组。一个数组的一部分元素的集合称为子集。子集的使用规定子集的上标必须大于下标,否则程序运行时将出错;除在data赋值语句中不能使用子集外。程序的其他任何地方都能使用子集;子集的上标和下标可以是常数或数学表达式。子集的表示方法常数子集。子集的下标和上标都是常数,如a(1..5),b(2*3..9)。固定数组子集。子集的下标是变量,上标是常数,如a(i..i+3)。变量数组子集。子集的下标和上标是任意的数学表达式,如a(absf(x)..j+3)。2.2.2数组与子集13字符串的运算字符串之间可以进行运算。若字符串变量的声明长度大于字符串长度,则尾部保留空字符;反之,则保留与声明长度一致的被截尾字符串。利用lenf函数可以计算字符串的长度,具体格式是:lenf(‘string’)。2.2.3字符串的运算、编辑String/str1(30),str2(30),addstr(50)str1=‘unigraphics’str2=‘opengrip’addstr=str1+str2$$addstr的值为:unigraphicsopengrip14字符串的编辑字符串的编辑主要有:字符串的提取、字符串的替换、字符串的比较和字符串的搜索字符串的提取格式:substr(‘objectstring’,pos,count)objectstring:目标字符串;pos:字符串的提取位置;count:提取的字符串个数。2.2.3字符串的运算、编辑String/str1(10),str2(10)str1=‘unigraphics’str2=substr(str1,3,4)$$str2为:igraprint/str215字符串的编辑字符串的替换格式:repstr(‘objectstring’,’searchstring’,’replacestring’,pos)objectstring:目标字符串;searchstring:目标字符串中被替换的字符串;replacestring:用于替换的字符串;pos:搜索searchstring的开始位置。2.2.3字符串的运算、编辑String/object(80),search(10),replace(10),str1(80),str2(80)object=‘objectstring_searchstring’search=‘string’repalce=‘characters’str1=repstr(object,search,replace,1)str2=repstr(object,search,replace,15)print/str1,str2$$str1为objectcharacters_searchstring$$str2为objectstring_searchcharacters16字符串的编辑字符串的比较格式:cmpstr(‘string1’,’string2’)字符串的比较实际上是比较它们的ASCII码。若两者的ASCII码相等,则返回0;若string1string2,则返回-1;若string1string2,则返回1。2.2.3字符串的运算、编辑17字符串的编辑字符串的搜索格式:fndstr(‘objectstring’,’searchstring’,pos)objectstring:目标字符串;searchstring:搜索的字符串;pos:开始搜索的位置。若目标字符串不包含搜索的字符串,则返回值为0;若包含要搜索的字符串,则返回第一次发现搜索字符串的位置。2.2.3字符串的运算、编辑18转移结构及应用实例无条件转移结构条件转移结构逻辑结构及其应用实例关系运算符和逻辑运算式IF语句(逻辑IF语句、条件IF语句、块IF语句)循环结构及其应用实例IF函数与JUMP语句循环DO循环循环嵌套2.3转移/逻辑/循环结构19转移结构是GRIP程序最常见的结构形式之一。无条件转移结构所谓无条件转移结构,就是程序执行到该语句时必须转向某个语句标号,执行该语句标号下的程序指令。条件转移结构所谓条件转移结构,就是程序按照用户的选择有条件的确定程序执行指令。格式:JUMP/{label:+},expression2.3.1转移结构及其应用实例【例2.2】20GRIP语言有六种关系运算符和三种逻辑运算式。关系运算符关系运算符只能用于算术表达式之间的比较,不能用于实体变量和字符串变量之间的比较。比较的结果不是一个数值,而是一个逻辑值,即“真”或“假”。2.3.2逻辑结构及其应用实例关系运算符含义关系运算符含义==等于不等于小于=小于或等于大于=大于或等于21逻辑运算式三种逻辑运算式:AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)。2.3.2逻辑结构及其应用实例ABNOTANOTBAANDBAORB真真假假真真真假假真假真假真真假假真假假真真假假22IF语句逻辑IF语句格式:IF/logicalexpression,statement若逻辑表达式logicalexpression为真,则执行statement语句;若不为真,则不执行statement语句。条件IF语句格式:IF/numericalexpression,[label1:,][label2:,][label3:]若算数表达式numericalexpression0,则转向语句标号label1:若算数表达式numericalexpression=0,则转向语句标号labe2:若算数表达式numericalexpression0,则转向语句标号labe3:块IF语句2.3.2逻辑结构及应用实例23IF语句块IF语句格式:IFTHEN/logicalexpression1statementblock1[ELSEIF/logicalexpression2statementblock2][ELSEIF/logicalexpression3statementblock3][ELSEstatementblocks]ENDIF2.3.2逻辑结构及应用实例【例2.3】24IF函数与jump语句循环GRIP语言中循环结构只有一个DO函数,但调用DO函数必须先确定循环次数。若循环次数不确定,则可采用IF函数与jump语句相结合来实现程序的循环。2.3.3循环结构及应用实例【例2.4】25DO循环格式:DO/label:,index,start,end,[increment]statementblocklabel:label:语句标号;index:循环变量;start:循环变量的初值;end:循环变量的终值;increment:循环变量的步长,默认为1;2.3.3循环结构及应用实例【例2.5】:用于实现垂直于一条曲线生成多个平面。26嵌套循环所谓循环嵌套就是一个循环内又包含另一个完整的循环。DO/L10:,i,1,nposlayer/work,i+1mat1=matrix/transl,lnidirDO/L20:j,I,nbar1bar1(j)=transf/mat1,barr(j)L120:call/’pt2pt’,p12,p23,p12n,p23n,mat1DO/L30:,j,1,nbar2bar2(j)=transf/mat1,barj(2)L30:DO/L40:,j,1,nbar3nbar3(j)=transf/mat1,nbar3(j)L40:group/bar
本文标题:第2章_GRIP编程基础(2)
链接地址:https://www.777doc.com/doc-4811427 .html