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

📄 hight-tiaowenmian.grs

📁 UG二次开发很好的东西 需要的朋友可以下载来看看 很好用啊
💻 GRS
字号:
proc/face,facenum,draftcurve,leftcurve,rightcurve,tiaowen,hight,workcsys
entity/face(50)               $$条状配光纹的曲面
entity/draftcurve             $$条状配光纹的脊线
entity/leftcurve              $$条状配光纹的左侧曲线
entity/rightcurve             $$条状配光纹的右侧曲线
entity/pts(50)                $$脊线离散形成的点集
entity/pls(50)                $$过点pts(i)且垂直于脊线的平面
entity/workcsys               $$工作坐标系
entity/ptcsys                 $$临时坐标系
entity/interline(50)          $$条状配光纹曲线与平面pls(i)的相交曲线
entity/rightpoint(50)         $$条状配光纹右侧曲线与interline(i)的交点
entity/leftpoint(50)          $$条状配光纹左侧曲线与interline(i)的交点
entity/rightresult(50)        $$点集rightpoint(i)提取之后的点集
entity/leftresult(50)         $$点集leftpoint(i)提取之后的点集
entity/interresult(50)        $$曲线组interline(i)提取之后的曲线组
entity/cenpoint(50)           $$点rightresult(i)与leftresult(i)的中点
entity/upcenpoint(50)         $$点cenpoint(i)偏置一段距离后生成的圆弧顶点
entity/arc(50)                $$圆弧曲线组
entity/tiaowen                $$生成的条纹面
number/c(10,7),a(7)

$$将脊线离散成50个点,形成点集。
l10:
cpset/earcl,draftcurve,50,pts
blank/pts(1..50)

$$过脊线上每一个点pts(i)作垂直于脊线的平面pls(i)。
l20:
do/l30:,i,1,50
pls(i)=plane/perpto,draftcurve,thru,pts(i)
blank/pls(i)

$$给rightpoint(i),leftpoint(i),interline(i),arc(i)赋空值。
l30:
do/l40:,i,1,50
rightpoint(i)=&nulent
leftpoint(i)=&nulent
interline(i)=&nulent
arc(i)=&nulent

l40:
if/facenum==1,jump/l80:
if/facenum<>1,jump/l50:

$$若条状配光纹曲面个数facnum<>1,则调用子程序singleface-create-curve求条状配光纹曲
$$面face(1)与平面pls(i)的相交曲线interline(i)。
l50:
i=0

l60:
i=i+1
call/'mutiface-create-curve',face,facenum,pls(i),interline(i),pts(i)

l70:
if/i<50,jump/l60:
if/i==50,jump/l110:

$$若条状配光纹曲面facenum==1,则调用子程序mutiface-create-curve求条状配光纹曲
$$面face(1..facenum)与平面pls(i)的相交曲线interline(i)。
l80:
i=0

l90:
i=i+1
call/'singleface-create-curve',face(1),pls(i),interline(i),pts(i)

l100:
if/i<50,jump/l90:
if/i==50,jump/l110:

l110:
i=0
count=0

l120:
i=i+1
$$计算条状配光纹右侧曲线与脊线的距离。
a(1..7)=reldst/rightcurve,interline(i)
$$若距离<0.05,则执行以下程序;若距离>=0.05则跳过此段程序。
ifthen/a(7)<0.05
$$调用子程序create-wcs,以曲线rightcurve和interline(i)生成临时坐标系。
  call/'create-wcs',rightcurve,interline(i),ptcsys
$$将当前坐标系转换为临时坐标系。
  &wcs=ptcsys
$$在临时坐标系下求曲线rightcurve和interline(i)的交点rightpoint(i)。
  rightpoint(i)=point/intof,rightcurve,interline(i)
  blank/rightpoint(i)
else
  jump/l130:
endif

l130:
$$计算条状配光纹左侧曲线与脊线的距离。
a(1..7)=reldst/leftcurve,interline(i)
$$若距离<0.05,则执行以下程序;若距离>=0.05则跳过此段程序。
ifthen/a(7)<0.05
$$调用子程序create-wcs,以曲线leftcurve和interline(i)生成临时坐标系。
  call/'create-wcs',leftcurve,interline(i),ptcsys
$$将当前坐标系转换为临时坐标系。
  &wcs=ptcsys
$$在临时坐标系下求曲线leftcurve,interline(i)的交线leftpoint(i)。
  leftpoint(i)=point/intof,leftcurve,interline(i)
  blank/leftpoint(i)
else
  jump/l140:
endif

$$提取点集和曲线组。
l140:
ifthen/rightpoint(i)<>&nulent and leftpoint(i)<>&nulent
  count=count+1
  rightresult(count)=rightpoint(i)
  leftresult(count)=leftpoint(i)
  interresult(count)=interline(i)
else
  jump/l150:
endif


l150:
if/i<50,jump/l120:
if/i==50,jump/l160:

l160:
i=0

l170:
i=i+1
$$调用子程序create-center求点rightresult(i)和leftresult(i)的中点cenpoint(i)。
call/'create-center',face,facenum,interresult(i),rightresult(i),$
leftresult(i),cenpoint(i)
$$将当前坐标系转换成工作坐标系。
&wcs=workcsys
$$调用子程序create-upcenter求与点cenpoint(i)相距hight的圆弧顶点。
call/'create-upcenter',face,facenum,cenpoint(i),upcenpoint(i),hight
$$由rightresult(i),upcenpoint(i),leftresult(i)三点形成圆弧。
arc(i)=circle/rightresult(i),upcenpoint(i),leftresult(i)
blank/cenpoint(i),upcenpoint(i)
$$计算圆弧arc(i)与圆弧顶点upcenpoint(i)的距离。
a(1..7)=reldst/arc(i),upcenpoint(i)
if/a(7)>0.1,jump/l180:
if/a(7)<=0.1,jump/l190:

l180:
$$若距离大于0.1mm,则删除这个圆弧,并通过点
$$leftresult(i),upcenpoint(i),rightresult(i)重新生成圆弧arc(i)
delete/arc(i)
arc(i)=circle/leftresult(i),upcenpoint(i),rightresult(i)

l190:
$$隐藏圆弧arc(i)。
blank/arc(i)
if/i<count,jump/l170:
if/i==count,jump/l200:

l200:
$$删除点rightpoint(i),leftpoint(i),cenpoint(i),upcenpoint(i)以及曲线
$$interline(i)。

l210:
i=0

l220:
i=i+1
delete/pts(i),pls(i)
if/rightpoint(i)<>&nulent,delete/rightpoint(i)
if/leftpoint(i)<>&nulent,delete/leftpoint(i)
if/cenpoint(i)<>&nulent,delete/cenpoint(i)
if/upcenpoint(i)<>&nulent,delete/upcenpoint(i)
if/interline(i)<>&nulent,delete/interline(i)

l230:
if/i<50,jump/l220:
if/i==50,jump/l240:

$$生成条纹。
l240:
tiaowen=bsurf/mesh,rightcurve,leftcurve,with,arc(1..count)

l250:
jump/trm:

trm:
return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -