Message 1 of 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello Everyone
I have a lisp how can i avoid repeating a command several times actually I'd like to after loading the lisp i want to use a value and after selecting I don't want an initial value for the second , or third times,.... again!
Thanks
(defun c:hor_dim_circles ( / *error* adoc sset->enameList ss pts max_y off i p1 p2 p3)
(defun *error* ( msg )
(if (not (member msg '("Function cancelled" "quit / exit abort")))
(princ)
)
(if (and adoc) (vla-endundomark adoc))
(setvar 'cmdecho 1)
(princ)
)
(defun sset->enameList (ss / i ret)
(if ss
(repeat (setq i (sslength ss))
(setq ret (cons (ssname ss (setq i (1- i))) ret))
)
)
)
(princ "\nSelect circle objects to make dimensions >")
(setq ss (ssget '((0 . "circle"))))
(setq adoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-endundomark adoc)
(vla-startundomark adoc)
(cond
((and ss)
(setq pts (mapcar '(lambda(x)(vlax-get x 'center)) (mapcar 'vlax-ename->vla-object (sset->enameList ss))))
(setq pts (vl-sort pts '(lambda (a b) (< (car a)(car b)))))
(setq max_y (apply 'max (mapcar 'cadr pts)))
(setq off (getreal "\nVertical offset >"))
(setq i -1)
(setvar 'cmdecho 0)
(while (< (setq i (1+ i)) (1- (length pts)))
(setq p1 (nth i pts) p2 (nth (1+ i) pts) p3 (list (car p2) (+ off max_y)))
(command "_.DIMHORIZONTAL" "_non" p1 "_non" p2 "_non" p3)
)
(setq p1 (car pts) p2 (last pts) p3 (list (car p2) (+ off off max_y)))
(command "_.DIMHORIZONTAL" "_non" p1 "_non" p2 "_non" p3)
(setvar 'cmdecho 1)
)
)
(vla-endundomark adoc)
(princ)
)
Solved! Go to Solution.