⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6.4.grs

📁 UG二次开发很好的东西 需要的朋友可以下载来看看 很好用啊
💻 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 + -