Jump to content

Recommended Posts

GreenWhale

Hi, Good day to you all.I'm new to this forum. I hope you people can help me out.

 

I'm working on, automatic creation of title block with required scale setting in 'Model space' not in layout.

 

by clicking a button or comment, it should ask the user to select the 'title blocks' among the list, which is in 1:1 scale.

 

Then it should ask the user to select the scale among '1:2, 1:10, 1:20'. once selected it should scale the title block(eg. if 1:10 selected entire title block to be scaled to 10). also the size of dimension arrow and text size to be changed accordingly.

 

Also we have a set of 10 drawing each as a blocks in it which we will be using as symbols on drawings. that should also get scaled accordingly whenever they gets inserted.

 

please help.o:)

Share this post


Link to post
Share on other sites
ReMark

Why bother using AutoCAD 2014 then? Might as well be using release 9.

Share this post


Link to post
Share on other sites
GreenWhale

it is not up to me. My organisation is little reluctant to get updated:unsure:

Share this post


Link to post
Share on other sites
BIGAL

Try updating to layouts as the 1st step, will open a whole new world of simplicity.

Share this post


Link to post
Share on other sites
GreenWhale
Try updating to layouts as the 1st step, will open a whole new world of simplicity.

 

I suggested it already, yet they want in that way..

Share this post


Link to post
Share on other sites
SLW210

I'll look around in some of my old LISPs when I get home tonight and see if I have something, like others this is ancient stuff, but it was a common request quite a while back. A good search should bring up something from way back.

 

You might could handle this with a dynamic block with visibility states for the different scales.

Share this post


Link to post
Share on other sites
GreenWhale

after some searches i came across with with some idea. i'm trying to create a lisp myself. which i never did before. I'm thinking of incorporating there two command lines in the lisp. looks simple two use them. however i'm stuck with automatic scaling of block...

 

(command "insert" "C:\\Users\\DE14\\Desktop\\A1 horizondal test.dwg" "0,0,0" "1" "1" "0" "_.explode" "_L")

(command "-purge" "B" "YourBlockName" "N" "")

 

also i came across with autocad cui. and reading about them now. and i'm very much close to the solution. But the 'scale' thing is not moving...

Share this post


Link to post
Share on other sites
rkmcswain
I suggested it already, yet they want in that way..

 

No offense, but any organization that can't update to layouts almost 20 years later, is probably way behind in many other ways too.

I'd be looking for another job.

 

Good luck.

Share this post


Link to post
Share on other sites
rlx
No offense, but any organization that can't update to layouts almost 20 years later, is probably way behind in many other ways too.

I'd be looking for another job.

 

Good luck.

 

 

haha , that sounds familiar! @my work we can (and do) use layouts but... our document control program , DvTDM release 2010 , can't (so says upper control smurf) read our titleblocks in paper space (yeah right).

Share this post


Link to post
Share on other sites
BIGAL

Rlx is it 1 dwg per sheet as well ? :lol:

Share this post


Link to post
Share on other sites
rlx
Rlx is it 1 dwg per sheet as well ? :lol:

 

sadly but yes....

Share this post


Link to post
Share on other sites
GreenWhale
:thumbsup:

Share this post


Link to post
Share on other sites
rlx

just some lunch fun to get you started. Kept it as simple as possible. All could be done by dialog and / or automatically show all filenames in your template folder etc. Wanted to post earlier but major W10 update stopped me from doing anything for 3-4 hours.

 

 

(defun c:Captain_Ahap  ( / SizeList ScaleList size scale titleblockfolder titleblock)
 (vl-load-com)
 ; some shortcuts for titleblock / border sizes (without the full path)
 (setq SizeList  (list "A0" "A1" "A2" "A3" "A4-L" "A4-P")
ScaleList (list 1 10 50 100)
titleblockfolder "c:/temp/mytitleblockfolder/"
 )
 (if (and (setq size  (CycleList "Choose titleblock size" SizeList))
   (setq scale (CycleList "Choose titleblock scale" ScaleList)))
   (progn
     ; maybe translate size to filename first
     (cond ((eq size   "A0") (setq titleblock (strcat titleblockfolder "A0_horizondal_test.dwg")))
    ((eq size   "A1") (setq titleblock (strcat titleblockfolder "A1_horizondal_test.dwg")))
    ((eq size   "A2") (setq titleblock (strcat titleblockfolder "A2_horizondal_test.dwg")))
    ((eq size   "A3") (setq titleblock (strcat titleblockfolder "A3_horizondal_test.dwg")))
    ((eq size "A4-L") (setq titleblock (strcat titleblockfolder "A4_Landscape_test.dwg")))
    ((eq size "A4-P") (setq titleblock (strcat titleblockfolder "A4_Portrait_test.dwg")))
     )
     (if (and titleblock (findfile titleblock) (numberp scale))
(progn
  (setvar 'expert 2) (setvar 'cmdecho 0) (setvar 'attreq 0)
  (command "-insert" titleblock (list 0 0 0) scale scale 0)
  (command "_.explode" "_L")
  (command "-purge" "B" "YourBlockName" "N")
  (command "._zoom" "e")
)
(alert "Unable to insert titleblock")
     )
   )
 )
 (princ)
)

; example1 (setq choise (CycleList "Choose titleblock size" '("A0" "A1" "A2" "A3" "A4")))
; example2 (setq choise (CycleList "Choose titleblock scale" '(1 10 50 100)))
(defun CycleList (msg lst / inp loop rtn)
 (setq loop t)
 (while loop
   (princ "\nCycle list with tab or L-mouse / accept use enter,space or R-mouse / Esc or x for exit\n")
   (princ (strcat "\r" msg " <" (vl-princ-to-string (car lst)) "> : "))
   (setq inp (vl-catch-all-apply 'grread (list nil 8 0)))
   (if (vl-catch-all-error-p inp)
     (progn (princ "\nTitleblock insertion cancelled")(setq rtn nil loop nil))
     (progn
       (cond
         ;tab
         ((or (equal inp '(2 9))(= (car inp) 3))
          (setq lst (append (cdr lst)(list (car lst))))
          (princ (strcat "\r" msg " <" (vl-princ-to-string (car lst)) "> : ")))
         ;enter,space,r-mouse
         ((or (equal inp '(2 13)) (equal inp '(2 32))(= (car inp) 25))
          (setq rtn (car lst) loop nil))
         ;x or X
         ((member inp '((2 88)(2 120)))(setq rtn nil loop nil))
       )
     )
   )
 )
 (terpri)
 rtn
)
; start command with (c:Captain_Ahap)

well , (work)day is done , so I'm gone ... with the wind (or the waves since you're obviously have a fishy thing ;-)

 

 

gr. Rlx

Share this post


Link to post
Share on other sites
GreenWhale
just some lunch fun to get you started. Kept it as simple as possible. All could be done by dialog and / or automatically show all filenames in your template folder etc. Wanted to post earlier but major W10 update stopped me from doing anything for 3-4 hours.

 

 

(defun c:Captain_Ahap  ( / SizeList ScaleList size scale titleblockfolder titleblock)
 (vl-load-com)
 ; some shortcuts for titleblock / border sizes (without the full path)
 (setq SizeList  (list "A0" "A1" "A2" "A3" "A4-L" "A4-P")
ScaleList (list 1 10 50 100)
titleblockfolder "c:/temp/mytitleblockfolder/"
 )
 (if (and (setq size  (CycleList "Choose titleblock size" SizeList))
   (setq scale (CycleList "Choose titleblock scale" ScaleList)))
   (progn
     ; maybe translate size to filename first
     (cond ((eq size   "A0") (setq titleblock (strcat titleblockfolder "A0_horizondal_test.dwg")))
    ((eq size   "A1") (setq titleblock (strcat titleblockfolder "A1_horizondal_test.dwg")))
    ((eq size   "A2") (setq titleblock (strcat titleblockfolder "A2_horizondal_test.dwg")))
    ((eq size   "A3") (setq titleblock (strcat titleblockfolder "A3_horizondal_test.dwg")))
    ((eq size "A4-L") (setq titleblock (strcat titleblockfolder "A4_Landscape_test.dwg")))
    ((eq size "A4-P") (setq titleblock (strcat titleblockfolder "A4_Portrait_test.dwg")))
     )
     (if (and titleblock (findfile titleblock) (numberp scale))
(progn
  (setvar 'expert 2) (setvar 'cmdecho 0) (setvar 'attreq 0)
  (command "-insert" titleblock (list 0 0 0) scale scale 0)
  (command "_.explode" "_L")
  (command "-purge" "B" "YourBlockName" "N")
  (command "._zoom" "e")
)
(alert "Unable to insert titleblock")
     )
   )
 )
 (princ)
)

; example1 (setq choise (CycleList "Choose titleblock size" '("A0" "A1" "A2" "A3" "A4")))
; example2 (setq choise (CycleList "Choose titleblock scale" '(1 10 50 100)))
(defun CycleList (msg lst / inp loop rtn)
 (setq loop t)
 (while loop
   (princ "\nCycle list with tab or L-mouse / accept use enter,space or R-mouse / Esc or x for exit\n")
   (princ (strcat "\r" msg " <" (vl-princ-to-string (car lst)) "> : "))
   (setq inp (vl-catch-all-apply 'grread (list nil 8 0)))
   (if (vl-catch-all-error-p inp)
     (progn (princ "\nTitleblock insertion cancelled")(setq rtn nil loop nil))
     (progn
       (cond
         ;tab
         ((or (equal inp '(2 9))(= (car inp) 3))
          (setq lst (append (cdr lst)(list (car lst))))
          (princ (strcat "\r" msg " <" (vl-princ-to-string (car lst)) "> : ")))
         ;enter,space,r-mouse
         ((or (equal inp '(2 13)) (equal inp '(2 32))(= (car inp) 25))
          (setq rtn (car lst) loop nil))
         ;x or X
         ((member inp '((2 88)(2 120)))(setq rtn nil loop nil))
       )
     )
   )
 )
 (terpri)
 rtn
)
; start command with (c:Captain_Ahap)

well , (work)day is done , so I'm gone ... with the wind (or the waves since you're obviously have a fishy thing ;-)

 

 

gr. Rlx

 

Thank you rlx.It works nice. will be using the 'support' folder in c instead of temp.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×