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
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
相关文章推荐
- mysql 查询结果不正确
- Angular $http
- 领域驱动之无状态操作
- onActivityResult中resultCode老是等于0
- hdu 5247 找连续数 (java)
- JVM理论与实践【堆内存结构与垃圾回收】
- Oracle索引详解
- 关于Log4j
- 使用C语言来扩展PHP,写PHP扩展dll
- 部分网站允许空白referer的防盗链图片的js破解代码
- Mac of MyEclipse 配置Tomcat数据源,并添加数据源驱动
- DM8168的PCIE2.0使用笔记
- Citrix XD、Pvs测试日记《六、XenDeskTop7.6计算机目录和交付组》
- Android 4.4系统前后的调用系统相册和相机的问题
- 人生
- 数据库语言的一些操作
- 奶牛卧室
- CentOS Linux release 7.2.1511安装Tomcat7
- Ubuntu 下php调用c语言.so文件
- Android爬坑-悬浮窗显示位置问题