再试试 - (defun c:tt( / ss n en dxfcod pt ss1)
- (defun ptrlist ( pt r / rlist n)
- (setq rlist nil n 0)
- (repeat 30
- (setq rlist (cons (polar pt (* 12 n (/ pi 180)) r) rlist))
- (setq n (1+ n))
- )
- rlist
- )
- (defun blk (ss pt / ss pt doc space objs idx blkobj sArray);无名块
- (vl-load-com)
- (setq doc (vla-get-activedocument (vlax-get-acad-object))
- space (if (= (vla-get-activespace doc) 1)
- (vla-get-ModelSpace doc)
- (vla-get-PaperSpace doc))
- idx -1)
- (repeat (sslength ss)
- (setq objs (cons (vlax-ename->vla-object (ssname ss (setq idx (1+ idx))))
- objs))
- )
- (mapcar '(lambda (e) (vla-move e (vlax-3d-point pt) (vlax-3d-point '(0 0 0)))) objs)
- (setq blkobj (vla-add (vla-get-blocks doc) (vlax-3d-point '(0 0 0)) "*U"))
- (setq sArray (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (length objs))))
- objs))
- (vla-copyobjects doc sArray blkobj)
- (mapcar 'vla-delete objs)
- (vla-insertblock space (vlax-3d-point pt) (vla-get-name blkobj) 1 1 1 0)
- (mapcar 'vlax-release-object (list doc space blkobj))
- (princ)
- )
- (setq oldvar (mapcar 'getvar '("cmdecho" "osmode")))
- (mapcar 'setvar '("cmdecho" "osmode") '(0 0 2))
- (if (not (and
- (= (getvar "ucsname") "")
- (equal '(0.0 0.0 0.0) (getvar"ucsorg"))
- (equal '(1.0 0.0 0.0) (getvar"ucsxdir"))
- (equal '(0.0 1.0 0.0) (getvar"ucsydir"))
- ))
- (progn (command "_.ucs" "w") (command "_.zoom" "p"))
- )
- (setq ss (ssget '((0 . "CIRCLE,ELLIPSE"))) n 0)
- (if ss
- (repeat (sslength ss)
- (setq en (ssname ss n))
- (setq dxfcod (entget en))
- (setq pt (cdr (assoc 10 dxfcod)))
- (cond
- ((= "CIRCLE" (cdr (assoc 0 dxfcod))) (setq r (cdr (assoc 40 dxfcod))))
- ((= "ELLIPSE" (cdr (assoc 0 dxfcod))) (setq r (distance '(0 0 0) (cdr (assoc 11 dxfcod)))))
- )
- (setq ptlist (ptrlist pt r))
- (setq ss1 (ssget "_wp" ptlist))
- (if ss1 (progn (ssadd en ss1) (blk ss1 pt)))
- (setq n (1+ n))
- )
- )
- (mapcar 'setvar '("cmdecho" "osmode") oldvar)
- (princ)
- )
|