AutoCAD Visual LISP / AutoLISP :: Combine Multiple Mtext Into 1 Mtext
Apr 16, 2009Tool to combine multiple pieces of Mtext into a single Mtext with paragraphs?
View 9 RepliesTool to combine multiple pieces of Mtext into a single Mtext with paragraphs?
View 9 RepliesAutocad Express Tools allows converting text to mtext. How would I be able to combine multiple mtext into a single mtext?
View 7 Replies View Related3rd 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 mtext in several drawings that contains an error that'd I'd like to fix using Lisp. An example of what this text should look like is:
NOTE:
SEE DRAWING XXXX FOR DRIVE DETAILS
The fist problem is that all of the text after the note has a width factor of 0.1 and is all squished together. The second problem is that the text height of the title (the "NOTE:" part) is supposed to be larger than the actual note (the "SEE DRAWING XXXX FOR DRIVE DETAILS" PART). Is there a way to fix this using lisp? I had a lisp in progress (not done) which is:
(IF
(SETQ SSET (SSGET "X" '((0 . "MTEXT"))))
(PROGN
(SETQ COUNT -1)
(WHILE (< (SETQ COUNT (1+ COUNT)) (SSLENGTH SS))
(SETQ ENTDATA (ENTGET (SSNAME SSET COUNT)))
(SETQ ENTTEXT (CDR (ASSOC 1 ENTDATA)))
(ENTMOD (SUBST (CONS 1 (STRCAT "{\W1;" ENTTEXT "}")) (ASSOC 1 ENTDATA) ENTDATA))
The last line has no effect on the width factor of the note.
This is the entdata for this particular piece of mtext (they aren't all the same):
((-1 . <Entity name: 7ffff79ce50>) (0 . "MTEXT") (330 . <Entity name:
7ffffb069f0>) (5 . "392FD") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"5") (100 . "AcDbMText") (10 676.276 751.03 0.0) (40 . 3.008) (41 . 0.0) (46 .
[Code]....
I have a routine, developed for me through this forum, that selects text or mtext, converts to mtext if not already, and puts a background mask with 1.1 border. I was using it fine in Map 3D 2007, but have recently switched to Civil 3D 2012 where it does not work. I get this error message:
; error: no function definition: VLAX-ENAME->VLA-OBJECT
Why does this not work in 2012? How to get it to work?
I'm looking for a function to return the actual text from an mtext object.if there's a carraige return I wish to replace it with a space.
View 4 Replies View RelatedI would like to write a routine to resize the MText limits box to the minimum size required to cover the text, for background masking purposes. From the DXF codes, I see that I can simply set code 41 to match code 42 in order to set the width. However, I cannot seem to figure out how the vertical dimension is defined. (entget) shows no change in the DXF codes after I resize the mtext box.
I do know how to figure out the height that I need, using (acet-geom-textbox), but I can't seem to figure out how to apply this height the MText entity.
I got this nice little lisp from [URL] .....
(defun c:mt2ml ( / oobj nobj nstrg) (vl-load-com) (setq oobj (vlax-ename->vla-object (car (nentsel "
Select source text: ")))) (if (= (vlax-get-property oobj 'ObjectName) "AcDbMText") (setq nstrg (vlax-get-property oobj 'TextString)) (exit) ) (command "_MLEADER") (while (= 1 (logand (getvar "CMDACTIVE") 1)) (command PAUSE)) (setq nobj (vlax-ename->vla-object (entlast))) (if (= (vlax-get-property nobj 'ObjectName) "AcDbMLeader") (vlax-put-property nobj 'TextString nstrg) (exit) ) (entdel (vlax-vla-object->ename oobj)) (princ))
It converts MText to a Multileader.
My goals would be as follows:
The multileader should end up on the same layer as the Mtext. (Currently it uses the current layer.)The multileader should hold the same rotation as the Mtext. (Currently it goes to zero.)The multileader should be created in the same location as the Mtext, without the user having to click. (Currently the multileader is created wherever the user clicks.)The multileader should be created without a leader. We can add one afterwards if needed, but for many we don't need a leader. (We're just using the object as mtext with a box around it.)
I'm finding Mleaders with Mtext don't seem to play well with command calls. All works fine until one tries to enter the mleader text. Before testing this, be sure your mleader style is set to use mtext. I recommend starting the leader with the arrow first.
Compare this mleader's text entry behavior in this basic lisp command call:(command "_.acad_dim.mleader") with the following routine that relies on an open ended command prompt (useful if you want to add more commands after calling the mleader command):
(defun c:mlx (/ cc_echo)
(prompt "
Example showing mleader mtext misbehaving")
(setq cc_echo (getvar "cmdecho"))
(setvar "cmdecho" 1)
(command "_.acad_dim.mleader")
[code]...
With qleaders, the leader and text are separate entities.
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.
Lisp routine that will rotate Mtext to the same angle as the angle of a selected line and the allow you to place the mtext object where you wish.
I know there is an lisp out there called RTL that will allow you to do this with regular or Dtext, but I will not work with Mtext.
In my drawing I have lot of MTEXTS having unwanted spaces in between the text strings.
A lisp to remove space from MTEXT. Here i am attaching sample drawing with MTEXT which is to be modify. Magenta color MTEXT need to modify like yellow color MTEXT.
I have numerous MText paragraphs that I need to combine into a single piece of MText. I want the paragraphs preserved in the final piece. I've found some routines that can combine pieces of MText but I don't know if they preserve the paragraphs.I have DotSoft Toolpac but it doesn't seem up to the task. C
Infrastructure Suite/C3D 2013, LDT 2004, Power Civil v8i SS1
WIN 7 64 PRO
HP Pavillion h8xt, i7 2600, 12 GB
RADEON 6450, 1 GB
I’m trying to put together a loop for if nil or something other than text or mtext is accidentally selected than prompt text was not selected. This is what I have so far.
text or mtext is not selected than prompt
(defun C:ww ()
(while
(not
(and
(setq esel (entsel "
[Code]......
I am wanting to use autolisp to access the text in a MTEXT entity. assoc(1) gives me the first bit of text, but not the rest.Is there a way to use assoc to access each of a number of matches or do I need to write my own routine to find all the 1's?
View 5 Replies View RelatedI looking into a way to insert mtext with two differents sizes of the words just like the image about in autolisp.
View 9 Replies View Relatedi have a situation that i need to mirror a lot of MTEXT exisiting in my drawing with following needs ( as attached CAD file) :
- MIRRTEXT = 1
- original text retain not deleted.
- mirrored texts become on another layer with another color.
- mirrored texts exactly become over the original text.
I am not sure why this is not working.
(setq SelectionSet (ssget "C" Point1 Point2 '((-4 . "<or") (0 . "CIRCLE") (0 . "MTEXT") (-4 . "<or"))))
I want to select circles and mtext within the specified points.
I am working on a simple function to add/remove a non-printing stamp our drawings to specify a preliminary drawing. The issue is that I cannot seem to get AutoCAD to accept the text height in the Mtext command. Below is the code; try it and see.
(DEFUN NOT4CONSTRUCTION(/ CTR HGT PT1 PT2) (IF (EQ (GETVAR "CLAYER") "NOT4CONSTRUCTION") (SETVAR "CLAYER" "0")) (IF (EQ (GETVAR "CTAB") "MODEL") (SETQ HGT "8'-4"") (SETQ HGT "1"")) (IF (= (ASSOC 0 (TBLSEARCH "layer" "NOT4CONSTRUCTION")) nil) (PROGN (VL-CMDF "-LAYER" "M" "NOT4CONSTRUCTION" "C" "30" "" "TR" 90 "" "P" "N" "" "") (SETQ PT1(LIST (- (CAR (GETVAR "viewctr")) (/ (* (GETVAR "viewsize") (/ (CAR (GETVAR.
[code]....
Would like to be able to select mtext explode it get x y coords of last line of text then turn it back to mtext and then launch mtext at a @0,-0.5 justification TL width 5 and display the ribbon.
All seems to work except the (command ...)
Below is my attempt.
(prompt "Select Note")
(setq ss (ssget))
(command "explode" ss)
(setq ss (ssget "l")) ;get last line of text
(setq ent (entget (ssname ss 0))
ent1 (cdr (assoc 10 ent))) ;get x y coords
(command "undo" "1") ;set exploded mtext back to mtext
(setvar "lastpoint" ent1)
(command "mtext" "@0,-0.4" "j" "TL" "w" "5")
Is there a lisp or script program that will find and replace pre-defined text/mtext value of eg " issued for tender " for "issued for construction" without having to select anything.
View 9 Replies View RelatedLSP file i downlaoded from web.it is to use for Area with (m2) and room name. by click polyline.
i want to modify it to use without adding Room Name, just insert area to the drawing.
(defun drtxt (/ rn tx ls vl lt ht lb hb nr pt)
(setq tx (strcat "Area: "
(rtos (/ (getvar "area") 1000000) 2 2)
" m2"
)
rn (getstring "
Room Name: ")
[code]....
I am trying to create an mtext entity using entmake with different text height, text style and underlining. I have a subroutine that works fine. However - I would like to use different text height, text style and underline for the Title Text vs the following lines.
Here is the subroutine I already have -
(defun Create_MText (MT_PMS MT_Layout MT_Layer MT_Style MT_Justify MT_Point MT_Rotate MT_Size MT_Width MT_Title MT_Body / )
(setq FSC_MText
(list
(cons 0 "MTEXT")
[Code] .......
I want to create a layer from selecting only some words from an mtext or text entitty.
Is it possible to highlight and select only part of the text from an mtext using a lisp routine ? similar to how Adobe Reader can select text.
I'm running the following string in a routing that is looping so I get dozens of these prompts. How to supress these? Or, do i have to use to entmake?
(begin loop...
(command ".-Mtext" CSW-Tpoint "W" 0.0 (vl-filename-base (vla-get-imagefile image)) "")
);end loop
Prints to the command line..
Current text style: "Standard" Text height: 0.0833 Annotative: No
Current text style: "Standard" Text height: 0.0833 Annotative: No
Current text style: "Standard" Text height: 0.0833 Annotative: No
Current text style: "Standard" Text height: 0.0833 Annotative: No
I have a routine that looks for an MText date stamp and replace the old date with a new date. The problem is some MText strings appear encrypted. Below is an example:
{\H1.121x;\C1; \LFY 2011-12\l \H0.6252x;04-30-11} This is what I should get when I extract the string (as shown in Property window)
(1 . "\pxi-2.1818,l4.3636,ql,t4.3636;{\fSymbol|b1|i0|c2") is what I get when I extract the group code.
I'm running AutoCAD 2012 on Windows 7.
I have multiple singular text objects on my screen and I want to convert them to mtext so I can use the Background Mask option within mtext on my drawing. how to quickly select all the text and convert it to mtext without it combinin ginto 1 mtext?
View 9 Replies View RelatedI'm trying to combine two user inputs and a constant with setq without spaces so I can use it in an AutoCAD command.
I haven't seen a string command that does this. It always has spaces in between the fetched valvues.
Why is this happening?
The dwg was fine, then it crashed while changing from modle space to paper space...
When i recovered the dwg, EVERY MTEXT I try to edit becomes rotated vertically and stays that way when i close the edit box...
I do not recall hitting any buttons or making any keystrokes without my knowing...
Is there a way to get my text back to Horizontal and stay that way?
I tried setting the MTEXTFIXED to: 0, 1 & 2.
NONE of these options changed anything.
I NEED to have this fixed. more importantly, i need to know why this is happening sop that i can take steps to prevent this happening in the future...
I am currently working with the latest CAD available.
I have more DWG files, all dwg file convert same size (A3 SIZE) PDF file and combine one PDF file. Find script program or lisp program.
I have script program for convert dwg file to pdf file but i don't know all pdf compile one pdf file.
I have a whole bunch of labels that are single line text that I want to convert to Mtext. I have been using the Express Tools TXT2MTXT command but that only works on one label at a time. If I select all the labels at once using this command it gives me one long Mtext string. Is there a way to convert all of the labels to mtext, but still maintaining individual entities?
View 5 Replies View Related