How to add radius

Discussion in 'AutoCAD' started by Adesu, Feb 21, 2005.

  1. Adesu

    Adesu Guest

    I've a program,but I am not satisfying,I would change the "rad" to become
    simple and then the user give an input
    (setq n (fix (getreal "\nENTER MAXIMUM RADIUS: ")))
    (setq cn 0)
    (setq rad n)
    (setq rad (cond ((> rad n)(setq rad (.............
    ................................
    (setq rad (1+ cn)


    ; ace is stand for automatic create and erase
    ; Design by Ade Suharna <>
    ; 21 February 2005
    ; Program no.196/02/2005
    ; Edit by
    (defun radal (loc rad cnt /)
    (command "_circle" loc item "" )
    )
    (defun c:ace (/ cnt)
    (setq cnt 0)
    (setq loc '(10 10))
    (setq rad '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ; I
    won't this like
    21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
    38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
    55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
    72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
    89 90 91 92 93 94 95 96 97 98 99 100))
    (foreach item rad
    (radal loc item cnt)
    (setq cnt (1+ cnt))
    )
    (princ)
    (setq ss (ssget "x" '((0 . "CIRCLE"))))
    (setq cnt 0)
    (setq ssl (sslength ss))
    (repeat ssl
    (setq ssn (ssname ss cnt))
    (command "_erase" ssn "")
    (setq cnt (1+ cnt))
    )
    (princ)
    )
     
    Adesu, Feb 21, 2005
    #1
  2. Adesu

    Alaspher Guest

    Hi, Ade!
    If I see you trouble right, may be:
    Code:
    (defun c:ace (/ cnt loc n rad ss ssn)
    (setq	n   (fix (getreal "\nENTER MAXIMUM RADIUS: "))
    rad 0
    loc '(10 10)
    )
    (while (<= (setq rad (1+ rad)) n) (vl-cmdf "_.circle" loc rad))
    (setq	ss  (ssget "x" '((0 . "CIRCLE")))
    cnt -1
    )
    (while (setq ssn (ssname ss (setq cnt (1+ cnt)))) (entdel ssn))
    (princ)
    )
    or more effective vla- code:
    Code:
    (defun c:ace1 (/ actdoc cnt key loc n rad space ss ssn vloc)
    (setq	actdoc (vla-get-activedocument (vlax-get-acad-object))
    space  (pl:get-space actdoc)
    n      (getint "\nENTER MAXIMUM RADIUS: ")
    rad    0
    loc    '(10.0 10.0 0.0)
    vloc   (vlax-3d-point loc)
    )
    (while (<= (setq rad (1+ rad)) n) (vla-addcircle space vloc rad))
    (initget "Yes No")
    (if (or (= "Yes" (setq key (getkword "Erase circles [Yes/No] <Yes>: "))) (not key))
    (progn (setq ss  (ssget "x" (list '(0 . "CIRCLE") (cons 10 loc)))
    cnt -1
    )
    (while (setq ssn (ssname ss (setq cnt (1+ cnt)))) (entdel ssn))
    )
    )
    (princ)
    )
    
    (defun pl:get-space (doc)
    (if (and (zerop (vla-get-activespace doc)) (= :vlax-false (vla-get-mspace doc)))
    (vla-get-paperspace doc)
    (vla-get-modelspace doc)
    )
    )
    Best regards!
     
    Alaspher, Feb 21, 2005
    #2
  3. Adesu

    Adesu Guest

    Hi Alaspher,it work tanks a lot
     
    Adesu, Feb 22, 2005
    #3
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.