?? 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 + -