📄 6.3.grs
字号:
entity/face $$曲面
entity/cur $$曲面上的曲线
entity/refpt $$曲线偏置方向参考点
entity/pts(50) $$曲线离散点数为50的点集
entity/pls(50) $$过点pts(i)且与曲线cur垂直的平面
entity/interline(50) $$曲线face与平面pls(i)的相交曲线
entity/startinterline(50) $$相交曲线interline(i)的起点
entity/endinterline(50) $$相交曲线interline(i)的终点
entity/refpoint $$曲线裁剪参考点
entity/trimcur(50) $$相交曲线interline(i)裁剪后生成的实体
entity/createspline(50) $$曲线interline(i)裁剪之后得到的目标点集
entity/offsetcur $$曲线cur偏置后生成的曲线
number/a(3),b(7),c(10,7),dist(50)
$$选择一个曲面。
l10:
ident/'select a face',face,resp
jump/l10:,trm:,,resp
$$选择曲面上得曲线。
l20:
ident/'select a curve',cur,resp
jump/l10:,trm:,,resp
$$选择曲线在曲面内的偏置距离。
l30:
param/'enter the offset distance','偏置距离=',offdis,resp
jump/l20:,trm:,,resp
$$选择曲线偏置方向参考点。
l40:
gpos/'select a point',x,y,z,resp
jump/l30:,trm:,,resp
l50:
refpt=point/x,y,z
$$将曲线cur离散成50个点。
cpset/earcl,cur,50,pts
blank/pts(1..50)
l60:
$$过点pts(i)作垂直曲线cur的平面pls(i)。
do/l70:,i,1,50
pls(i)=plane/perpto,cur,thru,pts(i)
blank/pls(i)
$$调用子程序create-curve求曲面与平面pls(i)的相交曲线interline(i)。
l70:
i=0
l80:
i=i+1
call/'create-curve',face,pls(i),interline(i),pts(i)
blank/interline(i)
l90:
if/i<50,jump/l80:
if/i==50,jump/l100:
l100:
i=0
m=0
ptnum=0
$$提取每条相交曲线interline的起点和终点并计算与参考点refpt的距离,
$$利用点pts作为边界调用函数CRVTRM对曲线interline进行裁剪.
l110:
i=i+1
$$提取相交曲线interline(i)的起点和终点。
a(1..3)=&spoint(interline(i))
startinterline(i)=point/a(1..3)
blank/startinterline(i)
a(1..3)=&epoint(interline(i))
endinterline(i)=point/a(1..3)
blank/endinterline(i)
$$计算点startinterline(i)与参考点refpt的距离。
b(1..7)=reldst/startinterline(i),refpt
startdis=b(7)
$$计算点endinterline(i)与参考点refpt的距离。
b(1..7)=reldst/endinterline(i),refpt
enddis=b(7)
if/startdis<enddis,jump/l120:
if/startdis>=enddis,jump/l130:
l120:
$$若startdis<enddis,则点endinterline(i)作为参考点,同时删除点
$$startinterline(i)。
refpoint=endinterline(i)
delete/startinterline(i)
jump/l140:
l130:
$$若startdis>=enddis,则点startinterline(i)作为参考点,同时删除点
$$endinterline(i)。
refpoint=startinterline(i)
delete/endinterline(i)
jump/l140:
l140:
$$以点pts(i)为边界,refpoint为参考点裁剪曲线interline(i)。
trimcur(i)=crvtrm/interline(i),ref,refpoint,first,pts(i),ref,$
refpoint,int,refpoint,notrim,status,1
delete/refpoint
$$计算裁剪之后的相交曲线interline(i)的长度。
anlsis/arclen,interline(i),mmeter,length
if/length>offdis,jump/l150:
if/length<=offdis,jump/l220:
$$若length>offdis,则对相交曲线再次进行裁剪,并最终得到偏置曲线的
$$拟合点procreate(i)
l150:
m=m+1
$$再次提取相交曲线interline(i)的起点和终点。
a(1..3)=&spoint(interline(i))
startinterline(i)=point/a(1..3)
blank/startinterline(i)
a(1..3)=&epoint(interline(i))
endinterline(i)=point/a(1..3)
blank/endinterline(i)
$$计算点startinterline(i)与曲线cur的距离。
b(1..7)=reldst/cur,startinterline(i)
dis1=b(7)
$$计算点endinterline(i)与曲线cur的距离。
b(1..7)=reldst/cur,endinterline(i)
dis2=b(7)
if/dis1<dis2,jump/l160:
if/dis1>dis2,jump/l170:
if/dis1==dis2,jump/err2:
l160:
$$若dis1<dis2,则以相交曲线终点为参考点,长度为offdis再次裁剪interline(i),
$$同时删除点startinterline(i)和endinterline(i)。
ctrim/total,interline(i),offdis,end
delete/startinterline(i),endinterline(i)
jump/l180:
l170:
$$若dis1>dis2,则以相交曲线起点为参考点,长度为offdis再次裁剪interline(i),
$$同时删除点startinterline(i)和endinterline(i)。
ctrim/total,interline(i),offdis,start
delete/startinterline(i),endinterline(i)
jump/l180:
l180:
$$再次提取相交曲线interline(i)的起点和终点。
a(1..3)=&spoint(interline(i))
startinterline(i)=point/a(1..3)
blank/startinterline(i)
a(1..3)=&epoint(interline(i))
endinterline(i)=point/a(1..3)
blank/endinterline(i)
$$计算点startinterline(i)与曲线cur的距离。
b(1..7)=reldst/cur,startinterline(i)
dis1=b(7)
$$计算点endinterline(i)与曲线cur的距离。
b(1..7)=reldst/cur,endinterline(i)
dis2=b(7)
if/dis1<dis2,jump/l190:
if/dis1>dis2,jump/l200:
if/dis1==dis2,jump/err2:
l190:
$$若dis1<dis2,则endinterline(i)为目标点,同时删除点startinterline(i)。
createspline(m)=endinterline(i)
ptnum=m
delete/startinterline(i)
jump/l210:
l200:
$$若dis1>dis2,则startinterline(i)为目标点,同时删除点endinterline(i)。
createspline(m)=startinterline(i)
ptnum=m
delete/endinterline(i)
jump/l210:
l210:
delete/interline(i)
if/i<50,jump/l110:
if/i==50,jump/l220:
l220:
$$拟合点createspline(1..ptnum)生成偏置曲线,并删除相应的点。
offsetcur=spline/createspline(1..ptnum)
delete/createspline(1..ptnum)
$$删除点pts(i)和平面pls(i)。
l240:
delete/pls(1..50),pts(1..50)
jump/trm:
trm:
halt
err2:
messg/'the length of the interline is zero.'
jump/trm:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -