您的位置:首页 > 其它

ug二次开发——grip语言矩阵变换的应用

2016-12-02 16:09 429 查看
1 平移

matrix=matrix/transl,dx,dy,dz

dx,dy,dz分别表示x,y,z方向各移动的距离

举例:

entity/box1,box2

number/mati(12)

    $$建立一个长方体

    box1=solblk/origin,0,0,0,size,100,100,100

    

    $$生成平移矩阵

    mati=MATRIX/TRANSL,200,200,200    

    

    $$变换实现,此属于复制型

    box2=transf/mati,box1

halt    

2  旋转

mat2=matrix/xyrot,45   绕z轴旋转45

mat2=matrix/yzrot,45    绕x轴旋转45

mat2=matrix/zxrot,45   绕y轴旋转45

代码:

entity/c1,c2,c3,c4

number/mati(12)

$$创建圆柱

    c1=solcyl/origin,0,0,0,height,10,diamtr,5

$$z轴旋转

    mati=matrix/xyrot,45    

    c2=transf/mati,c1

$$y轴旋转

    mati=matrix/zxrot,45    

    c3=transf/mati,c1

$$y轴旋转

    mati=matrix/yzrot,45    

    c4=transf/mati,c1

halt   

3 缩放:

mat=matrix/scale,s

s 可正可负  正为放大,负为缩小

代码:

entity/c1,c2,c3

number/mati(12)

$$ 过圆心,直径20

    c1=circle/center,(point/0,0,0),radius,10

    

$$ 缩放放大,2 倍

    mati=matrix/SCALE,2

    c2=transf/mati,c1

$$ 缩放缩小,0.5 倍

    mati=matrix/SCALE,.5

    c3=transf/mati,c1    

       

halt   

实例创建一个法兰

NUMBER/D,D1,D2,D3,D4,h,h2,n,mat(12),i

ENTITY/ent(20),solid(100)

D=98

D1=21

D2=43

h2=1.6

D3=70

D4=15

n=4

h=13

$$界面

    l10:

    PARAM/'法兰参数',$

    '外径(D)',D,$

    '内径(D1)',D1,$

    '连接部分凸出直径(D2)',D2,$

    '连接部分凸出高度(h2)',h2,$

    '螺栓孔中心圆直径(D3)',D3,$

    '螺栓孔直径(D4)',D4,$

    '螺栓孔个数(n)',n,$

    '法兰厚度(h)',h,$

    respond

    JUMP/l10:,stop:,,respond

    

$$限制螺栓孔数量    

    IFTHEN/n>99

    MESSG/'螺栓孔个数太多,请重新输入!'

    JUMP/l10:

    ENDIF

$$创建旋转的直线

    ent(1)=LINE/D1/2,0,0,D1/2,h,0

    ent(2)=LINE/D1/2,h,0,D2/2,h,0

    ent(3)=LINE/D2/2,h,0,D2/2,h-h2,0

    ent(4)=LINE/D2/2,h-h2,0,D/2,h-h2,0

    ent(5)=LINE/D/2,h-h2,0,D/2,0,0

    ent(6)=LINE/D/2,0,0,D1/2,0,0

$$旋转

    solid(1)=SOLREV/ent(1..6),ORIGIN,0,0,0,$

              ATANGL,360,AXIS,0,1,0

$$拉伸

    solid(2)=SOLCYL/ORIGIN,D3/2,0,0,HEIGHT,h-h2,$

               DIAMTR,D4,AXIS,0,1,0,IFERR,stop:

        

$$旋转

    mat=MATRIX/ZXROT,360/n

    

$$用循环的方法来实现螺栓孔的创建    

    DO/l20:,i,1,n-1

    solid(i+2)=TRANSF/mat,solid(i+1)

    l20:

    SUBTRA/solid(1),WITH,solid(2..n+1)

    MASK/3

    BLANK/ALL

    stop:

    

    

halt

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: