网通访问 |电信访问 | 网络测速 | 联系管理员 |安全退出论坛,保护账号安全!
发新话题
打印

求AutoLISP程序

求AutoLISP程序

本人因对AutoLISP不熟悉,所以请请高手帮助编写一个AutoLISP程序,谢谢!
要求如下:输入命令后,提示输入或在CAD屏幕内选择圆圈的高度,然后每次点
击鼠标分别依次插入①②③~直到命令结束
解释:圆圈用圆的命令画出,半径输入值或在屏幕选取,文字高度为圆的半径,
正中对齐圆心,文字开始为1,然后依次加1,直到命令结束,插入的位置为鼠标
选取!

TOP

高手们帮一下忙呀! 会的应该不要很多代码就可以了吧!

TOP

随便写了一个,有什么问题提出来,再修改一下!

(defun c:test ()
  ;;(setq os (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setq string (getint "\n请输入一个基数,如1、2或3:"))
  (if (= string nil)
    (setq string 1)
  )
  (if (setq ent (car (entsel "\n请选择一个圆或直接回车后再输入数值:")))
    (progn
      (setq dxf (entget ent))
      (setq rad (cdr (assoc 40 dxf)))
    )
    (setq rad (getreal "\n请输入圆圈半径:"))
  )
  (while (setq p0 (getpoint "\n请选择一个基准点:"))
    (progn
      (if (/= (getvar "TEXTSIZE") rad)
        (setvar "TEXTSIZE" rad)
      )
      (setvar "osmode" 0)
      (command "text"
               "j"
               "mc"
               p0
               ""
               ""
               (rtos string)
      )
      (command "circle" p0 rad)
      (setq string (1+ string))      
    )
  )
  (setvar "cmdecho" 1)
)
我设计,我自豪!

TOP

TOP

回复 3# 的帖子

输入圆圈半径:这步是否可以改为在屏幕中选取? 谢谢!

TOP

(if (setq ent (car (entsel "\n请选择一个圆或直接回车后再输入数值:")))
这句已经提示过了,如果屏幕上有相应的圆,可以直接选取,如果没有回车后再输入数值
如需要修改再通知我!
我设计,我自豪!

TOP

支持

TOP

高手
俺好多年没搞过了, 以前写过一点儿儿, 现在落伍了
呵呵
问世间模为何物,直教人以身相许!zhaomould@163.com

TOP

发新话题