在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 41|回复: 0

[资料] layout 多边形转换成矩形

[复制链接]
发表于 昨天 23:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x




  1. hiSetBindKeys("Layout" list(list("<Key>F12" "PolygonToRect()")))

  2. procedure(PolygonToRect()
  3. let((cv)
  4. cv = geGetEditCellView()
  5. objs = geGetSelSet()

  6. foreach(obj objs
  7.         when(obj~>objType=="polygon"
  8.                 objbox=obj~>bBox
  9.                 Xmin=leftEdge(objbox)
  10.                 Xmax=rightEdge(objbox)
  11.                 Ymin=bottomEdge(objbox)
  12.                 Ymax=topEdge(objbox)
  13.                 objpoints=obj~>points
  14.                 newpoint=list()
  15.                 newpointY=list()
  16.                 newpointX=list()
  17.                 pointA=car(last(objpoints))                               
  18.                 foreach(        point objpoints
  19.                         pointB=point       
  20.                         if(car(pointA) == car(pointB) then
  21.                                 pointy=list((car(pointA):Ymin) (car(pointB):Ymax))                               
  22.                                 when(member(pointy newpointY)==nil
  23.                                         newpointY=append1(newpointY pointy)
  24.                                         )
  25.                         else
  26.                                 pointy=list(Xmin:cadr(pointA) (Xmax:cadr(pointB)))
  27.                                 when(member(pointy newpointX)==nil
  28.                                         newpointX=append1(newpointX pointy)
  29.                                         )
  30.                                 );if
  31.                         pointA=pointB
  32.                         );foreach

  33.                 if(length(newpointY) >= length(newpointX) then
  34.                         newpoint= newpointX
  35.                         else
  36.                         newpoint= newpointY
  37.                         );if

  38.                         objsa=list(obj)
  39.                         sum=1
  40.                 foreach(pointa newpoint
  41.                         if(sum==1 then
  42.                                 objsaa=objsa
  43.                         else
  44.                                 objsaa=nconc(objsf objse)
  45.                         );if
  46.                         objsf=objsaa
  47.                         objse=nil
  48.                         objsc=nil
  49.                         objsd=nil
  50.                         foreach(objsb objsaa
  51.                                 objsd=leChopShape(objsb pointa nil nil 10)
  52.                                 when(objsd!=nil
  53.                                         objsf=remove(objsb objsf)
  54.                                         objsc=objsd
  55.                                         foreach(objsd1 objsd
  56.                                                 when(objsd1~>objType!="polygon"
  57.                                                         objsc=remove(objsd1 objsc)
  58.                                                 )
  59.                                         );foreach
  60.                                         objse=nconc(objse objsc)
  61.                                 );when
  62.                        
  63.                         );foreach
  64.                         sum=sum+1
  65.                         );foreach

  66.                 );when
  67.         );foreach
  68. )
  69. )


复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-4-8 03:49 , Processed in 0.012444 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表