📄 6.5.grs
字号:
entity/pt(3) $$确定原始坐标系的三个点
entity/precsys $$原始坐标系
entity/face(50) $$鱼眼灯花的曲面
entity/offlinecurve(200) $$组成网格的第一组曲线
entity/offrowcurve(200) $$组成网格的第二组曲线
entity/workcsys $$工作坐标系
entity/interpoint(200,200) $$两组曲线组的交点
entity/rowcenterpoint(200,200) $$第一组曲线组相邻两点的中点
entity/linecenterpoint(200,200) $$第二组曲线组相邻两点的中点
entity/ptwcs $$临时坐标系
entity/uprowcenterpoint(200,200) $$第一组曲线组相邻两点的中点的偏置点
entity/uplinecenterpoint(200,200) $$第二组曲线组相邻两点的中点的偏置点
entity/arcline(200,200) $$第一组曲线组交点生成的圆弧
entity/arcrow(200,200) $$第二组曲线组交点生成的圆弧
entity/bface $$鱼眼配光纹
number/a(7)
l10:
pt(1)=point/0,0,0
blank/pt(1)
pt(2)=point/1,0,0
blank/pt(2)
pt(3)=point/0,1,0
blank/pt(3)
precsys=csys/pt(1),pt(2),pt(3)
delete/pt(1..3)
l20:
mask/16,17,18,19,20,22,23,43,65,66,70,71
ident/'选择单个或多个曲面',face,cnt,facenum,resp
jump/l20:,trm:,,resp
mask/all
l30:
mask/3,6,9
ident/'选择第一组曲线',offlinecurve,cnt,lnnum,resp
jump/l20:,trm:,,resp
mask/all
l40:
mask/3,6,9
ident/'选择第二组曲线',offrowcurve,cnt,rownum,resp
jump/l30:,trm:,,resp
mask/all
l50:
if/lnnum<2 or rownum<2,jump/err1:
l60:
param/'确定鱼眼高度','鱼眼高度=',yuwen,resp
jump/l60:,trm:,,resp
l70:
call/'create-wcs',offlinecurve(1),offrowcurve(1),workcsys
j=0
l80:
j=j+1
i=0
l90:
i=i+1
interpoint(j,i)=&nulent
rowcenterpoint(j,i)=&nulent
linecenterpoint(j,i)=&nulent
uprowcenterpoint(j,i)=&nulent
uplinecenterpoint(j,i)=&nulent
arcrow(j,i)=&nulent
arcline(j,i)=&nulent
$$计算曲线offlinecurve(j)和offrowcurve(i)之间的最小距离。
a(1..7)=reldst/offlinecurve(j),offrowcurve(i)
if/a(7)<0.2,jump/l100:
if/a(7)>=0.2,jump/l110:
l100:
$$由曲线offlinecurve(j)和offrowcurve(i)生成临时坐标系,并将当前坐标系转换
$$为临时坐标系,并求此两曲线的交点。
call/'create-wcs',offlinecurve(j),offrowcurve(i),ptwcs
&wcs=ptwcs
interpoint(j,i)=point/intof,offlinecurve(j),offrowcurve(i)
l110:
if/i<rownum,jump/l90:
if/i==rownum,jump/l120:
l120:
if/j<lnnum,jump/l80:
if/j==lnnum,jump/l130:
l130:
j=0
l140:
j=j+1
i=0
l150:
i=i+1
m=i
n=i+1
hight=yuwen/2
ifthen/interpoint(j,m)<>&nulent and interpoint(j,n)<>&nulent
$$调用子程序create-center求interpoint(j,m)和interpoint(j,n)的中点
$$rowcenterpoint(j,i)。
call/'create-center',face,facenum,offlinecurve(j),interpoint(j,m),$
interpoint(j,n),rowcenterpoint(j,i)
blank/rowcenterpoint(j,i)
$$调用子程序create-upcenter求与rowcenterpoint(j,i)相距hight的圆弧顶点
$$uprowcenterpoint(j,i)。
&wcs=workcsys
call/'create-upcenter',face,facenum,rowcenterpoint(j,i),$
uprowcenterpoint(j,i),hight
blank/uprowcenterpoint(j,i)
$$由interpoint(j,n),uprowcenterpoint(j,i)和interpoint(j,m)三点生成的圆弧
$$arc(j,i)。
arcrow(j,i)=circle/interpoint(j,n),uprowcenterpoint(j,i),interpoint(j,m)
$$计算圆弧arc(j,i)与圆弧顶点uprowcenterpoint(j,i)的距离。
a(1..7)=reldst/arcrow(j,i),uprowcenterpoint(j,i)
if/a(7)>0.05,jump/l160:
if/a(7)<=0.05,jump/l170:
else
jump/l170:
endif
$$若距离大于0.05mm,则删除这个圆弧,并通过点
$$interpoint(j,m),uprowcenterpoint(j,i)和interpoint(j,n)重新生成圆弧
$$arcrow(j,i)。
l160:
delete/arcrow(j,i)
arcrow(j,i)=circle/interpoint(j,m),uprowcenterpoint(j,i),interpoint(j,n)
l170:
if/i<(rownum-1),jump/l150:
if/i==(rownum-1),jump/l180:
l180:
if/j<lnnum,jump/l140:
if/j==lnnum,jump/l190:
l190:
j=0
l200:
j=j+1
i=0
l210:
i=i+1
m=i
n=i+1
hight=yuwen/2
ifthen/interpoint(m,j)<>&nulent and interpoint(n,j)<>&nulent
$$调用子程序create-center求interpoint(m,j)和interpoint(n,j)的中点
$$linecenterpoint(j,i)。
call/'create-center',face,facenum,offrowcurve(j),interpoint(m,j),$
interpoint(n,j),linecenterpoint(j,i)
blank/linecenterpoint(j,i)
$$调用子程序create-upcenter求与linecenterpoint(j,i)相距hight的圆弧顶点
$$uplinecenterpoint(j,i)。
&wcs=workcsys
call/'create-upcenter',face,facenum,linecenterpoint(j,i),$
uplinecenterpoint(j,i),hight
blank/uplinecenterpoint(j,i)
$$由interpoint(n,j),uplinecenterpoint(j,i)和interpoint(m,j)三点生成的圆弧
$$arcline(j,i)。
arcline(j,i)=circle/interpoint(n,j),uplinecenterpoint(j,i),interpoint(m,j)
$$计算圆弧arcline(j,i)与圆弧顶点uplinecenterpoint(j,i)的距离。
a(1..7)=reldst/arcline(j,i),uplinecenterpoint(j,i)
if/a(7)>0.05,jump/l220:
if/a(7)<=0.05,jump/l230:
else
jump/l230:
endif
$$若距离大于0.05mm,则删除这个圆弧,并通过点
$$interpoint(m,j),uplinecenterpoint(j,i),interpoint(n,j)重新生成圆弧
$$arcliine(j,i)。
l220:
delete/arcline(j,i)
arcline(j,i)=circle/interpoint(m,j),uplinecenterpoint(j,i),interpoint(n,j)
l230:
if/i<(lnnum-1),jump/l210:
if/i==(lnnum-1),jump/l240:
l240:
if/j<rownum,jump/l200:
if/j==rownum,jump/l250:
$$生成鱼眼配光纹。
l250:
j=0
l260:
j=j+1
i=0
l270:
i=i+1
bface=bsurf/mesh,arcrow(i,j),arcrow(i+1,j),with,arcline(j,i),$
arcline(j+1,i),type,3,toler,0.01,0.01,result,enr,iferr,err2:
rpaint
l280:
if/i<(lnnum-1),jump/l270:
if/i==(lnnum-1),jump/l290:
l290:
if/j<(rownum-1),jump/l260:
if/j==(rownum-1),jump/l300:
l300:
j=0
l310:
j=j+1
i=0
l320:
i=i+1
$$删除点interpoint(j,i),隐藏圆弧arcrow(j,i)。
if/interpoint(j,i)<>&nulent,blank/interpoint(j,i)
if/arcrow(j,i)<>&nulent,blank/arcrow(j,i)
l330:
if/i<rownum,jump/l320:
if/i==rownum,jump/l340:
l340:
if/j<lnnum,jump/l310:
if/j==lnnum,jump/l350:
l350:
j=0
l360:
j=j+1
i=0
l370:
i=i+1
$$隐藏圆弧arcline(j.i)。
if/arcline(j,i)<>&nulent,blank/arcline(j,i)
l380:
if/i<lnnum,jump/l370:
if/i==lnnum,jump/l390:
l390:
if/j<rownum,jump/l360:
if/j==rownum,jump/l400:
l400:
jump/trm:
trm:
&wcs=precsys
halt
err1:
messg/'you must select more curve of each groups'
jump/l30:
err2:
if/i<(lnnum-1),jump/l270:
if/i==(lnnum-1) and j<(rownum-1),jump/l260:
if/i==(lnnum-1) and j==(rownum-1),jump/l300:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -