AutoCAD Visual LISP / AutoLISP :: Edit Grouped Text
May 11, 2012
whether within AutoCAD or thru Autolisp or VBA, to individually edit text that has been grouped. Ungrouping and regrouping is too cumbersome. Search and replace will work, but will change all instances of text that match the search / replace criteria.
I have many texts fields in my drawing. I need edit the format of all field. e.g field - 1030.60 convert to - 1.030,60 Is there any lisp doing that? I mean, select multiple field and change it.
I need to be able to batch process a bunch of title block attributes automatically.
Block Name: Title Block
Tag Name: SH
Currently they come out with just the number 1, 2 , 3 etc I need to add a leading zero ie 01, 02, 03 etc
All the scripts I have will just replace the number with another
I just want to append the zero infront of the existing number
ie the code will need to read the existing number and decide if its less than 10. if it is less than 10, then the code just needs to append the leading 0. if its 10 or over, then do nothing.
I've trying to track down a solution for an issue that we are experiencing. When some of our lisp programs get run, you can no longer double click on text to edit it in paper space. If I put text in model space, I am able to double click to edit it. Is there a variable for this?
I just verified something else, if I move the text to be outside of the View Port, I can double click to edit the text. If I try to double click to edit while inside the viewport then it switchs to model space withing the viewport.
I've started a new job and inherited a lot of custom files and menu's without documentation.
The company CUI is setup as the enterprise menu and displays READ ONLY on my system. And the company palettes all have a padlock displayed. All relevant files are on the server.
WHat rights do I need to edit and update these files?
I'm having issues with updating an MTEXT attributes value using lisp.
If I insert my block (this is a titleblock) and run my lisp routine the MTEXT attribute updates fine. Once I edit the MTEXT attribute with the MTEXT editor, and then run my lisp routine again, the MTEXT attribute will not update anymore. All the single line (DTEXT) attributes update fine. The lisp routine I created has worked for years...this is the first time I've tried it with an MTEXT attribute.
We have had custom toolbars for many years that included custom pop menus etc. Now that we are running cuix customizations how do I edit these customized pop menus? Do I need to rewrite this stuff in lisp, vba, .net, whatever?
I'm looking for a lisp routine that i can globally change the text height and width factor of a particular block attribute. The name of the attribute tag is "TAG". I would like to be able to select all the blocks that i need to edit and then specify what text height and width factor i want to change to.
Any way to customize the double-click of a block attribute to run the _ATTIPEDIT command on the targeted attribute? I know this can be achieved by holding Ctrl & then double clicking, but I am often using my hand else where on the keyboard, or even more often, when entering many values into attributes, I am using my left hand to keep my place on a sheet of paper as I scroll down it and enter in the values.
I've been up and down the forums looking for some direction or programming code for this to no avail.
What I'd like to do is edit a table where the cells are populated with fields. I'd like to copy the last row of the table to a new row (fields and all), then change the fields of the row I copied FROM to text, and lock those cells.
I'd like to copy this row including the fields to a new row beneath it. Then edit the cells of the first row to change the fields to text, and then finally lock the cells of the first row so that only the new row would update when the field properties change. Eventually they will be populated with data from the Vault..
I have the following code in a toolbar button that when I click on a setup within this tool it imports that setup into my current dwg. How to edit this code so that it will continue to import the setup of choice into the new drawing..but in addition....set the new one current & delete all previous setups that were in the drawing?
I'm working with our new copy of AutoCAD 2013 and using the Visual LISP IDE to create code. I also have an AC2009 machine right next to me for other tasks. On the 2013 machine when I click the "Load Active Edit Window" button it switches to the console screen but there are no messages printed like:
$ ; 37 forms loaded from #<editor "C:/LISP/My-Lisp.lsp"> _$
This of course is making it extremely difficult to debug. I have checked the environment settings and they are exactly the same on each machine. The AC2009 machine prints the messages but the AC2013 machine is just giving me a blank console screen.
When I click on an object to retrieve it's extended data, the data keeps writing to the right, it does not return to the next line, when the text approaches the end of the screen. Very difficult to analyze information.
I want to know is there any formula/calculation for the width of text object before creation/insertion? At now I used approximated width size via a simple .
(Defun GetStrWidth (str H W) (fix (*(* H W) (strlen str))));;usage: (GetStrWidth "This is a Text." 2.5 0.8);;H: TextHeight; W: width factor.
I know that for the existed text in drawing I can use textbox command, but for the texts that has not been created, what can I do? Is there any formula/calculation depends on font name, text height and width factor?
A program that prompts:"select objects:" then I can select some objects like as text, line, circle,... after that program find all texts in selected items and swap text
swap means: xxx/yyy ===> yyy/xxx ; "/" is a divisor
3rd party tool which didn't match our scaling needs the file is a fas so I have tried to reverse engineer the whole function using trial and error. The following code works perfect except we need multiple (x amount) lines of text I have at current the M txt function which mimics and is effective for today however we need all lines to be individual.
I’m playing round with a loop but how to achieve my need..He had a 3rd party tool which didn't match our scaling needs the file is a fas so I have tried to reverse engineer the whole function using trial and error.
The following code works perfect except we need multiple (x amount) lines of text I have at current the M txt function which mimics and is effective for today however we need all lines to be individual.
;Starting lisp program...(defun C:REDtext ();Creating Layers (if non existant)...(command "layer" "m" "TEKST-1.5mm" "lt" "continuous" "" "c" "1" "" "");Memorising previous layer...(setq MYOLDLAYER (getvar "clayer"));Setting requierd layer...(COMMAND "LAYER" "SET" "TEKST-1.5mm" "");Setting variable "MYHEIGHT" to "DIMSCALE" x 2...(setq myheight (* 2 (getvar "DIMSCALE" )));Requesting and storing usser defind point...(setq MYPOINT (getpoint "Start punt :")); Requesting and storing user defind text...(setq MYTEXT (getstring T "Nieuw tekst :"));Placing text...(command "text" MYPOINT MYHEIGHT "0" MYTEXT); Restoring previous layer...(setvar "clayer" MYOLDLAYER);Closing lisp program...)
I have inside every text,Mtext contents different text style like Arial_1 , Arial_2.
How i can give all the contents inside one style ? the normal procedure i will enter inside text to enter editing mode and changing text format style one by one. I want it once.
I want to save my routing of entering every text to change its content text style.
(Notice:select all from outside without editing mode will not do the job)
I use the bounding box (vla-getboundingbox) to assess parameters of blocks. These blocks have text on some of the faces that extends beyond the simple dimensions of the blocks themselves. I'm wanting to have bounding box ignore the text and can't sort it out. I've tried putting the text on a separate layer and turning it off and freezing it.
I've considered looking at sub entities and filtering out the text but I don't know if there is a solution here or not.
I have an mdb database, with one table called MATRIX. That table has seven relevant fields, see attachment. What I want to have is for every language an txt file.
This is a routine that draws a line between duplicate text.
Would it be possible to have the line as bold red p-line so that its easier to identify.
;; This AutoLISP routine examines all the user-selected TEXT and MTEXT items, ;; and draws a line on the current layer between any two that have identical ;; string values. ;; Leading and trailing blanks spaces are ignored. ;; %% modifiers, like %%u, are not ignored. ;; Upper- and lower-case differences are not ignored.
(defun c:fdt () ;;Find Duplicate Text
(prompt "Select text items to examine: ") (setq ss (ssget '((-4 . "<OR") (0 . "TEXT") (0 . "MTEXT") (-4 . "OR>"))))
I've looked around several places for a LISP that will alphabetize existing text. I cant seem to find what I need. I am looking for a routine where I can manually select text in a given order to get the outcome of AA,AB,AC,AD, or BA,BB,BC., etc.
I've attached a drawing to better explain what I am looking for. I do not know how to write LISP routines, but I know a little to be able to modify an existing one.