Small Fish Posted September 7, 2009 Share Posted September 7, 2009 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 Quote Link to comment Share on other sites More sharing options...
alanjt Posted September 7, 2009 Share Posted September 7, 2009 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. hiI 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 Quote Link to comment Share on other sites More sharing options...
alanjt Posted September 7, 2009 Share Posted September 7, 2009 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]) hiI 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 Quote Link to comment Share on other sites More sharing options...
alanjt Posted September 7, 2009 Share Posted September 7, 2009 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) Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted September 7, 2009 Share Posted September 7, 2009 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] Quote Link to comment Share on other sites More sharing options...
alanjt Posted September 8, 2009 Share Posted September 8, 2009 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 Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted September 8, 2009 Share Posted September 8, 2009 lol, so much for learning to fish. Thought you might say that - but I doubt I could've stepped Small Fish through that... Quote Link to comment Share on other sites More sharing options...
Small Fish Posted September 8, 2009 Author Share Posted September 8, 2009 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.