I need some help with AutoLisp.
>
> I have an AutoLISP routine that saves me time every day, but it's
> missing a couple of tweaks that would really help. A few months ago,
> in response to another question, somebody online pointed me to a Lisp
> routine TX2MTX (available several places online).
>
> This solved my first problem: to convert several adjacent TEXT
> entities into a single MTEXT entity. The way it works, I select the
> TEXT entitites, then click a button, and presto.
>
> However, this leads to another problem. TX2MTX takes the justification
> attribute of the first TEXT element and applies it to the resulting
> MTEXT. However, the documents I'm working with these days are poorly
> formatted. In most cases the draftsman used Left justify for the
> text, and centered another TEXT element underneath it by eyeball. The
> routine converts them both to a single MTEXT, but left-justified. For
> various reasons, I often need this MTEXT to be centered.
>
> Other times, the problem is reversed: The draftsman used Center
> justify and the result needs to be Right or Left.
>
> In these case, I have to change the Properties of the new MTEXT file.
> This only takes a few seconds, but I'm working with dozens of drawings
> at a time, each one with dozens of lines that I'm converting to MTEXT,
> and it's getting very tedious to keep doing the same fix over and over > again.
>
> What I would like is to change the function of TX2MTX and have
> multiple (similar) programs. One button for Top-Left justify, one for
> Top-center, and one for Top-right.
>
> I have looked at the code several times for the past few weeks and I
> can't figure out how to change it. I'm sure for an experienced Lisp
> person it would take just a couple of minutes.
>
> Along with that, I need another change. TX2MTX makes a calculation of
> the required width for the new MTEXT entity, but it's a little off in
> some cases. I want to make it about 10-20% larger in almost every > case.
>
> Finally, the resulting MTEXT has another attribute that is
> inconvenient. The default Line space style is for the line heights to
> be "At least" 1 unit high. Again, for several reason, this is awkward
> and requires a few clicks to fix. I would prefer that the default
> setting be "Exact" (1 unit).
>
> For background: I own AutoCAD LT 2000, as part of my work as a
> technical translator. One of my specialties is AutoCAD drawings, and
> I have another couple of programs to help do this. It is much more
> convenient and faster to translate AutoCAD drawings (for example, into
> Spanish) if the text that is supposed to be together is actually > together.
>
> One example: Say that the drawing includes the text
> STAINLESS
> STEEL
> on two separate TEXT entities. My machine-assisted translation
> software can't know that these are supposed to be related, and if I
> let it, it would translate each term literally. Into Spanish:
> INOXIDABLE
> ACERO
> The problem is that this is backward, in many languages. I would have
> to reverse the resulting AutoCAD drawing.
>
> The Lisp routine that I have improves this process tremendously. But
> especially in the past few weeks, there's still grounds for
> improvement. It takes two-three times as long to pre-process AutoCAD
> files, because I have to adjust the resulting MTEXT item almost every
> time (justification, line spacing)
>
> A long time ago I was a Fortran programmer (don't laugh) and a few
> years ago I took some classes in Scheme (variation of Lisp). That was
> a long time ago and that was nothing like what I need now.
>
> One more thing: I also bought LT Boost Extreme 2004 to make the Lisp
> routines go, and that's been great.
>
> Any pointers? I'm sure that these modifications would take minutes
> for the right guy, and I don't have the time to learn how to do it > myself.
>
>
> --
> Steve M - snipped-for-privacy@houston.rrdirt.com (remove dirt for reply) >
> "For the most part, watching a half hour of television is
> like dying a half hour earlier than you otherwise would."
> -- columnist Don Kaul
Change the alignment of the first string to "center" before making the MTEXT. Change the value of the 72 field of the text entity as follows:
(DEFUN C:CTIPC (/ E P P1 P2 DI AN ENTSUB) ; CHANGE TEXT INSERTION POINT TO CENTER (DEFUN ENTSUB (E I V) (SUBST (CONS I V) (ASSOC I E) E)) (SETQ E (CAR (ENTSEL "\nSelect text to change to center alignment: ")) E (ENTGET E) P (CDR (ASSOC 10 E)) E (ENTMOD (ENTSUB E 72 1)) E (ENTGET (CDR (ASSOC -1 E))) P1 (CDR (ASSOC 10 E)) P2 (CDR (ASSOC 11 E)) DI (DISTANCE P1 P2) AN (ANGLE P1 P2) P2 (POLAR P AN DI)) (ENTMOD (ENTSUB (ENTSUB E 10 P) 11 P2)) (PRINC))
Hope this helps.
Mitch Thompson
formatting link