AutoCAD Visual LISP / AutoLISP :: Create Text Based On Room Dimensions?
Dec 19, 2012
make a LISP that will work with my room dimensioning? I'd like to be able to specify the width and depth of the room using a command similar to the "dist" command, and then click a point to place a text based on the distances gathered. I'd also like the text to be formated into architectural units and displayed like this: 12'-0" X 13'-5". Also, if possible, round the result to the nearest inch (to avoid 1/2" and 1/4" dimensions).
View 9 Replies
ADVERTISEMENT
Dec 29, 2011
the expression in question is part of larger lisp routine to create and rotate text based on the object selected and the viewtwist variable (we use dview twist to rotate our views when needed)
So the expression in question:
(< (/ pi 2) ang (* pi 1.5)
where ang is the total angle used to determine proper rotation of the text.
Now the problem. In most cases where ang = 90 (or 1.5708 radians) this works fine. the two exceptions i have encountered
in testing are a line at 70 degress, viewtwist 20, and line at 50, viewtwist 40. For whatever reason at these two conditions the expressoin evaulates True instead of nil and rotates the entire text object incorrectly (180 degrees). So question is how exactly is this being evaluated? i know its comparing ang (* pi 1.5) to (/ pi 2). is there some sort of rounding error? or maybe the expression needs a wee bit more definition? attached image and full lisp routine for reference of what is happening, blue text is angle of the line as created by routine at viewtwist 0.
View 1 Replies
View Related
Dec 4, 2012
I was adding a lot of aligned dimensions to a drawing and some where along the way they changed from aligned dimensions to rotated dimensions, even in the same string of dimensions.
View 9 Replies
View Related
Oct 4, 2011
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...)
View 1 Replies
View Related
Apr 13, 2012
I would like to know how i can create a linestyle with text using lisp?
View 1 Replies
View Related
Jan 13, 2013
Lisp routine that divided up a normal square / rectangle room and insert a block at each given point.
At present if the room was to have four lights width ways and three lights length ways we would divide the width by eight to give us 1/2 1 1 1/2 so the lights would be placed on every second point after the divde command (dividing the room by twice the amound of lights needed).
View 9 Replies
View Related
May 6, 2013
I am a beginner at LISP and this is a bit out of my league... and I'm trying to create a lisp where I can draw a polyline between 2 points that also places text with the actual distance offset above the line.
I did find this post and I'm not quite catching on.. [URL] ......
View 9 Replies
View Related
May 9, 2013
What I am trying to do is create a selection set of the "y" values of text. I've started by pulling out all the text on the drawing, but I need it to continue to grab only the "y" values of the text on the drawing.
(setq alltext (ssget "_x" (list '(0 . "TEXT"))
)
)
I've tried a bunch of different things but I am still new to lisp.
View 5 Replies
View Related
Oct 24, 2013
LSP 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]....
View 5 Replies
View Related
Nov 16, 2012
i failed to find one which would change string of a text to other for all types of objects. I mean it was usually either only multitext, or only text, dimensions or attributes.creating one which would change in abt 200 drawings:
-001
-002
-003
to:
-00001
-00002
-00003
in attributes, text, multittext, leaders, multileaders, dimensions..... at the same moment?
It is meant to be used in ScriptPro (by loading lisp in script).
If not possible, then can also open each file and run the lisp in each of them - still would save lot of time.
View 4 Replies
View Related
Jun 14, 2013
I am looking for an alternative to in place XRef Edit.
The third party software I am stuck with has disabled in place editing an Xref.
The specific application I need is to allow the user to move an intelligent room tag that is XReffed into discipline specific models. Disciplines are Architectural, Mechanical, Electrical..Etc. Each discipline has their own room tag and needs to move their own tag to a location that can be clearly seen on their finished plot. Xref edit in place is the perfect tool for this..But since the third party has disabled the command, I need an alternative method.
View 9 Replies
View Related
Sep 23, 2011
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.
View 7 Replies
View Related
Oct 11, 2011
What I am trying to do is grab the value of the owner tag (of which there are four), and use that value to determine which layer to place it on. What it seems to be doing is hanging.
Here is what I have so far:
(setq SSBlks (ssget "x"'((0 . "*INSERT"))))
(while (/= (sslength SSBlks) 0)
(setq w(sslength SSBlks) V 0)
(setq attentity (ssname SSBlks 0))
(setq attname (entget attentity))
(setq cntr 0)
(while (< V cntr)
[Code] ......
View 9 Replies
View Related
Jun 13, 2013
I am looking for a way to extract (filter) all polylines, and loop a lisp based on the number that are found within a "W" selection window.I am frustrated getting "malformed list" or errors, even after defining "n" for repeat.The code I have so far looks like this:
(defun cWW (/ p1 p2 sspw myObj ss)
(setq p1 (getpoint "
Pick first corner: "))
(setq p2 (getcorner p1 "
Specify opposite corner: "))
(if
(setq sspw (ssget "W" p1 p2 '((0 . "*POLYLINE")))
[code].....
Without the (repeat () portion, it was working ok with selection window, however it only would run the commands for a single polyline. What needs to be done without overhauling the code? The lisp has worked on a drawing-wide basis, however needs to run on only on user-windowed polylines since there are other polylines within the drawing which are attached to layouts via viewports.
View 9 Replies
View Related
Apr 1, 2013
(defun layun (target_obj / original_layer original_layer_info target_obj_atts new_layer )(setqoriginal_layer (cdr (assoc 8 (entget target_obj)))original_layer_info (tblsearch "layer" original_layer)target_obj_atts (entget target_obj));setq(if (or(wcmatch original_layer "*-P123"); REMOVES 4 CHARACTERS(wcmatch original_layer "*-P123456"); REMOVES 7 CHARACTERS(wcmatch original_layer "*-P123456789"); REMOVES 10 CHARACTERS );or(progn(setq new_layer (substr original_layer 1 (- (strlen original_layer) ??))) ; NEED TO ASSIGN VARIABLE TO MATCH THE NUMBER OF CHARACTERS TO REMOVE(if (not (tblsearch "layer" new_layer))(progn(entmake ;;;begin to make new layer(list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")(cons 2 new_layer) ;;; layer name(assoc 6 original_layer_info) ;;;re-use original linetype'(70 . 0) ;;;flags - use default flags(assoc 62 original_layer_info) ;;;re-use original color);list);entmake);progn);if(entmod (subst (cons 8 new_layer) (assoc 8 target_obj_atts) target_obj_atts)));progn);if);defun
assign a character where ? is shown so that it matches with the number of characters to remove based on the 3 lines above (see wcmatch lines). At present, whatever number I replace that ?? with, it removes that number of characters from the layer that I selected (if it meets that WCMATCH criteria). Another option which may be more difficult is to be able to have the routine look at the object layer and if it contains -N- or -D- or -NEW- or -DEMO- then to remove all the characters that follow these layer modifiers. This way I can cleanly add another project modifier behind these modifers.
View 9 Replies
View Related
Jul 30, 2013
Is this something that is possible? Basically I have an excel file with sample data that comes coded (red background for fail, Green for pass) Then we transfer that into halos on a DWG. got a routine to count the halos in a DWG. Now I was thinking it would be nice if it compared the number to the excel file to make sure no mistakes were made when placing the halos.
So as I mentioned I've seen rountines to read data in cells but none to count cells based on colour.
View 8 Replies
View Related
Jun 19, 2012
I was interested in finding out if it's possible to write a LISP routine that would execute a pop-up dialog box say every 30 minutes. This is strictly for ergonomic reasons to remind the user to take a pre-determined break.
I am not an expert code writer by any means, but I imagine the routine would autoload and resetting the timer to 0 upon opening a particular drawing file. The LISP routine would then run in the background and run the (alert "") command when the timer reaches 30m 0s. When the user presses the OK button, the timer resets to 0 again.
View 9 Replies
View Related
Apr 9, 2012
For a program i am working for i have to extract the base point of a dynamic block.
This can be done perfectly by this function:
(cdr (assoc 10 (entget (car (entsel)))))
But i want the entity selected based on a previous slected point. So for example when i selected pt1 (which is a point at the border of the dynamic block) i want to be able to extract the base point on the block whit this point.
View 8 Replies
View Related
Jul 3, 2012
" Convertion of AUTOLISP base routines to Diesel MACRO based routine to be used in a AUTOCAD LT based platform "
Here i am attaching the lisp file for ready reference.
View 1 Replies
View Related
Jun 29, 2013
When selecting any dimension type (from the standard AutoCAD toolbars) i would like it to already be in the layer "dimensions". Currently it starts in layer 0.
I've been browsing the web a bit and found a lot about it but people are talking about LISP's?? I can do magic things in AutoCAD but i am a complete stranger to LISP's, Macro's, etc... Would like to learn but where to start..
Anyway i can cover this with something else then writing an LISP?
View 9 Replies
View Related
Jul 16, 2012
I'm not able to control the dimensions of image slide..Whatever value I use for height and width the image is displayed too small in the tile.
here's my
: image {
key = "sld";
height = 5;
width = 30;
[code]....
View 3 Replies
View Related
Oct 25, 2012
The title says it all, Im trying to find a way to select just the vertical dimensions. Quick select doesn't work because there's no difference between a vertical and a horizontal dimension, so i was wondering if there was a LISP or something else i could do to accomplish this.
View 5 Replies
View Related
Nov 1, 2011
I have a lisp routine that creates a "frame wall" and I want to be able to automatically dimension said wall within the same routine. I have created two sets of points, each set being on its own new layer. I have made selection sets of each set of points, and want to cycle through each set dimensioning as required. This what I have so far for this part of the routine:
(command "DIMSCALE" 24)
(setq sel1 (ssget "x" '("VPOINTS")))
(setq TC (polar (ssname sel1 0) (dtr 180.0) 9))
(command "DIMLINEAR" (ssname sel1 0) (ssname sel1 1)) "V" (polar TC (dtr 180.0) 9) "")
[code]...
When I run the program I get the error: bad point argument. So what I think is happening is that the ssname command is not returning the actual value but just the name? I am new to AutoLisp and even newer to selection sets so be easy... Along with this, I am also curious as to how a selection set is ordered when it is chosen ie how does it determine what would be in (ssname sel1 0). Also, how would one go about deleting the points in these selection sets after the dimensioning has been completed.
View 5 Replies
View Related
Dec 7, 2012
I have tools like flatten and toolpac to correct plines and other things to be parallel to the ucs (world), but not for dimensions.
I attached a file with problem dins, any tool to get them back to flat?
[URL]
View 1 Replies
View Related
Dec 21, 2012
I'm working up a routine to simplify clearing some space. I've been cruising here and other places piecing together something, but what I have ended up with is a routine that deletes all of the intended information (possibly needing repetition for those hard-to-reach blocks), but also deletes dimensions from the model space.
There are several things our company does which are "non-standard" but we have been at it for a while and I am trying to work with what I was given. Following is the code.
;;; not sure who Jeff M is, but assuming this bit is from him(defun odbx-test (/ dbx_doc) ;; edited 5/28/06 by Jeff M (if (< (setq dbxver (atof (getvar "ACADVER"))) 15.06) (progn (alert "ObjectDBX method not applicablein this AutoCAD version" ) (exit) (princ) (gc) ) (progn (if (= (atoi (getvar "ACADVER")) 15)(progn (if (not (vl-registry-read "HKEY_CLASSES_ROOT\ObjectDBX.AxDbDocument\CLSID" ) ) (startapp "regsvr32.exe" (strcat "/s "" (findfile "axdb15.dll") """)
[code]....
View 2 Replies
View Related
Jul 18, 2012
I'm trying to write a lisp routine to create a two line MLEADER but i can only get one line of text. Creating the MLEADER manually from the command line i just have to hit enter after the first line of text to add a second line. How would i do this in a lisp routine?
View 2 Replies
View Related
Feb 6, 2006
Have Lisp to place aligned dimensions on each segment of a polyline?
I would use it for reinforcing bar detailing.
View 9 Replies
View Related
May 14, 2012
how to sensibly extract angular dimensions as attributes.
I can extract the attributes from a block containing angular dimensions, the attributes list angular dimensions as a field but don't actually list the number of degrees for the angular dimension.
It is the number of degrees that I am actually trying to obtain - but I cannot work out how to obtain the information
View 3 Replies
View Related
Dec 2, 2010
I need a lisp routine which will delete all the dimensions inside selected block or blocks, including nested blocks inside.
View 9 Replies
View Related
Jun 20, 2012
Say I have 2 items, one is on layer "M-Duct" and the other on "M-Pipe" (they are in the same drawing). Any lisp routine that would create the layers "M-Duct-New" and "M-Pipe-New" (based on the same color and LT as the original layers) and then move those objects to the newly created layers?
View 9 Replies
View Related
Apr 5, 2013
Create a routine that looks for a block based on a portion of that block name, using a specified path or search path.
For example, block to search for is BLOCKABC123, so if someone inputs ABC or 123 as a block name, it will locate that block within that folder and inserts it into the drawing at a user specified location.
Ideally, if there is a check in that if it finds more than one match, then perhaps it flags or prompts you to choose 1, 2, or 3 option which block to use. But I can live without this special function if it requires too much time to code.
View 8 Replies
View Related