GRIP简明教程.docx
《GRIP简明教程.docx》由会员分享,可在线阅读,更多相关《GRIP简明教程.docx(16页珍藏版)》请在冰豆网上搜索。
![GRIP简明教程.docx](https://file1.bdocx.com/fileroot1/2023-1/24/208305d8-67f1-402c-8a39-d4e247212817/208305d8-67f1-402c-8a39-d4e2472128171.gif)
GRIP简明教程
UGOpen/Grip簡明教程
$$注釋
$$Grip啟動和編譯:
先找到UG的安裝路徑,如C:
\ProgramFiles\EDS\UnigraphicsNX。
$$ 進入該路徑下的UGOPEN目錄,找到grade.bat檔,打開它,將環境變數base_dir
$$設置成setbase_dir=C:
\ProgramFiles\EDS\UnigraphicsNX,保存並運行。
$$Grip程式的編寫和編譯:
在Grip的運行程式中,鍵入4,將你編寫的Grip程式所在的目
$$錄寫入並回車。
在Grip的運行程式中,鍵入1,寫入新建Grip程式的檔案名並回車,此時
$$Grip會打開寫字板,你可以在其中寫入你的程式。
在Grip的運行程式中,鍵入2,寫入
$$所編譯的檔案名,編譯無錯後,鍵入3,寫入所鏈結的檔案名,鏈結無錯後完成。
$$你所編寫的Grip程式保存成*.grs檔,編譯後Grip會生成*.gri檔,鏈結後Grip會
$$生成*.grx檔,此檔為Grip的運行檔。
$$Grip程式的運行:
打開UG,點擊File->Execute->Grip,選擇*.grx檔,就可運行它。
$$編譯時應先編譯子函數檔,生成*.gri,子函數檔不需要鏈結,此時再編譯主函數
$$檔,生成*.gri,最後鏈結成*.grx。
$$Grip主函數檔必須以HALT結束,Grip子函數檔必須以RETURN結束。
$$定義的變數不能超過6個字元,Grip會認為Point_1和Point_2是同一個變數。
$$一行不能超過80個字元,若超過,可用$符號來換行。
$$Grip不區分大小寫,也就是Grip會認為POINT和point都是畫點函數,但是我建議Grip
$$的函數名和關鍵字用大寫,用戶定義的變數用小寫。
但是用戶定義的變數不能和Grip的
$$函數名和關鍵字重名。
$$Grip的幫助檔在C:
\EDS\UnigraphicsNX\UGDOC\html_files\mainlibrary.chm\
$$Open\GRIPReferenceGuide下。
一個簡便的Grip函數查找方法:
打開...\Word&
$$SymbolLists\MajorWordList,根據首字母來查函數。
HALT$$ 結束語
$$注釋
ENTITY/p,l,c$$實體變數定義
NUMBER/i,f(5)$$數值變數定義
STRING/str(10)$$字串變數定義
p=POINT/0,0,0$$畫點
l=LINE/0,0,0,1,1,1$$畫線
c=CIRCLE/CENTER,p,RADIUS,1$$畫圓
HALT$$ 結束語
注釋
ENTITY/p(3)
NUMBER/a(3),b(3,3)
DATA/b,1,2,3,4,5,6,7,8,9$$給b向量賦值
a(1..3)=b(1,1..3)$$讓a向量等於b向量中的第一個值
p
(1)=POINT/a(1..3)
p
(2)=POINT/b(2,1..3)
p(3)=POINT/b(3,1..3)
HALT$$ 結束語
$$注釋
STRING/str1(100)$$定義字串
str1='HelloWorld'$$為字串賦值
MESSG/str1$$顯示字串
HALT$$ 結束語
$$注釋
$$+,-,*,/,**,=$$運算函數
$$SQRTF,LOGF,ABSF,INTF,MODF,MINF,MAXF,SINF,COSF,ASINF,ACOSF,ATANF$$數學函數
$$'$'換行符
NUMBER/a
a=SINF(30)
MESSG/FSTR(a)
HALT$$ 結束語
$$注釋
NOTE/0,0,'LABEL1'$$往UG顯示區列印文字
PRINT/'LABEL2'$$往INFOMATION列印文字
MESSG/'LABEL3'$$往資訊框列印文字
HALT$$ 結束語
$$注釋
STRING/str1(100),str2(100)
NUMBER/strlen
str1='abcdefghijklmn'
str2=SUBSTR(str1,2,5)$$取字元
strlen=LENF(str1)$$取字串長度
PRINT/FSTR(3.14)$$浮點型轉換為字串
PRINT/ISTR(strlen)$$整型轉換為字串
PRINT/str2
HALT$$ 結束語
$$注釋
NUMBER/a(3),b(3),c,d(3),e,f(3),g(3)
DATA/a,1,2,3
DATA/b,4,5,6
c=DOTF(a,b)$$向量點乘
d=CROSSF(a,b)$$向量叉乘
e=VLENF(a)$$取向量模
f=SCALVF(10,a)$$向量數乘
g=UNITF(a)$$向量歸一化
PRINT/FSTR(c)
PRINT/FSTR(d
(1))+','+FSTR(d
(2))+','+FSTR(d(3))
PRINT/FSTR(e)
PRINT/FSTR(f
(1))+','+FSTR(f
(2))+','+FSTR(f(3))
PRINT/FSTR(g
(1))+','+FSTR(g
(2))+','+FSTR(g(3))
HALT$$ 結束語
$$注釋
ENTITY/c1,c2,l1
ENTITY/p1,p2,p3,p4,p5,p6,p7,p8
c1=CIRCLE/CENTER,(POINT/1,0,0),RADIUS,1
c2=CIRCLE/CENTER,(POINT/2,0,0),RADIUS,1
l1=LINE/0,0,0,-1,0,0
p1=POINT/CENTER,c1$$取圓心
p2=POINT/YLARGE,INTOF,c1,c2$$取沿y方向最大的交點
p3=POINT/YSMALL,INTOF,c1,c2$$取沿y方向最小的交點
p4=POINT/(POINT/0,-1,0),INTOF,c1,c2$$取離(POINT/0,-1,0)點最近的點
p5=POINT/p1,VECT,(LINE/p2,p3),YLARGE,2$$使p1點沿著p2p3向量往y最大方向偏移2
p6=POINT/c1,ATANGL,45$$取圓45度角點
p7=POINT/p1,DELTA,-2,-2,0$$使p1點偏置(-2,-2,0)
p8=POINT/ENDOF,XSMALL,l1$$取l1線的端點
HALT$$ 結束語
$注釋
ENTITY/c
ENTITY/ln1,ln2,ln3,ln4,ln5,ln6,ln7
c=CIRCLE/CENTER,(POINT/0,0,0),RADIUS,1
ln1=LINE/0,0,0,1,0,0
ln2=LINE/PARLEL,ln1,YLARGE,1$$沿y最大方向平行於ln1線偏置1
ln3=LINE/PARLEL,ln1,YSMALL,TANTO,c$$沿y最小方向平行於ln1和c圓相切
ln4=LINE/(POINT/0,0,0),ATANGL,45$$過(0,0,0)畫45度線
ln5=LINE/(POINT/2,0,0),RIGHT,TANTO,c$$過(2,0,0)切c圓(右手邊)
ln6=LINE/(POINT/0,0,0),PARLEL,ln5$$過(0,0,0)平行ln5線
ln7=LINE/(POINT/0,0,0),PERPTO,ln5$$過(0,0,0)垂直ln5線
HALT$$ 結束語
$$注釋
ENTITY/c1,c2,c3,c4,c5,c6
c1=CIRCLE/CENTER,(POINT/0,0,0),RADIUS,1$$過圓心和半徑畫圓
c2=CIRCLE/CENTER,(POINT/0,0,0),TANTO,(LINE/2,0,0,2,2,0),START,0,END,90$$過圓心與線相切起始角終止角
c3=CIRCLE/CENTER,(POINT/0,0,0),(POINT/3,0,0)$$過圓心和點
c4=CIRCLE/(POINT/4,0,0),(POINT/0,4,0),(POINT/-4,0,0)$$過三點畫圓
HALT$$ 結束語
$$注釋
NUMBER/p(5,3)
ENTITY/sp
DATA/p,0,0,0,1,1,0,2,4,0,3,9,0,4,16,0
sp=SPLINE/(POINT/p(1,1..3)),(POINT/p(2,1..3)),(POINT/p(3,1..3)),$
(POINT/p(4,1..3)),(POINT/p(5,1..3))$$過點畫多樣條曲線(不封閉)
sp=SPLINE/CLOSED,(POINT/p(1,1..3)),(POINT/p(2,1..3)),$
(POINT/p(3,1..3)),(POINT/p(4,1..3)),(POINT/p(5,1..3))
$$過點畫多樣條曲線(封閉)
HALT$$ 結束語
$$注釋
ENTITY/ln(4)
ENTITY/sph1,sph2,block1,cone1,cone2,cyl1,solid1,solid2
sph1=SPHERE/CENTER,(POINT/0,0,0),RADIUS,1$$畫球
sph2=SPHERE/(CIRCLE/CENTER,(POINT/0,0,0),RADIUS,2)$$畫球
block1=SOLBLK/ORIGIN,2,2,2,SIZE,1,1,1$$畫方塊
cone1=SOLCON/ORIGIN,3,3,3,HEIGHT,1,DIAMTR,1,0$$畫圓錐
cone2=SOLCON/ORIGIN,4,4,4,HEIGHT,1,DIAMTR,1,0.5,AXIS,1,0,0$$畫圓臺
cyl1=SOLCYL/ORIGIN,5,5,5,HEIGHT,1,DIAMTR,1$$畫圓柱
ln
(1)=LINE/0,0,0,1,0,0
ln
(2)=LINE/1,0,0,1,1,0
ln(3)=LINE/1,1,0,0,1,0
ln(4)=LINE/0,1,0,0,0,0
solid1=SOLEXT/ln(1..4),HEIGHT,10,AXIS,0,0,1$$拉伸實體
solid2=SOLREV/ln(1..4),ORIGIN,0,0,0,ATANGL,360,AXIS,1,0,0$$旋轉實體
HALT$$ 結束語
$$注釋
ENTITY/ln1,ln2
ENTITY/flt1,pl1,torus1
NUMBER/p_coords(3)
&FONT=&DASHED$$使線型變成虛線
ln1=LINE/0,0,0,1,0,0
&FONT=&SOLID$$使線型變成實線
ln2=LINE/0,0,0,0,1,0
flt1=FILLET/ln2,ln1,CENTER,(POINT/1,1,0),RADIUS,0.2,NOTRIM$$畫倒圓
pl1=PLANE/(POINT/0,0,0),(POINT/1,0,0),(POINT/0,1,0)$$畫平面
torus1=SOLTOR/ORIGIN,0,0,0,RADIUS,1,0.5
p_coords=CPOSF(ln1,0.25)$$取線的中間點
HALT$$ 結束語
$$注釋
ENTITY/b1,b2,b3,b4,b5,b6,b7,b8,b9
b1=SOLBLK/ORIGIN,0,0,0,SIZE,2,2,2
b2=SOLBLK/ORIGIN,1,1,1,SIZE,2,2,2
b3=SOLBLK/ORIGIN,2,2,2,SIZE,2,2,2
b4=SOLBLK/ORIGIN,3,3,3,SIZE,2,2,2
b5=SOLBLK/ORIGIN,4,4,4,SIZE,2,2,2
b6=SOLBLK/ORIGIN,5,5,5,SIZE,2,2,2
b7=UNITE/b1,WITH,b2$$實體相加
b8=INTERS/b3,WITH,b4$$實體相交
b9=SUBTRA/b5,WITH,b6$$實體相減
HALT$$ 結束語
$注釋
NUMBER/mat1(12),mat2(12),mat3(12),mat4(12)
NUMBER/gmat1(12),gmat2(12),mat(12)
ENTITY/ln1,b1,b2
ln1=LINE/0,0,0,0,1,0
b1=SOLBLK/ORIGIN,0,0,0,SIZE,1,1,1
mat1=MATRIX/TRANSL,1,2,3$$生成平移矩陣
mat2=MATRIX/XYROT,45$$生成旋轉矩陣
mat3=MATRIX/MIRROR,ln1$$生成鏡像矩陣
mat4=MATRIX/SCALE,2$$生成縮放矩陣
gmat1=MATRIX/mat1,mat2$$矩陣相乘
gmat2=MATRIX/mat3,mat4$$矩陣相乘
mat=MATRIX/gmat1,gmat2$$矩陣相乘
b2=TRANSF/mat,b1$$將變換物體的矩陣加到物體上
HALT$$ 結束語
$$注釋
ENTITY/csys1,csys2,csys3
csys1=CSYS/(POINT/1,1,0),(POINT/1,2,0),(POINT/0,1,0)$$輸入原點,x軸上點,y軸上點建立坐標系
&WCS=csys1$$取當前坐標系為上面所建的坐標系
csys2=CSYS/(LINE/0,0,0,1,1,0),(LINE/0,0,0,-1,1,0)$$輸入x軸和y軸建立坐標系
&WCS=csys2
csys3=CSYS/csys2,ORIGIN,(POINT/1,1,1)$$將坐標系csys2移到其他點上
&WCS=csys3
&WCS=&ABS$$將當前坐標系移到絕對座標系上
HALT$$ 結束語
$$注釋
ENTITY/p(3),grp1,grp2
p
(1)=POINT/0,0,0
p
(2)=POINT/1,1,1
p(3)=POINT/2,2,2
grp1=GROUP/p(1..2)$$組合實體
grp2=GROUP/grp1,p(3)
UNGRP/grp2$$取消組合
HALT$$ 結束語
$$注釋
NUMBER/index
index=4
IF/index==1,JUMP/A1:
$$條件語句
IF/index==2,JUMP/A2:
IF/index==3,JUMP/A3:
JUMP/END:
$$跳轉語句
A1:
MESSG/'index=1'
JUMP/END:
A2:
MESSG/'index=2'
JUMP/END:
A3:
MESSG/'index=3'
JUMP/END:
END:
MESSG/'END'
HALT$$ 結束語
$$注釋
DO/LOOP1:
i,1,10,1$$迴圈語句
PRINT/ISTR(i)
LOOP1:
PRINT/'END'
HALT$$ 結束語
$$注釋
NUMBER/p(5,3)
DATA/p,0,0,0,1,1,1,2,2,2,3,3,3,4,4,4
DO/LOOP1:
i,1,5,1$$雙重迴圈
DO/LOOP2:
j,1,3,1
PRINT/ISTR(p(i,j))
LOOP2:
LOOP1:
PRINT/'END'
HALT$$ 結束語
$$注釋
$$==等於,<>不等於,<小於,>大於,<=小於等於,>=大於等於,NOT非,AND與,OR或
NUMBER/index,order
index=1
order=1
IF/index==1,MESSG/'index=1'$$單條件語句
IF/index==2,MESSG/'index=2'
IF/index==3ANDorder==1,MESSG/'index=3'
HALT$$ 結束語
$注釋
NUMBER/a,b
a=2
b=1
IFTHEN/a>b$$多條件語句
MESSG/'a>b'
ELSEIF/a
MESSG/'a
ELSE
MESSG/'a=b'
ENDIF
HALT$$ 結束語
$$注釋
NUMBER/A,B
A=2
B=2
IFTHEN/A<0$$嵌套迴圈
MESSG/'A<0'
ELSEIF/A>0
IFTHEN/B>0
MESSG/'A>0,B>0'
ELSE
MESSG/'A>0,B<0'
ENDIF
ELSE
MESSG/'A=0'
ENDIF
HALT$$ 結束語
$$注釋
ENTITY/ln(4)
ln
(1)=LINE/0,0,0,1,0,0
ln
(2)=LINE/1,0,0,1,1,0
ln(3)=LINE/1,1,0,0,1,0
ln(4)=LINE/0,1,0,0,0,0
CALL/'test24sub',ln$$調用子函數,第一個為函數名,後面的為傳入的形參
HALT$$ 結束語
$$注釋
PROC/ln$$子函數頭,包含傳入的形參
ENTITY/ln(4)$$定義形參變數
ENTITY/body1$$子函數體
body1=SOLEXT/ln,HEIGHT,1,AXIS,0,0,1
RETURN$$ 結束語
$$注釋-1
NUMBER/RESP,NRESP,IRESP,GRESP,PRESP,ORESP
STRING/your_name(100),your_gender(100)
NUMBER/your_id,your_mathmatic,your_english,your_chinese
NUMBER/p_x,p_y,p_z,obj_num
ENTITY/your_object(100)
BACK:
$$選擇功能表:
函數名/提示,功能表1,功能表2......(最多有14個功能表),用戶回應值
CHOOSE/'Chooseoperationtype','InputName','InputInfo',$
'InputGender','InputPoint','SelectObject','Finish',RESP
$$用戶回應值RESP:
1-當用戶點擊Back按鈕時-程式跳到BACK:
處
$$2-當用戶點擊Cancel按鈕時-程式跳到END:
處
$$3-此回應值無用-無跳轉
$$4-當用戶需要嵌套下一個對話方塊時-無跳轉
$$5-當用戶點擊InputName按鈕時-程式跳到MENU1:
處
$$6-當用戶點擊InputInfo按鈕時-程式跳到MENU2:
處
$$......
$$10-當用戶點擊Finish按鈕時-程式跳到MENU6:
處
$$用戶回應值
JUMP/BACK:
END:
,,MENU1:
MENU2:
MENU3:
MENU4:
MENU5:
MENU6:
RESP
MENU1:
$$當用戶點擊InputName按鈕時,跳出字串輸入框
$$函數名/提示,返回變數,用戶回應值
TEXT/'Inputyourname',your_name,NRESP
$$用戶回應值NRESP:
1-當用戶點擊Back按鈕時-程式跳到BACK:
處
$$2-當用戶點擊Cancel按鈕時-程式跳到END:
處
$$3-當用戶沒有輸入字串而點擊OK按鈕時-無跳轉
$$4-當用戶需要嵌套下一個對話方塊時-無跳轉
$$5-當用戶輸入字串而點擊OK按鈕時-程式跳到BACK:
處
$$用戶回應值
JUMP/BACK:
END:
,,BACK:
NRESP
MENU2:
$$當用戶點擊InputInfo按鈕時,跳出參數輸入框
$$函數名/提示,參數1名稱,關鍵字表示此參數為整型,返回變數1,
$$參數2名稱,無關鍵字表示此參數為浮點型,返回變數2,
$$參數3名稱,返回變數3,參數4名稱,返回變數4,用戶回應值
PARAM/'Inputyourinformation','ID',INT,your_id,$
'Mathmatic',your_mathmatic,'English',$
your_english,'Chinese',your_chinese,IRESP
$$用戶回應值IRESP:
1-當用戶點擊Back按鈕時-程式跳到BACK:
處
$$2-當用戶點擊Cancel按鈕時-程式跳到END:
處
$$3-當用戶點擊OK按鈕時-程式跳到BACK:
處
$$4-當用戶需要嵌套下一個對話方塊時-無跳轉
$$用戶回應值
JUMP/BACK:
END:
BACK:
,IRESP
MENU3:
$$當用戶點擊InputGender按鈕時,跳出選擇對話方塊
$$注釋-2
CHOOSE/'Inputyourgender','Male','Female',GRESP
JUMP/BACK:
END:
,,GMENU1:
GMENU2:
GRESP
GMENU1:
your_gender='Male'
JUMP/BACK:
GMENU2:
your_gender='Female'
JUMP/BACK:
MENU4:
$$當用戶點擊InputPoint按鈕時,跳出選取點對話方塊
$$函數名/提示,返回點x座標,返回點y座標,返回點z座標,用戶回應值
GPOS/'Inputyourpoint',p_x,p_y,p_z,PRESP
$$用戶回應值PRESP:
1-當用戶點擊Back按鈕時-程式跳到BACK:
處
$$2-當用戶點擊Cancel按鈕時-程式跳到END:
處
$$3-當用戶點擊OK按鈕時-程式跳到BACK:
處
$$4-此回應值無用-無跳轉
$$5-當用戶選擇點後-程式跳到BACK:
處
$$用戶回應值
JUMP/BACK:
END:
BACK:
,BACK:
PRESP
MENU5:
$$當用戶點擊InputObject按鈕時,跳出選擇物體對話方塊
$$函數名/提示,返回實體變數,關鍵字表示允許多選物體,
$$返回選擇物體數量,用戶回應值
IDENT/'Inputyourobject',your_object,CNT,obj_num,ORESP
$$用戶回應值ORESP:
1-當用戶點擊Back按鈕時-程式跳到BACK:
處
$$2-當用戶點擊Cancel按鈕時-程式跳到END:
處
$$3-當用戶點擊OK按鈕時-程式跳到BACK:
處
JUMP/BACK:
END:
BACK:
ORESP
MENU6:
PRINT/'YourName:
'+your_n