All Activity
- Past hour
-
Steven P started following Forward Visibility Lisp - DXF issue
-
Forward Visibility Lisp - DXF issue
Steven P replied to CivilTechSource's topic in AutoLISP, Visual LISP & DCL
Sounds like on the last run through the while loop SPoint is having an error... if you look at (setq SPoint (vlax-curve-getPointAtDist SelPline (+ Counter inc))) - do you need this line since at the start of the next loop you are setting SPoint again and before it is used. -
How to deploy list of Lisps to everyone in the organisation - AutoCAD LT
Steven P replied to CivilTechSource's topic in AutoLISP, Visual LISP & DCL
After your question I resurrected half a script, this one below will search through each .lsp file in folders (folder names are coded in the LISP just for now.. up date as you want), and will create a .lsp file (saved in temporary files folder), opening it to allow you to save it where convenient. The .lsp file created loads on demand .lsp files as and when they are called. If you run this to create a file, that file is all the users need to load when pressing the CUI button - can be quicker loading on demand if you have a lot of / big LISPs that are not all used all the time. If this file is saved in a central location - all users access it - all you need to do is update this 1 file. Some failings: It is searching for (Defun 123 ( abc / def) at the start of each line. - If the defun is indented it will skip past it (so as to avoid sub functions which are usually indented) - If the variable definition (abc / def) is on another line it will cause errors - If the variable definition is 'nil' (some LISPs do that), then it will also cause errors - '123' can be for example c:ALisp or MyLisp, doesn't need the 'c' prompt so it picks up utility LISPs common to many LISPs - File it creates is 0_OpenOnDemand, the '0' is so it loads first, any function that this file creates that is in another file, loaded after, then the file loaded 2nd takes precedence. Folder paths are entered here twice, once with just a double '\\' and one with a double-double '\\\\' - a fix for later but lazy programming to make it work on a Friday afternoon ... needs a little more work to make it a lot more user friendly of course! (defun c:listlisps ( / LispFolder MyLisps MyLispFiles LispList acount fo fn ML n) ;;NOTES: ;;Will fail if the defun lines are not 'ideal': "(Defun abc ( / )" format ;;will fail if variable (global / local) not defined eg defun 'c:abc nil' - wants 'c:abc ( / )' ;;Will fail if subfunctions are not indented ;;Will fail if main functions are indented (won't be found) ;;Filepath is hardcoded ;;Variables (setq MyLisps (list)) (setq OOD_File "0_OpenOnDemand.lsp") ; open on demand file name (setq fo (open (setq fn (strcat (getvar "TEMPPREFIX") OOD_File)) "w")) ; create empty OOD_File (close fo) ;;LISP Folders (setq LispFolderList (list "C:\\\\AutoCAD\\\\AutoCAD LISPS" ;;Folder 1 "C:\\\\AutoCAD\\\\AutoCAD LISPS\\\\Block LISPs" ;; folder 2... can add more )) (setq MyFolderList (list "C:\\AutoCAD\\AutoCAD LISPS" ;;Folder 1 "C:\\AutoCAD LISPS\\Block LISPs" ;; Folder 2... can add more )) ;;while loop from here (setq acount 0) (while (< acount (length MyFolderList)) (setq LispFolder (nth acount LispFolderList)) (setq MyFolder (nth acount MyFolderList)) (setq MyLispFiles (vl-directory-files MyFolder "*.lsp" 1)) (vl-remove OOD_File MyLispFiles) (setq MyLisps (listlisps MyFolder MyLispFiles)) (setq fo (open (setq fn (strcat (getvar "TEMPPREFIX") OOD_File)) "a")) (foreach ML MyLisps (if (or (member OOD_File ML) ; ignore this file (member "SIMPLELISP.lsp" ML) ; ignore this file ) ; Endor (progn ) (progn (foreach n (car (cdr ML)) (if (wcmatch n "*(*") ;;Change so that zxy(abc / ) -> zxy ( abc / ) - spaces (write-line (vl-string-subst " " " " (strcat "(Defun " n " / )")) fo) ;; if there is a ( (write-line (vl-string-subst " " " " (strcat "(Defun " n " ( / )")) fo) ;; if there isn't a (. Note might not catch function fully ) ; end if (write-line (vl-string-subst ")" " )" (strcat " (Load \"" LispFolder "\\\\" (car ML) "\") (" (vl-string-subst " " " " (vl-string-subst " " "(" n)) ")(princ)")) fo) (write-line (strcat ")") fo) ) ; end foreach ) ; end progn ) ; end if ) ; end foreach (close fo) (setq acount (+ acount 1)) ) ; end while (startapp "notepad" fn) (alert (strcat "Just check this:" "\nCheck list file to make sure Defun format is followed" "\n <cr>(Defun fnc ( abc / xyz).... with variable definitions" ) ) (princ) ) (defun listlisps ( MyFolder MyLispFiles / MyLisps f) (defun LM:GetSyntax ( file / _GetSyntax line syntax ) ;;modify to make dotted pair list, (path\\filename . LISP) (defun _GetSyntax ( p s / x ) (if (setq x (vl-string-search p s)) (cons (substr (setq s (substr s (+ x 1 (strlen p)))) 1 (setq x (car (vl-sort (vl-remove 'nil (mapcar (function (lambda ( d ) (vl-string-position d s))) ;; '(32 9 40 41) ) ) '< ) ) ; end setq '(9 47 41) ) ) '< ) ) ; end setq ; numbers are character codes ) ) ; end cons, Substr (if x (_GetSyntax p (substr s (1+ x)))) ) ) ; end if ) ; end defun (if (setq file (open file "r")) (apply 'append (progn (while (setq line (read-line file)) (if (or (= (substr line 1 1) ";") (= line nil) ) ; remove commented out lines & blank lines () (progn ;;remove ignored items ;; (if (wcmatch (Strcase line) "(DEFUN C:*") ;if line contains (defun c: (if (wcmatch (Strcase line) "(DEFUN *") ;if line starts with (Defun (progn (setq splittext (LM:str->lst line ";")) ; ignore anything after ';' (setq line (nth 0 splittext)) (setq splittext (LM:str->lst line (chr 34))) ; ignore strings '"' (setq line "") (setq count 0) (while ( < count (length splittext)) (setq line (strcat line (nth count splittext))) (setq count (+ count 2)) ) ; end while ;; (setq syntax (cons (_GetSyntax "(DEFUN C:" (strcase line)) syntax)) ;; No 'C:' (setq syntax (cons (_GetSyntax "(DEFUN " (strcase line)) syntax)) ;; Keep the 'C:' ) ; end progn ) ; end if ) ) ) (setq file (close file)) (reverse syntax) ) ) ) ) ; end defun LM:Getsyntax ;; (setq MyLispFiles (vl-directory-files MyFolder "*.lsp" 1)) (princ (strcat (rtos (length MyLispFiles) 2 0) " *.LSP Files. ")) (setq MyLisps (list)) ; blank list (foreach f MyLispFiles (setq MyLisps (append MyLisps (list (cons f (list (LM:GetSyntax (strcat MyFolder "\\" f))))))) ) ; end foreach (princ (strcat (rtos (length MyLisps) 2 0) " LISP Routines. ")) MyLisps ; return the list ) - Today
-
Hi I found this Forward Visibility Lips online but it was drawing the forward vis line slightly wrong so I have modified it now. It works okay, but when I was debugging it at the end of the routine it would through an error message (See image). The lisp however does complete everything as required apart from setting Layer 0 at the end. I am looking to address that error. (vl-load-com) (defun C:CTS-ForwardVis () ;Set the Layer for the New Polylines (if (not (tblsearch "LAYER" "CTS-Forward Visibility")) (command "-LAYER" "_M" "CTS-Forward Visibility" "_C" "True" "255,100,0" "CTS-Forward Visibility" "" "")) (command "clayer" "" "CTS-Forward Visibility" "") ; Predefined variables (setq ForwardVisDistance 15.0) ; Default forward visibility distance (setq inc 2.0) ; Default increment/resolution ; Prompt user to accept/change defaults (initget "Yes No") (if (= (getkword (strcat "\nUse default settings? [Yes/No] <Yes>: ")) "No") (progn (setq ForwardVisDistance (getdist (strcat "\nEnter default visibility distance <" (rtos ForwardVisDistance 2 2) ">: "))) (setq inc (getdist (strcat "\nEnter default increment/resolution <" (rtos inc 2 2) ">: "))) ) ) (princ (strcat"\nSelect Polyline:")) (while (not (setq js (ssget "_+.:E:S" (list (cons 0 "*POLYLINE,ARC,SPLINE") (cons 67 (if (eq (getvar "CVPORT") 2) 0 1)) (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB"))) (cons -4 "<NOT") (cons -4 "&") (cons 70 112) (cons -4 "NOT>") ) ) ) ) ) ;----- Assign the Selected Polyline to a VLA-Object and get its Length and other properties (setq SelPline (vlax-ename->vla-object (ssname js 0)) SelPline_Length (vlax-curve-getDistAtParam SelPline (vlax-curve-getEndParam SelPline)) Counter 0.0 SPoint nil EPoint nil ) ;----- Check Forward Visi Distance and Increment against the Length of the Selected Polyline (while (>= ForwardVisDistance SelPline_Length) (if (>= ForwardVisDistance SelPline_Length) (princ "\nDistance execeded length of Selected Polyline")) ) (while (>= inc SelPline_Length) (if (>= inc SelPline_Length) (princ "\nDistance execeded length of Selected Polyline")) ) ;----- Function to create Forward Visibility Polylines (while (< Counter SelPline_Length) (setq EPoint (vlax-curve-getPointAtDist SelPline (+ Counter ForwardVisDistance))) (setq SPoint (vlax-curve-getPointAtDist SelPline Counter)) (entmake (append '( (0 . "LWPOLYLINE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "CTS-Forward Visibility") (62 . 256) (6 . "ByLayer") (370 . -2) (100 . "AcDbPolyline") (90 . 2) ) (list (cons 10 SPoint)) (list (cons 10 EPoint)) '((210 0.0 0.0 1.0)) ) ) (setq SPoint (vlax-curve-getPointAtDist SelPline (+ Counter inc))) (setq Counter (+ Counter inc)) ) (command "clayer" "" "0" "") ) Thank you!!
-
How to deploy list of Lisps to everyone in the organisation - AutoCAD LT
CivilTechSource replied to CivilTechSource's topic in AutoLISP, Visual LISP & DCL
Thank you everyone so much! I decided to go with two options! One will be the CUI button will run a Load command to load the lisp and the call the command. This way only lisp that are required are loaded. However, the reason I was exploring option to load automatically is because some users like to type commands rather than click on Buttons. So I will add one button to the CUI that will run LOAD ALL lisp as per @BIGAL post. This way both users who click or type can have a smooth experience. -
Just quick checking BigAl, I think I use the file extension, .pc3, in my PDF routines, though you might be right and mine works by luck (these were the first LISPs I wrote, so lot of what they do are luck!). For OP, you might need to go through it step by step to see where it isn't working, see what is reported in command line from (PC3Exists pc3name)
-
Danielm103 started following KD-Tree in Python for AutoCAD
-
I incorporated nanoflann( https://github.com/jlblancoc/nanoflann) wrappers into PyRx. Although other efficient KD-Tree implementations exist in Python, such as pykdtree, the wrapper is specifically designed for AcGePoint2d/AcGePoint3d, eliminating the need for type conversions. How can these structures be beneficial in CAD? in this example, we search for a phone within a certain radius of each computer. Additionally, we can identify computers that do not have phones. We could also do something like, search all MTexts on the Layer "Employee" to determine whether they are near a chair, phone, or computer. import traceback from pyrx import Ap, Ax, Db, Ed, Ge, Gi, command # radiusSearch @command def doit(): db = Db.curDb() phones, computers = getBlocks(db) result = [] # create the tree of phone locations phonePoints = Ge.Point3dArray() for phone in phones: phonePoints.append(phone[1]) phoneTree = Ge.Point3dTree(phonePoints) # search for nerby phones for computer in computers: idxs, _ = phoneTree.radiusSearch(computer[1], 50 * 50)# sqrd if len(idxs) == 0: print("no phone") continue for idx in idxs: result.append((computer, phones[idx])) for cpu, phn in result: Ed.Core.grDraw(cpu[1], phn[1], 2, 0) # helper, store the id and position def getBlocks(db: Db.Database): phones = [] computers = [] model = Db.BlockTableRecord(db.modelSpaceId()) refs = [Db.BlockReference(id) for id in model.objectIds(Db.BlockReference.desc())] for ref in refs: if ref.getBlockName() == "COMPUTER": computers.append((ref.objectId(), ref.position())) elif ref.getBlockName() == "FNPHONE": phones.append((ref.objectId(), ref.position())) return phones, computers
-
- 1
-
-
Halmir15 joined the community
-
xnxnj joined the community
-
Just a maybe, if you have used PLOT then selected a installed windows printer, then opened the custom settings to add sheet sizes etc it should save the pc3 to correct location. Ok the important bit, you should not need the pc3 in the printer name, for Autocad only use "Plot To Pdf". So for your custom plotter don't have the PC3. Same with sheet size must be an exact match. An example. (COMMAND "-PLOT" "Y" "" "Plot To PDF" "Iso full bleed A3 (420.00 x 297.00 MM)" "m" "LANDSCAPE" "N" "W" "-6,-6" "807,560" "1=2" "C" "y" "Acad.ctb" "Y" "n" "n" "n" pdfName "N" "y" )
- Yesterday
-
@Steven P I have tried but it gives same Yeah it show the correct folder.
-
(defun PDFgetplottername ( pdfpreview / pname PC3FilePath ) ;; Get the correct plotter name based on preview or not (setq pname "DWG to PDF.pc3") ;; Default fallback (defun PDFgetplottername ( pdfpreview / pname PC3FilePath ) ;; Get the correct plotter name based on preview or not (setq pname "DWG to PDF.pc3") ;; Default fallback This will need to change as well I think Does PC3Loc return the correct folder?
-
@Steven P Hi bro, I have tried this and modified but I don't know is this right. (defun PC3Name ( / ) ;; Name of custom Plot Configuration PC3 File ;; This is the Plot Configuration PC3 file used when you check the 'Preview PDF' checkbox ;; otherwise it uses 'DWG to PDF.pc3' "Foxit PDF Editor Printer.pc3" ) (defun PC3Loc ( / PCP PC3LOC ) ;; Location of custom Print Configuration PC3 files ;; Note standard and no preview PC3 files are to be in the same location (setq PC3Loc (vla-get-PrinterConfigPath (vla-get-Files (vla-get-Preferences (vlax-get-acad-object))))) PC3LOC ) (defun PDFgetplottername ( pdfpreview / pname PC3FilePath ) ;; Get the correct plotter name based on preview or not (setq pname "DWG to PDF.pc3") ;; Default fallback (if (findfile (setq PC3FilePath (strcat (PC3Loc) "\\" (PC3Name)))) (setq pname (PC3Name)) ) (if (= pdfpreview "N") (if (findfile (setq PC3FilePath (strcat (PC3Loc) "\\" (PC3NameNP)))) (setq pname (PC3NameNP)) ) ) pname ) (defun PC3Exists (pc3name / fullpath) (setq fullpath (strcat (PC3Loc) "\\" pc3name)) (findfile fullpath) ) (defun C:PDF1 ( / cm pc3name paperName ) (vl-load-com) (setq cm (getvar 'CMDECHO)) (setvar 'CMDECHO 0) ;; Define your desired PC3 file and paper size (setq pc3name "Foxit PDF Editor Printer.pc3") (setq paperName "ARCH D") ;; or exact size from your PC3 ;; Only proceed if the PC3 file exists (if (PC3Exists pc3name) (progn (command "_.-plot" "_y" (if (= 1 (getvar 'TILEMODE)) "Model" (getvar 'CTAB)) pc3name paperName "_M" "_L" "_N" "_E" "_F" "_C" "_Y" "Free State.ctb" "_Y" ) (if (= 1 (getvar 'TILEMODE)) (command "_A") (command "_N" "_Y") ) (command "_N" (strcat (getvar 'DWGPREFIX) (vl-filename-base (getvar 'DWGNAME)) ".pdf") "_Y" "_Y" ) ) (prompt (strcat "\nPC3 file not found: " pc3name)) ) (setvar 'CMDECHO cm) (princ) ) But after that it shows like "Command: PDF1 PC3 file not found: Foxit PDF Editor Printer.pc3" The custom.pc3 file were saved in same as the default file/location. I don't know what I did wrong.
-
s_dhake2002 joined the community
-
@SLW210 I have paste the file path instead paste the "Foxit PDF Editor Printer.pc3". No difference. And also custom.pc3 file were saved in same location as default.
-
Steven P started following custom .pc3 not supported
-
For PC3 files, if I remember, I couldn't get LISP to create one so you'll need to set them all up and save the configuration files. It would help if you save them in the default file location A couple of snippets I have, This gives the default PC3 file location: (defun PC3Loc ( / PCP PC3LOC) ;;Location of custom Print Configuration PC3 files ;;modify if you want a different location from the default AutoCAD location ;;Note standard and no preview PC3 files are to be in the same location for it to work well. (setq PC3Loc (vla-get-PrinterConfigPath (vla-get-Files (vla-get-Preferences (vlax-get-acad-object))))) PC3LOC ) This one checks that the PC3 file exists - defined in the PC3NAME lisp (defun PC3Name ( / ) ;;Name of custom Plot Configuration PC3 File ;;This is the Plot Configutation PC3 file used when you check the 'Preview PDF' checkbox ;;otherwise it uses 'DWG to PDF.pc3' "DWG to PDF.pc3" ) (defun PDFgetplottername( pdfpreview / pname) ;;this needs to be set up in pagesetup settings (setq pname "DWG to PDF.pc3") ;;Default DWG to PDF plotter (if (findfile (setq PC3FilePath (strcat (PC3Loc) "\\" (PC3Name))) ) (setq pname (PC3Name)) );;end if (if (= pdfpreview "N") ;;get custom PC3 file name (if (findfile (setq PC3FilePath (strcat (PC3Loc) "\\" (PC3NameNP))) ) (setq pname (PC3NameNP)) );;end if );;end if pname ) where my Dwg to PDF.PC3 is my PDF plotter setting file
-
No I just entered the name of .pc3. let me try that too. But both custom .pc3 and DWG to pdf .pc3 are located in same folder.
-
Did you try to hard code the full path to the .pc3? i.e. C:PathtoPC3folder/Foxit PDF Editor Printer.pc3
-
Hence the reason the OP needs to respond with more than... I could test hings in LT when I get to work, but I would only do that for my own needs. If OP wants a solution they should be more responsive, IMO. The easy solution here is upgrade those that would need to use API calls to full AutoCAD.
-
Thanks for your help @SLW210
-
I moved your thread to the AutoLISP, Visual LISP & DCL Forum. Please post in the appropriate forum.
-
sameturk94 joined the community
-
lilian_100 joined the community
-
Yes, correct, I meant on that
-
-
@GLAVCVS, I tryed with "acLineSpacingStyleAtLeast", where the default value is 1 (acLineSpacingStyleAtLeast = 1). But, if you want different number than "1", definetly need to change "acLineSpacingStyleAtLeast" with desired value. As always, you're the man, thanks!
-
Just one detail: it might be necessary to replace 'acLineSpacingStyleAtLeast' with 1 for MLEADERs as well.
-
harimaddddy started following Spacing text efficiently
-
Saxlle started following line space factors
-
Hi @masterfal, I don't know what do you want to achieve with this: (vl-catch-all-apply (function (lambda () (setq mtextObj (vlax-invoke ent 'GetMText)) (if mtextObj (progn (setq newText (vla-AddMText (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-get-insertionpoint mtextObj) (vla-get-width mtextObj) (vla-get-TextString mtextObj) ) ) but there is several issues in this code, like: 'GetMText doesn't exist as Method, you can't use "acLineSpacingStyleAtLeast" as variable to store the value, etc. You can try with this: (defun c:LSFsel ( / ss i ent obj acLineSpacingStyleAtLeast mtextObj newText) (vl-load-com) (if (setq ss (ssget)) (progn (setq i 0) (while (< i (sslength ss)) (setq ent (vlax-ename->vla-object (ssname ss i))) (cond ;; MText: apply directly ((= (vla-get-objectname ent) "AcDbMText") (vla-put-LineSpacingStyle ent 1) (vla-put-LineSpacingFactor ent 0.8) ) ;; MLeader: rebuild MText ((= (vla-get-objectname ent) "AcDbMLeader") (vla-put-TextLineSpacingStyle ent acLineSpacingStyleAtLeast) (vla-put-TextLineSpacingFactor ent 0.80) ) ) (setq i (1+ i)) ) (princ "\n? Line spacing factor set to 0.8 for selected items.") ) (princ "\n?? No objects selected.") ) (princ) ) Try it, and see if it's helpful.
-
harimaddddy started following custom .pc3 not supported
-
Hi Everyone, Good day to all, I'm trying to customize a LISP routine to create PDFs using my own .pc3 and ctb file — specifically, I'm using "Foxit PDF Editor Printer.pc3". I tried replacing the default printer and setting a custom paper size, but the code isn’t working as expected. (defun c:PDF ( / cm ) (setq cm (getvar 'CMDECHO)) (setvar 'CMDECHO 0) (command "_.-plot" "_y" (if (= 1 (getvar 'TILEMODE)) "Model" (getvar 'CTAB)) "AutoCAD PDF (High Quality Print).pc3" "ARCH D (24.00 x 36.00 Inches)" "_M" "_L" "_N" "_E" "_F" "_C" "_Y" "monochrome.ctb" "_Y" ) (if (= 1 (getvar 'TILEMODE)) (command "_A") (command "_N" "_Y") ) (command "_N" (strcat (getvar 'DWGPREFIX) (vl-filename-base (getvar 'DWGNAME))) "_Y" "_Y") (setvar 'CMDECHO cm) (princ) ) (vl-load-com) (princ) When I replace the default .pc3 file in the LISP code with my own (Foxit PDF Editor Printer.pc3), instead of plotting automatically, it starts asking for every input again — like paper size, plot area, etc Command: PDF Yes or No, please. Don't use Esc while using a Lisp commandWrite the plot to a file [Yes/No] <N>: y Command: MOPRINT Yes or No, please. Don't use Esc while using a Lisp commandWrite the plot to a file [Yes/No] <N>: Save changes to page setup [Yes/No]? <N> Proceed with plot [Yes/No] <Y>: Effective plotting area: 903.11 wide by 603.25 high Plotting viewport 1. Effective plotting area: 792.73 wide by 577.98 high Plotting viewport 2. Also, it would be awesome if we could add a feature where each layout gets plotted using a name format and save location pulled from an Excel file. That would seriously save a ton of time and effort. Thanks in advance, friends!
-
WalterCox84 changed their profile photo
-
arman jade tivar joined the community
-
masterfal started following line space factors
-
hi all, i have a lisp routine i've been trying to set up to quickly update the line space factors of selected text to 0.8. now i've got it working ok for multiline text but i want it to also include multileaders. after running its picking the multileaders and then telling me the change to 0.8 has been completed but in reality the multileaders havent been updated. they are still 1. any ideas how i can get them to update? (defun c:LSFsel ( / ss i ent obj acLineSpacingStyleAtLeast mtextObj newText) (vl-load-com) (setq acLineSpacingStyleAtLeast 1) (if (setq ss (ssget)) (progn (setq i 0) (while (< i (sslength ss)) (setq ent (vlax-ename->vla-object (ssname ss i))) (cond ;; MText: apply directly ((= (vla-get-objectname ent) "AcDbMText") (vla-put-LineSpacingStyle ent acLineSpacingStyleAtLeast) (vla-put-LineSpacingFactor ent 0.8) ) ;; MLeader: rebuild MText ((= (vla-get-objectname ent) "AcDbMLeader") (vl-catch-all-apply (function (lambda () (setq mtextObj (vlax-invoke ent 'GetMText)) (if mtextObj (progn (setq newText (vla-AddMText (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-get-insertionpoint mtextObj) (vla-get-width mtextObj) (vla-get-TextString mtextObj) ) ) (vla-put-LineSpacingStyle newText acLineSpacingStyleAtLeast) (vla-put-LineSpacingFactor newText 0.8) (vlax-invoke ent 'SetMText newText) (vla-delete newText) ; cleanup temp MText ) ) ) ) ) ) ) (setq i (1+ i)) ) (princ "\n Line spacing factor set to 0.8 for selected items.") ) (princ "\n No objects selected.") ) (princ) )
-
Albertogm joined the community
-
Andywen2 joined the community
- Last week
-
Like others write same script file all the time then only one ever exists. Part 2 I reset my temporary directory to a top level "d:\acadtemp" much easier to find, you may be horrified as to how much junk is in there. To reset or find, Options, Files,"Temporary directory"" Save Multi toggles to a support directory as its auto loaded. cleanup temp.lsp Multi toggles.lsp