Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. There is a good program for MLEADER and MTEXT, author KoMon reset_mleader_mtext.fas
  3. Here is one I did a while back for the WIDTH only. (I'll see if I can add the height as well.) NOTE: This doesn't work well with Annotative MTEXT, and it will not work if the columns are set to "dynamic"; must be set to "No Columns". (see screenshot). (defun c:MTWID (/ _StrParse d dw obj ss tls txt wid) (vl-load-com) (vla-StartUndoMark (setq d (vla-get-activedocument (vlax-get-acad-object)))) (defun _StrParse (str del / pos) (if (and str del) (if (setq pos (vl-string-search del str)) (cons (substr str 1 pos) (_StrParse (substr str (+ pos 1 (strlen del))) del)) (list str) ) ) ) (princ "\nSelect MTEXT Objects: ") (if (setq ss (ssget '((0 . "MTEXT")))) (repeat (setq n (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss (setq n (1- n)))) txt (vla-get-textstring obj) dw (vla-get-width obj) ) (if (> (length (setq tls (_strparse txt "\\P"))) 1) (setq txt (apply 'strcat (cons (car tls)(mapcar '(lambda (x)(strcat " " x)) (cdr tls))))) ) ;; get the width of the longest text string (setq wid (apply 'max (mapcar '(lambda (x / y)(setq y (textbox (list (cons 1 x))))(- (car (cadr y)) (car (car y)))) tls))) (vla-put-textstring obj txt) (vla-put-width obj wid) ) ) (redraw) (vla-endundomark d) (princ) ) If someone can figure our a way to scale properly with annotative text and turn off columns programmatically, then it would be good to add.
  4. There is an easier way (m-r @Lee Mac don't get mad ). Create a separate folder for files that need to be added to the startup. And in the "Load/Upload Applications" window, click "Add..." and open this folder. Select all the files in the folder and click the "Open" button. All files will be uploaded to the Startup Suite. A good idea comes after
  5. If I understand correctly, you can't do this with standard AutoCAD tools. You need to associate each label with its perimeter and its neighboring boundary. To do this, you'll need to break each perimeter down into individual polylines. Each perimeter section shared by two labels must be a separate polyline. Start by figuring out how to achieve this.
  6. Today
  7. Thank you! But my goal is a lisp that would automatically set up the width and height to match the text shown without any input from me.
  8. I've edited the code so that, upon completion of the command, the "ListaLisp.lsp" file opens with Notepad. Try again. PS: "ListaLisps.lsp" file must have been created. Otherwise, the subsequent messages would not have appeared.
  9. @Nikon My 2c .. place all your lisp files in a subfolder under "MYDOCUMENTS". Then you don't have to worry about permissions, AutoCAD version or usernames. (strcat (getvar "MYDOCUMENTSPREFIX") "\\LISP") Then add this to your support paths and DONE!
  10. My deep respect to all those who responded and guided me on the right path. I didn't expect the question to be difficult. Regarding the latest code GLAVCVS, here are the messages: Access AutoCAD directory and such an entry in the command line: *** 4 files LOADED *** *** New SupportPath: C:\Program Files\Autodesk\AutoCAD 2021\Support\StartUPSupp Files from the StartUPSupp folder were uploaded to this drawing, but I did not find the "ListaLisps" file.Isp" in the "Documents" folder.
  11. use this one for width of mtext WD.VLX
  12. Yes, that's true! I was wrong. I think you understood the tag syntax very well. I'm attaching an image of what the second floor should actually look like.
  13. Hello all. I'm looking for a Lisp that enables me to just select an MTEXT -or Just apply it to the entire plan- And it automatically redefines MTEXT width and Height to be tight around the text as shown in the picture. Please let me know if you have any questions.
  14. Lee Mac

    any Lisp editor not VLIDE

    You can enable VLIDE in newer releases by setting LISPSYS=0. https://help.autodesk.com/view/ACD/2024/ENU/?guid=GUID-1853092D-6E6D-4A06-8956-AD2C3DF203A3
  15. No - you cannot intercept and modify the output of standard commands, only redefine them.
  16. devitg

    any Lisp editor not VLIDE

    @all poster . I got to use Vlide at my 2024 . Not know how, but it work. Thans all you.
  17. Code does almost everything Or at least it tries to: –Unlocks access privileges to "Support" (if necessary) –Checks the privileges with which AutoCAD is running –Adds to 'SupportPath' the directory of the lisp files to be loaded –Writes to acadDoc.lsp (yes, no longer acad.lsp). –And if something goes wrong, it will probably give you an explanation of what you need to do. That said: I haven’t included a complaints form
  18. Lisp, Lisp, Lisp.... and only Lisp
  19. Last attempt ;************************ G L A V C V S ************************* ;************************** F E C I T *************************** (defun c:LoadFolder (/ sh hwd carp slf pth lstAA a arch nmarch nmarchLL cno cns sl r l admin? ttpp acadAdmin? sustCad) (defun ttpp (cp / c w) (and (vl-file-directory-p cp) (setq w (vlax-get-or-create-object "WScript.Shell")) (findfile (setq c (strcat (getenv "windir") "\\System32\\icacls.exe "))) (vlax-invoke-method w 'run (strcat c "\"" cp "\"" " /q /c /t /grant " (cond ((getenv "userdomain")) ((getenv "computername"))) "\\" (getenv "username") ":(OI)(CI)F /T") 0 :vlax-true ) ) (and w (vlax-release-object w)) ) (defun acadAdmin? (/ arch ruta ruta1 f sh) (if (findfile (setq ruta1 (strcat (getenv "TEMP") "\\acAdmin.si")) ) (vl-file-delete ruta1) ) (if (setq arch (open (setq ruta (strcat (getenv "TEMP") "\\ea.bat")) "w") ) (progn (write-line "@echo off net session >nul 2>&1 if %errorlevel% == 0 ( echo SI> \"%temp%\\acAdmin.si\" )" arch ) (close arch) (setq sh (vlax-create-object "WScript.Shell")) (vlax-invoke sh 'Run ruta 0 :vlax-true) (vlax-release-object sh) (vl-file-delete ruta) (if (findfile ruta1) (progn (vl-file-delete ruta1) T ) ) ) ) ) (defun sustCad (tx a n / c i r) (while (/= (setq c (substr tx (setq i (if i (1+ i) 1)) 1)) "") (setq r (strcat (if r r "") (if (= c a) n c))) ) ) (setq sl (getvar "SECURELOAD")) (SETVAR "SECURELOAD" 0) (if (setq admin? (acadAdmin?) sh (vla-getinterfaceobject (vlax-get-acad-object) "shell.application") hwd (vl-catch-all-apply 'vla-get-hwnd (list (vlax-get-acad-object))) carp (vlax-invoke-method sh 'browseforfolder (if (vl-catch-all-error-p hwd) 0 hwd) "Folder to load" 0 "") ) (if (setq slf (vlax-get-property carp 'self) pth (vlax-get-property slf 'path) pth (vl-string-right-trim "\\" (vl-string-translate "/" "\\" pth)) ) (if (setq lstAA (vl-directory-files pth "*.lsp")) (foreach a lstAA (if (not arch) (setq arch (open (setq nmarchLL (strcase (strcat (VL-REGISTRY-READ "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" "Personal" ) "\\ListaLisps.lsp" ) ) ) "w" ) ) ) (load (strcat (setq cno (strcat pth "\\" a)))) (write-line (strcat "(load \"" (sustCad cno "\\" "\\\\") "\")") arch) ) ) ) (if (not Admin?) (vl-catch-all-apply (alert "Acad.exe not have Administrator privileges.\nThis requeriment is necessary to run this command.\n\nExiting...") (exit) ) ) ) (if arch (progn (close arch) (startapp "notepad" nmarch) (princ (strcat "\n*** " (itoa (length lstAA)) " files LOADED ***")) (if (not (wcmatch (strcase pth) (setq cns (VLAX-get-property (setq prf (VLAX-get-property (vla-get-preferences (vlax-get-acad-object)) "files")) "SupportPath")))) (progn (vlax-put prf "SupportPath" (strcat cns ";" pth)) (princ (strcat "\n*** New SupportPath: " pth)) ) ) (setq nmarch (if (setq a (findfile "acadDoc.lsp")) a (strcat (vl-filename-directory (findfile "acad.exe")) "\\Support\\acadDoc.lsp")) nmarchLL (strcase (sustCad nmarchLL "\\" "\\\\")) ) (if a (if (setq arch (open nmarch "r")) ;;; (progn (while (and (not r) (setq l (read-line arch))) (setq r (wcmatch (strcase l) "(LOAD *LISTALISPS.LSP\")" ))) (close arch)) (progn (while (and (not r) (setq l (read-line arch))) (setq r (wcmatch (strcase l) (strcat "(LOAD \"" nmarchLL "\")") ))) (close arch)) (alert (princ (strcat "It was not possible to write to \"acadDoc.lsp\". Open the file yourself and write: (load \"" nmarchLL "\")"))) ) ) (cond ((and a (not r)) (if (setq arch (open nmarch "a")) (progn (write-line (strcat "(load \"" nmarchLL "\")") arch) (close arch) (alert "\"acadDoc.lsp\" has been successfully modified"))) ) (a (vlax-invoke-method (vlax-create-object "wscript.shell") 'popup "\"acadDoc.lsp\" is correct.\nNo modifications were necessary" 0 "Checking \"acadDoc.lsp\"..." 0) ) ;;; (nmarch (if (setq arch (open nmarch "w")) (progn (write-line "(LOAD \"LISTALISPS.LSP\")" arch) (close arch)))) (nmarch (if (setq arch (open nmarch "w")) (progn (write-line (strcat "(load \"" nmarchLL "\")") arch) (close arch) (alert "\"acadDoc.lsp\" has been successfully modified")) (if (= (vlax-invoke-method (vlax-create-object "wscript.shell") 'popup "It appears that it is not possible to write to the \"Support\" directory.\nWould you like me to try to unlock access permisions?" 0 "Access AutoCAD directory" 4 ) 6 ) (progn (ttpp (vl-filename-directory nmarch)) (if (setq arch (open nmarch "w")) (progn (write-line (strcat "(load \"" nmarchLL "\")") arch) (close arch) (alert "DONE!!!\n\n\"acadDoc.lsp\" has been successfully modified")) (vlax-invoke-method (vlax-create-object "wscript.shell") 'popup "The attempt didn't work.\nYou'll need to troubleshoot the problem manually:\n\nDo the following:\nStart StartSuite, find \"ListaLisps.lsp\" file in \"Documents\" folder and select it to load every time you start it.\n\nThis will resolve the issue" 0 "Access AutoCAD directory" 0 ) ) ) ) ) ) (T (alert "Ocurrió lo inesperado")) ) (if arch (startapp "notepad" nmarch)) ) ) (SETVAR "SECURELOAD" sl) (princ) )
  20. Looking at Omega-Thunder, he used the Registry editor, and not LISP via AutoCAD, you'd need to ask perhaps in a Windows forum how to amend the registry from a text file. The registry is a powerful tool - get it wrong and you might be needing to reinstall your software - so be careful. Via LISP the methods you can use are detailed above, remembering of course that LISP via AutoCAD is mostly for manipulating lines on the screen, not for controlling windows, or the workings of your CAD package. Might be you have to consider the end result and work out if you can do what you ultimately want another way using the above. (Note: Adding to Lee Mac, experience in the area, the commentators on this thread... and those who haven't commented but I know read most threads add up to 10s of thousands of posts, many many years of LISPs, and if they are suggesting other solutions then perhaps... perhaps... that is the way to go)
  21. There is no ignoring, I just didn't know that "The Startup Suite cannot be automated via LISP". (Lee Mac Posted November 4, 2014) I just found out about it today. Hasn't anything changed in Autocad since 2014?
  22. ...or just ignore us
  23. OMEGA-ThundeR apparently coped with the task. But no one commented on his decision...
  24. issammesk

    field text

    dear its not big problem i know but every time edit name layout we must go to Titel frame and copy modified or edit and sometime forget edit so i need its field thank for all experts in these site
  25. issammesk

    field text

    ABOVE IS NAME FOR LAYOUT IN FRAME DRAWINGS TITEL I WANT TO MAKE THESE FIELD WHEN CHANE THE LAYOUT NAME AUTOMATIC CHAHNGE IN FRAME
  26. issammesk

    field text

  27. Even more reason to give weight to the opinions of those who have more experience in this area To the man with a hammer, everything looks like a nail.
  1. Load more activity
×
×
  • Create New...