AutoLISP添加正方形编号

AutoLISP添加正方形编号,代码如下。

(defun c:test()
  (setvar "cmdecho" 0)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setq dd (getdist "\n正方形边长<10>:"))
  (if (null dd) (setq dd 10))
  (setq num (getint "\n起始编号<1>:"))
  (if (null num) (setq num 1))
  (setq dd2 (/ dd 5))
  (setq pt1 (getpoint "\n第一点:"))
  (while (/= pt1 nil)
    (command "donut" 0 dd2 pt1 "")
    (setq pt2 (getpoint pt1 "\n第二点:"))
    (command "line" pt1 pt2 "")
    (command "polygon" 4 "e" pt2 (polar pt2 0 dd))
    (setq en1 (entlast))
    (command "text" "m" (polar (polar pt2 0 (/ dd 2)) (/ pi 2) (/ dd 2)) (/ dd 2) 0 (itoa num))
    (setq en2 (entlast))
    (setq pp1 pt2)
    (setq pp2 (polar pp1 0 dd))
    (setq pp3 (polar pp2 (/ pi 2) dd))
    (setq pp4 (polar pp1 (/ pi 2) dd))
    (setq pp_0 (polar pp1 (/ pi 2) (/ dd 2)))
    (setq pp_90 (polar pp1 0 (/ dd 2)))
    (setq pp_180 (polar pp2 (/ pi 2) (/ dd 2)))
    (setq pp_270 (polar pp3 pi (/ dd 2)))
    (setq pp pt2)
    (setq ang (angle pt1 pt2))
    (cond ((and (> ang (* pi 0.5)) (< ang pi)) (setq pp pp2))
      ((and (> ang pi) (< ang (* pi 1.5))) (setq pp pp3))
      ((and (> ang (* pi 1.5)) (< ang (* pi 2))) (setq pp pp4))
      )
    (cond ((= ang 0) (setq pp pp_0))
      ((= ang (/ pi 2)) (setq pp PP_90))
      ((= ang pi) (setq pp pp_180))
      ((= ang (* pi 1.5)) (setq pp pp_270))
      )
    (command "move" en1 en2 "" pp pt2)
    (setq num (1+ num))
    (setq pt1 (getpoint "\n第一点:"))
    )
  (setvar "osmode" os)
  (prin1)
  )

代码完。

总是第一点第二点的循环,没有编号。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值