Jump to content

Script to lock all viewports.


Small Fish

Recommended Posts

hi

I have a similar question to my last post.

I would like to lock all viewports using a script file.

I am trying to use similar methodology supplied by

Alanjt. I guess I am going a little astray with the " and the \?

Could someone look at my code below ......thanks:?

 

 

(write-line "(foreach LAYOUT (layoutlist)
   (setvar \"CTAB\" LAYOUT)
   (setq VPLST (ssget \"x\" (list (cons 0 \"viewport\"))))
   (setq c -1)
   (if VPLST
   (repeat (sslength VPLST)
     (setq VPS (cdr (car (entget (ssname VPLST (setq c (1+ c)))))))
     (setq vlaobj (vlax-ename->vla-object VPS))
     (vlax-put-property vlaobj 'Color 6)
   ))
   (command \"mview\" \"lock\" \"on\" \"VPLST\ " "))" scrFile);lock all viewports

Link to comment
Share on other sites

just by looking at it, you have your "" off here:

(command \"mview\" \"lock\" \"on\" \"VPLST\ " "))" scrFile)

 

are you using this to run on multiple files, or just to run on the current one?

 

also, make sure you have a check and way to set to paperspace when switching layouts. you don't want to be in paper-model and select everything. i added that check in that other script i helped you with.

 

hi

I have a similar question to my last post.

I would like to lock all viewports using a script file.

I am trying to use similar methodology supplied by

Alanjt. I guess I am going a little astray with the " and the \?

Could someone look at my code below ......thanks:?

 

 

(write-line "(foreach LAYOUT (layoutlist)
   (setvar \"CTAB\" LAYOUT)
   (setq VPLST (ssget \"x\" (list (cons 0 \"viewport\"))))
   (setq c -1)
   (if VPLST
   (repeat (sslength VPLST)
     (setq VPS (cdr (car (entget (ssname VPLST (setq c (1+ c)))))))
     (setq vlaobj (vlax-ename->vla-object VPS))
     (vlax-put-property vlaobj 'Color 6)
   ))
   (command \"mview\" \"lock\" \"on\" \"VPLST\ " "))" scrFile);lock all viewports

Link to comment
Share on other sites

also, i just noticed you aren't defining a file to write this info to. and you are defining a rather large string.

 

also need a "" here:

      (vlax-put-property vlaobj 'Color 6)
   )[color=Red]"[/color] [color=Red]filename_here[/color])

 

hi

I have a similar question to my last post.

I would like to lock all viewports using a script file.

I am trying to use similar methodology supplied by

Alanjt. I guess I am going a little astray with the " and the \?

Could someone look at my code below ......thanks:?

 

 

(write-line "(foreach LAYOUT (layoutlist)
   (setvar \"CTAB\" LAYOUT)
   (setq VPLST (ssget \"x\" (list (cons 0 \"viewport\"))))
   (setq c -1)
   (if VPLST
   (repeat (sslength VPLST)
     (setq VPS (cdr (car (entget (ssname VPLST (setq c (1+ c)))))))
     (setq vlaobj (vlax-ename->vla-object VPS))
     (vlax-put-property vlaobj 'Color 6)
   ))
   (command \"mview\" \"lock\" \"on\" \"VPLST\ " "))" scrFile);lock all viewports

Link to comment
Share on other sites

also, instead of using 'write-line' for each line, set it as a list with several text strings, then use foreach.

here's a sub i use:

;;; Write list to file
;;; #File - file to write list to (must be in form "c:\\File.txt")
;;; #ListToWrite - list to write to file
;;; #Overwrite - If T, will overwrite; nil to append
;;; Alan J. Thompson, 04.28.09
(defun AT:WriteToFile (#File #ListToWrite #Overwrite / #FileOpen)
 (cond ((and (vl-consp #ListToWrite)
             (setq #FileOpen (open #File
                                   (if #Overwrite
                                     "W"
                                     "A"
                                   ) ;_ if
                             ) ;_ open
             ) ;_ setq
        ) ;_ and
        (foreach x #ListToWrite
          (write-line x #FileOpen)
        ) ;_ foreach
        (close #FileOpen)
        T
       )
 ) ;_ cond
) ;_ defun

 

example:

(AT:WriteToFile "c:\\test.txt" (list "this is a test" "my name is alan") T)

Link to comment
Share on other sites

Hey Mr Fish,

 

Give this a go - not sure about the script file that gets written as I don't write too many of them, but you can easily alter that part :)

 

Select the Directory containing all the drawings you want locked (doesn't do subfolders), and then select the destination for the script file to be written.

 

Make sure that the function at the top of the LISP (lkView) is in your ACADDOC.lsp

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] lkView [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#ff00ff]"_X"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#ff00ff]"VIEWPORT"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]vla-put-DisplayLocked[/color][/b]
           [b][color=RED]([/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] x[b][color=RED])[/color][/b] [b][color=Blue]:vlax-true[/color][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

[color=Purple][i];; Script Writer by Lee McDonnell  ~  07.09.09[/i][/color]
[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ScrW [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] acad Shell FDir path files dest scr[b][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b]
 
 [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] acad [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b]
       Shell [b][color=RED]([/color][/b][b][color=BLUE]vla-getInterfaceObject[/color][/b] acad [b][color=#ff00ff]"Shell.Application"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 
 [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] FDir [b][color=RED]([/color][/b][b][color=BLUE]vlax-invoke-method[/color][/b] Shell [b][color=DARKRED]'[/color][/b]BrowseForFolder
                     [b][color=RED]([/color][/b][b][color=BLUE]vla-get-hwnd[/color][/b] acad[b][color=RED])[/color][/b] [b][color=#ff00ff]"Select Directory: "[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
        [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] path [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-property[/color][/b]
                     [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-property[/color][/b] FDir [b][color=DARKRED]'[/color][/b]Self[b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b]Path[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
        [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#ff00ff]"\\"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] path [b][color=RED]([/color][/b][b][color=BLUE]strlen[/color][/b] path[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
            [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] path [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] path [b][color=#ff00ff]"\\"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n*Cancel*"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
 
 [b][color=RED]([/color][/b][b][color=BLUE]vlax-release-object[/color][/b] Shell[b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] files [b][color=RED]([/color][/b][b][color=BLUE]vl-directory-files[/color][/b] path [b][color=#ff00ff]"*.dwg"[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
          [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] dest [b][color=RED]([/color][/b][b][color=BLUE]getfiled[/color][/b] [b][color=#ff00ff]"Select Destination for Script File"[/color][/b] [b][color=#ff00ff]""[/color][/b] [b][color=#ff00ff]"scr"[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] scr [b][color=RED]([/color][/b][b][color=BLUE]open[/color][/b] dest [b][color=#ff00ff]"w"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] file [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b]
                     [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b]
                       [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] path x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] files[b][color=RED])[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]write-line[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcat[/color][/b] [b][color=#ff00ff]"open \"[/color][/b][b][color=#ff00ff]" [/color][/b][color=Black]file [/color][b][color=#ff00ff]"[/color][color=Magenta]\[/color][/b][b][color=#ff00ff]" (lkView) qsave close"[/color][/b][b][color=RED])[/color][/b] scr[b][color=RED])[/color][/b][b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]close[/color][/b] scr[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

 [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

Link to comment
Share on other sites

lol, so much for learning to fish.

 

Hey Mr Fish,

 

Give this a go - not sure about the script file that gets written as I don't write too many of them, but you can easily alter that part :)

 

Select the Directory containing all the drawings you want locked (doesn't do subfolders), and then select the destination for the script file to be written.

 

Make sure that the function at the top of the LISP (lkView) is in your ACADDOC.lsp

Link to comment
Share on other sites

Thanks guys ... problem sorted!

I learnt heaps on this post

 

>>so much for learning to fish.

Don't worry I am learning to fish

...just sometimes my line gets in a tangled mess.

Cheers S.M.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...