📄 6.4.grs
字号:
entity/pt(3) $$确定原始坐标系的三个点
entity/precsys $$原始坐标系
entity/face(50) $$条状配光纹的曲面
entity/offlinecurve(200) $$条状配光纹的边界曲线组
entity/rachis(100) $$条状配光纹的脊线曲线组
entity/refcurve $$参考曲线
entity/result(3) $$一维点数组,数量为3
entity/centerpt $$点集result(3)的中点
entity/perpcurve $$过边界曲线offlinecurve(1)中点且垂直此曲线的平面
entity/unintcurve $$条状配光纹的曲面与平面perpcurve的交线
entity/workcsys $$工作坐标系
entity/tiaowen(200) $$条状配光纹数组
entity/sewtiaowen $$缝合之后的条状配光纹
number/a(3)
$$原始坐标系实体。
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)
$$选择条状配光纹的曲面face(1..facenum)。
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,5,6,8,9
ident/'选择配光纹的边界曲线',offlinecurve,cnt,lnnum,resp
jump/l20:,trm:,,resp
mask/all
l40:
if/lnnum<2,jump/err1:
l50:
choose/'确定脊线的数量','一条脊线','多条脊线',resp
jump/l50:,trm:,,,l60:,l80:,resp
l60:
rachtype=1
ident/'选择一条脊线',rachis(1),resp
jump/l50:,trm:,,resp
l70:
jump/l120:
l80:
rachtype=2
messg/'请选择'+istr(lnnum-1)+'条脊线'
$$按提示的数量依次选择脊线。
l90:
i=0
l100:
i=i+1
ident/'选择脊线'+istr(i),rachis(i),resp
jump/err2:,trm:,,resp
l110:
if/i<(lnnum-1),jump/l100:
if/i==(lnnum-1),jump/l120:
l120:
choose/'选择圆弧半径确定方式','半径方式','高度方式',resp
jump/l120:,trm:,,,l130:,l160:,resp
l130:
rpaint
htype=1
refcurve=rachis(1)
a(1..3)=&spoint(refcurve)
crtwrt/'start point',a(1..3)
a(1..3)=&epoint(refcurve)
crtwrt/'end point',a(1..3)
l140:
param/'确定条纹起点和终点半径','起点条纹半径=',stradius,'终点条纹半径=',$
endradius,resp
jump/l120:,trm:,,resp
l150:
jump/l180:
l160:
rpaint
htype=2
param/'确定条纹高度','条纹高度=',hight,resp
jump/l120:,trm:,,resp
l170:
if/hight>0,jump/l180:
if/hight<=0,jump/err3:
$$确定工作坐标系。
l180:
$$将所选择曲线组的第一条曲线离散成3个点。
cpset/eparam,offlinecurve(1),3,result
$$删除起点和终点,保留中点。
centerpt=result(2)
blank/centerpt
delete/result(1),result(3)
$$过第一条曲线的中点作垂直于第一条曲线的平面。
perpcurve=plane/perpto,offlinecurve(1),thru,centerpt
blank/perpcurve
ifthen/facenum==1
$$若条状配光纹曲面个数facenum==1,则调用子程序singleface-create-curve生成
$$曲面face(1)与平面perpcurve的交线unintcurve。
call/'singleface-create-curve',face(1),perpcurve,unintcurve,centerpt
else
$$若条状配光纹曲面个数facenum<>1,则调用子程序mutiface-create-curve生成
$$曲面face(1..facenum)与平面perpcurve的交线unintcurve。
call/'mutiface-create-curve',face,facenum,perpcurve,$
unintcurve,centerpt
endif
blank/unintcurve
call/'create-wcs',unintcurve,offlinecurve(1),workcsys
&wcs=workcsys
l190:
do/l200:,i,1,lnnum
tiaowenmian(i)=&nulent
l200:
i=0
l210:
i=i+1
$$按脊线数量以及圆弧半径确定方式生成条纹面。
ifthen/rachtype==1 and htype==1
call/'radius-tiaowenmian',face,facenum,rachis(1),offlinecurve(i),$
offlinecurve(i+1),tiaowen(i),stradius,endradius,workcsys
elseif/rachtype==1 and htype==2
call/'hight-tiaowenmian',face,facenum,rachis(1),offlinecurve(i),$
offlinecurve(i+1),tiaowen(i),hight,workcsys
elseif/rachtype==2 and htype==1
call/'radius-tiaowenmian',face,facenum,rachis(i),offlinecurve(i),$
offlinecurve(i+1),tiaowen(i),stradius,endradius,workcsys
elseif/rachtype==2 and htype==2
call/'hight-tiaowenmian',face,facenum,rachis(i),offlinecurve(i),$
offlinecurve(i+1),tiaowen(i),hight,workcsys
else
jump/trm:
endif
l220:
if/i<(lnnum-1),jump/l210:
if/i==(lnnum-1),jump/l230:
l230:
rpaint
choose/'选择是否缝合条纹','缝合条纹','不缝合条纹',resp
jump/l230:,trm:,,,l240:,trm:,resp
l240:
sewtiaowen=sew/tiaowen(1..(lnnum-1))
jump/trm:
trm:
&wcs=precsys
halt
err1:
messg/'you must select more curves'
jump/l30:
err2:
i=i-1
jump/l100:
err3:
messg/'the height must be positive.'
jump/l160:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -