探索此线程:
http://www.cadtutor.net/forum/showthread.php?96834-绘制正方形
编辑:或尝试以下操作:
- (defun C:test ( / d AcSpc p CircleObj p1 p3 ll ur )
- (initget (+ 1 2 4))
- (setq d (getreal "\nSpecify square's size: "))
- (setq AcSpc (vlax-get-property (vla-get-ActiveDocument (vlax-get-acad-object)) (if (= 1 (getvar 'CVPORT)) 'Paperspace 'Modelspace)))
- (setvar 'errno 0)
- (while (/= 52 (getvar 'errno))
- (initget 128 "Size") (setq p (getpoint "\nSpecify square's center point or [size]: "))
- (cond
- ((and (= 'STR (type p)) (wcmatch p "S*")) (initget (+ 1 2 4)) (setq d (getreal "\nSpecify square's size: ")))
- ((and p (listp p))
- (setq CircleObj (vla-AddCircle AcSpc (vlax-3D-point p) (/ d 2.)))
- (vla-GetBoundingBox CircleObj 'll 'ur)
- (mapcar 'set '(p1 p3) (mapcar 'vlax-safearray->list (list ll ur)))
- (entmake
- (append
- (list (cons 0 "LWPOLYLINE")(cons 100 "AcDbEntity")(cons 100 "AcDbPolyline")(cons 90 4)(cons 70 1))
- (mapcar '(lambda (x) (cons 10 x)) (list p1 (list (car p1) (cadr p3)) p3 (list (car p3) (cadr p1))))
- )
- )
- (vla-Delete CircleObj)
- )
- (T (setvar 'errno 52))
- )
- )
- (princ)
- );| defun |; (or (vlax-get-acad-object) (vl-load-com)) (princ)
|