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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 139|回复: 4

[求助] 求一个可以画正多边形的skill脚本

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式
悬赏50资产未解决

发表于 4 小时前 | 显示全部楼层
本帖最后由 23345 于 2025-8-11 14:11 编辑

create——shape——circle——F3(shape type选择半圆;conic sides填正多边形总边数的一半数值;radius设置正多边形半径)——把图形画在layout上——复制合并。
这个也可以画正多边形
回复

使用道具 举报

 楼主| 发表于 3 小时前 | 显示全部楼层


   
23345 发表于 2025-8-11 14:05
create——shape——circle——F3(shape type选择半圆;conic sides填正多边形总边数的一半数值;radius设 ...


确实可以
回复

使用道具 举报

发表于 2 小时前 来自手机 | 显示全部楼层
let(((cv pcPcellView)
r  f)
Rs=r
pi=3.1415926
bian2=f*2
step0=0
stepTotal=fix(bian2/2)
stepstepPerRing=stepTotal
initA=0
deltaA=360/stepstepPerRing
whilewhile(STEP0<=stepTotal
let((rad x1 y1 o1)
rad=pi*(initA+deltaA*step0)/180
innerR=Rs
x1=cos(rad)*innerR
y1=sin(rad)*innerR
o1=x1:y1
points1=cons(o1 points1)
)
step0++
)
A1=rodCreatePolygon(
?cvId      cv
?layer     "M1"
?pts        points1)
)

以上内容加到通用pcell模板中即可
以下两个值自己设置
f是边数
r是外接圆半径
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
(defun drawRegPolygon (n side layer @optional cx cy)
  (let (pi R startAngle pts i theta x y cv layerList denom angleStep)

   
    (if (or (null n) (lessp n 3))
      (error "drawRegPolygon: n must be >= 3")
    )

   
    (if (or (null side) (lessp side 0.0000001))
      (error "drawRegPolygon: side must be > 0")
    )

   
    (setq pi (acos -1.0))
    (if (null cx) (setq cx 0.0))
    (if (null cy) (setq cy 0.0))

   
    (if (listp layer)
      (setq layerList layer)
      (setq layerList (list layer "drawing"))
    )

     R = side / (2*sin(pi/n))
    (setq denom (sin (quotient pi n)))
    (setq denom (times 2.0 denom))
    (setq R (quotient side denom))

    (setq startAngle (quotient pi n))
    (setq angleStep (quotient (times 2.0 pi) n))
    (setq pts nil)
    (setq i 0)

   
    (while (lessp i n)
      (setq theta (plus startAngle (times i angleStep)))
      (setq x (plus cx (times R (cos theta))))
      (setq y (plus cy (times R (sin theta))))
      (setq pts (append pts (list (list x y))))
      (setq i (plus i 1))
    )

   
    (setq cv (geGetEditCellView))
    (if (null cv)
      (error "drawRegPolygon: no edit cellview found")
    )

   
    (dbCreatePolygon cv layerList pts)
  )
)

;(drawRegPolygon 10 10.0 (list "M1" "drawing") 0 0)
边数 边长 使用layer 图形中心点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-8-11 18:10 , Processed in 0.012901 second(s), 3 queries , Gzip On, Redis On.

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