0 Members and 1 Guest are viewing this topic.
Hello forum, I'm new vlisp.As I can do circles around a curve at different distances.
;;------------------------------------ DIVC.LSP ----------------------------------;;;; fixo () 2012 * all rights released;; edited 3/3/12;; used Nueva carpeta.dwg(defun C:DIVC(/ *error* acsp adoc closed cnt curve en leng num oname p rad sset step) (defun *error* (msg) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)) ) (cond ((or (not msg) (member msg '("console break" "Function cancelled" "quit / exit abort")) ) ) ((princ (strcat "\nError: " msg))) ) (princ) ) (setq adoc (vla-get-activedocument (vlax-get-acad-object)) acsp (vla-get-block(vla-get-activelayout adoc))) (vla-startundomark adoc ) (while (not sset) (setq sset (ssget '((0 . "*LINE,ARC,ELLIPSE,ARC,CIRCLE"))) ) ) (initget 7) (setq num (getint "\nNumber of circles? : ") ) (initget 7) (setq rad (getdist "\nRadius ? : ") ) (while (setq en (ssname sset 0)) (setq curve (vlax-ename->vla-object en)) (setq oname (vla-get-objectname curve)) (cond ((eq "AcDbArc" oname) (setq leng (vla-get-arclength curve))) ((or (eq "AcDbEllipse" oname) (eq "AcDbSpline" oname)) (setq leng (vlax-curve-getdistatparam curve (vlax-curve-getendparam curve))) (if (equal (vlax-curve-getendparam curve) (* pi 2) 0.0001) (setq closed T) (setq closed nil)) ) ;;ellipse ((eq "AcDbCircle" oname) (setq leng (vla-get-circumference curve)) (setq closed T) ) ((eq "AcDbLine" oname) (setq leng (setq leng (vla-get-length curve))) (setq closed nil) ) ((eq "AcDbPolyline" oname) (progn (setq leng (vla-get-length curve)) (if (eq :vlax-true (vl-catch-all-apply '(lambda () (vla-get-closed curve)))) (setq closed T) (setq closed nil))) )) (setq step (if closed (/ leng num) (/ leng (1- num)))) (setq cnt 0) (repeat num (setq p (vlax-curve-getpointatparam curve (vlax-curve-getparamatdist curve (* step cnt)))) (vlax-invoke acsp 'addcircle p rad) (setq cnt (1+ cnt)) ) (ssdel en sset) ) (*error* nil) (princ) )(princ "\n\t---\tStart command with \"DIVC\"\t---")(princ)(or (vl-load-com) (princ))