AutoCAD Visual LISP / AutoLISP :: How To Justify Text Using TJUST Express Tool
Mar 7, 2012
I am trying to use LISP to justify text using TJUST express tool. I have different layers I need to justify differently - current code causes the error "extra cdrs in dotted pair on input". Or a better way to do it???
(setq N 0 ctext nil) (repeat (sslength ss) ;
begin loop (setq ctext (entget (ssname ss N)))
(setq clayer (cdr (assoc 8 ctext)))
(cond ((= clayer "LABELS")
(setq flag "Start") );
MDT had its own express tools that someone had programmed some awesome file management tools into.i want to get access to these to do some large scale xref re-mapping (changing file paths) to sort an issue with file links now that we have a new cad server up and running.
i am not against doing some programming myself or scoring some of our great forum contributions to put this together if it hasn't been done yet, it just seems a waste that someone had done an absolutely beautiful job of doing this already, maybe we can track it down again?.URL....
i had my enterprise CUI working fine, and then one day it blew up and now everyone gets an error that autocad is trying to load acetmain.cui but it's already loaded. do i need to load acetmain.cui as a partial cui? i figured that i did, but then why does acad try to load it twice?
so i have the enterprise cui loading the acetmain as a partial. when the users log in, the enterprise cui is in loaded AS their enterprise cui in the Support Paths but then they load their own custom cui as the Main cui on their individual workstations. THIS cui ALSO is loading the acetmain. i think that's where the conflict is.
if that's the case, should i just give out instructions on how to remove the acetmain from their personal "custom" cui? it seems that if i take acetmain out of the enterprise cui, that the entire menu disappears from teh individual workstations.
I would like to turn off the express tool visiblity in the menu bar. I have turned them off in the CUI. (in all workspaces, I have removed the aecmain.lsp witch i see loads into the toolbar, I have unloaded the partial cui and reloaded). If I set the workspace to one which it is turn off it goes away. Problem is that when I open again "its back". Is there another place that I don't know about that controls?
I "do" want to load the express tools. I don't want them to show in the menubar nor the ribbon. I want to allow command line or custom menu macro to call. I was able to do this in 2010.
I have a problem when creating new Tool Palettes..
As soon as I exit autocad after creating them and then re-open CAD the next day all the Tool Palettes have the locked icon in the bottom corner so I'm unable to add to them.. I've tried everything to unlock them...making sure the atc files aren't read only, unlocking all tool bars in menu customization etc but nothing works.....
I use the following lisp to control my window background colour,
;Setting window colour to crimson (uses OLE colour code system)...(vla-put-TextWinBackgrndColor(vla-get-display(vla-get-preferences(vlax-get-acad-object)))3937500)
However I would like to change the drafting tool tip background also using lisp, but I don’t know which vla-put-….. I need?
I added a couple of standard Autocad MAP tabs to a custom panel and in my custom workspace some of the button images don't show up. If I go to the Planning & Analysis workspace, the images are visible, but in the custom workspace, all I get are clouds with a question mark.
I attached two screen shots.
Civil3D 2014 SP1 Win 7 Professional - 64-bit HP Z400 Xeon W3550 @ 3.07Ghz 24GB of RAM Nvidia GeForce GTX 760
I've inherited management of CAD standards. A third party developed the tool palette - mostly blocks, etc. but there are also icons to add whole series of layers to drawings. Click 'Architectural Layers' you add the architectural layers. Click 'Plumbing Layers' you add the plumbing layers. Since the original implementation, things have been changed.
I am developing 'enterprise' tool palettes which i've put on a networked drive to which i have write permissions and the users have read-only permissions. Within these palettes, each palette has separators and Text titles to group the commands and these groups originally appeared on everyone's computer as i expected when i first made them available. But now when i add new commands to a palette on the networked drive, the new command appears on the correct palette, but at the bottom of the palette, on the user's computers.
I have made provisions for each user to create their own collection of palettes, which are saved on their own directory and, of course, they can do whatever they want with them. But i want to prevent them from re-organizing the enterprise palettes and more importantly, if i add a new command in palette "X" and locate it in group "y" of that palette, i want it to be in that location when the users view it.
Is there some way to make the enterprise palettes on their computers look like i arrange them?
I also note I could use excel but I have this thing where id like to have the lisp and AutoCAD run independent from other external programs.
I’m the CAD monkey at work and I’m given unbelievable autonomy to what I build (sometimes I confuse work with hobby) put all to one side. My functions often require toolbars with several buttons on them what I would like for one toolbar in particular is to make a most used function button. Better said a button at the beginning of my toolbar, which execute the most used button from within that entire toolbar.
The ideas so far is to add a write-line (append) function lisp for every button this would intern write a button codename/ reference example SNP for snap and SAV for save and so on. All easy I can do this.
What I’m having difficulty with is actually counting the instances of the most used button using lisp. At the moment I’m resorting to a vb.net program, which needs to be shelled first, to recalculate the whole list it works but is messy and quite patch worked. The highest instance would then be used to set a variable, which would be used as the command in the so-called “top 1 tool button”
I have created a new tool palette. The tool palette takes the blocs from a drawing.
Now I want to connect this to a catalog, so it can refresh from there. I should be able to export the tool palette with a right click but I only have the possibility to rename, new palette or delete.
I guess that once I have managed to export the catalog I can then easily import the tool palette in my colleagues computer. Also if it links to the same catalog we should be able to easily refresh it.
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)
How to edit the string below so that it will ignore all layer names starting with "E-". I want to change all XREF layers in the current dwg. to 161 but ignore all XREFED layer names that start with E- such as E-lighting, E-power etc.
How do I migrate my Custom Tool Palettes and Custom Toolbars from Civil 3D 2012 to Civil 3D 2014?
What files do I need to create or copy to transfer to 2014?
My Custom Tool Palette consists of Block Symbols, Border Sheets, Scales and Seals, Lisp Routines etc.
My Custom Toolbar is just a number of standard cad commands I've put together in my toolbar like Revision Cloud, Layer Isolate, Match Properties, Attach Image, etc.
Do I need to export out my cui file, do I need to create a Profile file, do I need to setup the same directory structure naming and copy my files into those same directory names?
Or is there some easy hidden Magic Button in Civil 3D that you click on and it does the rest?
We are working together whit another firm and we would like to share our tool pallets and lisp routines. The pallets and lisp files we would like to share are quite large so we would like to simply send them a USB stick whit all the files and a title "executable" program that automatically puts them on the right place and changes the appropriate information.
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.