×
INTELLIGENT WORK FORUMS
FOR ENGINEERING PROFESSIONALS

Log In

Come Join Us!

Are you an
Engineering professional?
Join Eng-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!
  • Students Click Here

*Eng-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Jobs

Convert existing object in Dwg to blocks

Convert existing object in Dwg to blocks

Convert existing object in Dwg to blocks

(OP)
I want to use the windows or crossing command to convert several hundred circles (fire sprinklers) on a drawing to individual blocks, that are all the same, so that I can use the "count" command to get an accurate count of fire sprinklers in a warehouse

RE: Convert existing object in Dwg to blocks


;COMMAND:  SPRINKLER
;FOR ALL VERSIONS OF AUTOCAD
;SAVE AS sprinkler.lsp to directory \SUPPOTRT\
;and from command line: (load "sprinkler")
;then, on command line, type SPRINKLER AND FOLLOW SELLECT-OBJECT PROMPTS
;ERASES ALL PICKED CIRCLES AND REPLACES EACH WITH A CIRCLE BLOCK OF R=100
;SCALED TO THE RADIUS OF EACH ERASED CIRCLE
;AND INSERTED AT ITS CENTER POINT,
;APPEARANCE REMAINS THE SAME BUT NOW CIRCLES ARE BLOCKS
;RICHLY COMMENTED FOR YOUR CONVENIENCE AND MODIFICATIONS
;FOR QUESTIONS please call at:
;www.homescript.com
;I am home most of the time.


;Get circles by any method you like - follow prompts to get objects
;only circles will be taken seriously, others will be ignored
(defun C:SPRINKLER()
;this allows select objects by any way you like
;first big IF
(IF (setq sset (ssget (list  (cons 0 "CIRCLE"))))(PROGN
;this tells how many circles were caught, picked, windowed, crossed
(setq ssetl (sslength sset))
;just for information, to see the circle count on command line
    (print ssetl)(princ " Circles found...")

  (circlo)
    (setq i 0)
  
  (while (< i  ssetl)
        (setq Edna (ssname sset i))
    (setq Eddy (entget Edna))

            (setq    Typy     (dxf 0 Eddy)
            ; this is not really used. Was for debugging
              Insy     (dxf 10 Eddy)
            ; Insertion point of circle we are going to erase
                  Rady    (dxf 40 Eddy)
            ;radius of circle we are going to erase
        )
        ;this is tricky  (x Y) = (10 20) will be converted into "10,20"
        (setq Insy (strcat
                 (rtos (car Insy) 2)
                 ","
                 (rtos (cadr Insy))
                 )
        )
        ;remember, the block CIRCO has radius 100. Why not 1?
        ;well, snap complications I suppose - too tiny
        (setq rady (/ rady 100))
        ;and this converts R= 25.5 into "25.5"
        (setq rady (rtos rady 2))

        ;this was for debugging. Don't need anymore
          ;(print Insy)(print Rady)
          
        ;erase the circle
        (COMMAND "_erase" Edna "")
        ;insert block circle  with scale factor
        ;to correspond to radius of erased circle
        (COMMAND "_insert" "CIRCLO" Insy rady "" "" )
    (setq i (+ 1 i));NEXT CIRCLE
   );while ends here
  )(print "No Circles Found!" ));first big IF ends here
  (princ);suppress repeated prompt
);end of main function

;THIS makes a block of r=100 circle, if it does not exist IN THIS DRAWING
(defun Circlo()
(setq Blocky (tblobjname "block" "CIRCLO"))
(if (not Blocky)(progn
    (command "_circle" "0,0" "100")
      (command "_block" "CIRCLO" "0,0" "_L" "")
      ;(command "_erase" "_L" "")
  ))
  )


;Useful function to extract-
;Entity name "CIRCLE n= 0
;Insy InsertionPoint n= 10
;rady radious        n= 40
;ed is full entity data
(defun dxf (n ed) (cdr (assoc n ed)))

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Eng-Tips Forums free from inappropriate posts.
The Eng-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Eng-Tips forums is a member-only feature.

Click Here to join Eng-Tips and talk with other members!


Resources