我几个月前就这么做了。。不太好,但这是一个开始
- (defun c:Bubble (/ *error* p1 p2 radius)
- (setvar "cmdecho" 0)
- (command "undo" "begin")
- (defun *error* (msg)
- (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
- (princ (strcat "\n** Error: " msg " **"))
- )
- (command "undo" "end")
- (setvar "cmdecho" 1)
- (princ)
- )
- (if
- (setq p1 (getpoint "\nSpecify first point: ")
- p2 (getpoint p1 "\nSpecify second point: "))
- (repeat
- (1+
- (fix
- (/
- (distance p1 p2)
- (* 2 (setq radius )
- )
- )
- )
- (entmakex
- (list
- (cons 0 "CIRCLE")
- (cons 10 p1);insertion point
- (cons 8 "0");layer
- (cons 40 radius)
- )
- )
- (setq p1 (polar p1 (angle p1 p2)(* 2 radius)))
- )
- )
- (command "undo" "end")
- (setvar "cmdecho" 1)
- (princ)
- )
|