AutoCAD Visual LISP / AutoLISP :: Create Linestyle With Text?
Apr 13, 2012I would like to know how i can create a linestyle with text using lisp?
View 1 RepliesI would like to know how i can create a linestyle with text using lisp?
View 1 RepliesI am trying to create a custom complex linestyle for a stream. It's a line with 3 circles/dots. For the dots I want to actually create the circles. I know how to create shapes, compile and load linestyles. For some reason it does not work.
*STREAM-UCS, WATER BODIES -----ooo-----ooo-----ooo-----ooo-----
A,.6,-.15,[STREAM,ucs-ltype.shx,x=0,s=1],-.15
*1,1927,STREAM 4,250,4,4,3,167,3,13,3,176,002,9,(-51,0),(0,0),001,9,(0,3),(-3,3),(-1,0),(-1,1),(-2,0),(-1,-1),(-1,0),(-1,-1),(-1,0),(-1,-1) (0,-1),(-1,-1),(0,-4),(1,-1),(0,-1),(2,-2),(2,0),(1,-1),(2,0),(1,1),(1,0),(1,1),(1,0),(0,1),(1,1),(0,3),(0,0),002,9,(-3,-6) (0,0),001,9,(2,2),(0,0),002,9,(-2,-2),(0,0),001,9,(2,3),(0,0),002,9,(-2,-3),(0,0),001,9,(3,3),(0,0),002,9,(-4,-3),(0,0) 001,9,(4,3),(0,0),002,9,(-4,-3),(0,0),001,9,(4,4),(0,0),002,9,(-4,-4),(0,0),001,9,(4,4),(0,0),002,9,(-4,-4),(0,0),001 9,(4,4),(0,0),002,9,(-5,-4),(0,0),001,9,(5,4),(0,0),002,9,(-5,-5),(0,0),001,9,(5,6),(0,0),002,9,(-5,-6),(0,0),001,9,(5,6) (0,0),002,9,(-5,-6),(0,0),001,9,(5,6),(0,0),002,9,(-6,-6),(0,0),001,9,(6,6),
[code]....
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 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] ......
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.
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 View RelatedI 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.
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.
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 RelatedI want to create a shortcut key (like TAB) for example and whenever I start a polyline or move or whatever, I can hit TAB which will grab the angle my cursor is at, and then use the angle lock to lock the cmd into that direction. (This is essentially what can be done in rhino if you are familiar with this).
The manual way in autocad is typing it ("<45") but I just want to calculate angle from the start point to cursor point. and then once hitting tab or a key or a new command, it will lock with that angle. How can I go about programming this.
Looking for example of a lisp file that take the value of a variable and create a txt file on a specific place defining by the user, with 10 lines in each one of them begins with what is in the variable, followed by a text already done.
View 3 Replies View RelatedIs it possible to create a lips that does the following:
- In the Modelspace
- Get 2 points to create a plot window / give two points. (get point 1, get point 2, list points)
- Divide the window into A3 size windows
- plot scale 1:100 / prompts to ask
- Plot / Print the A3 size windows with the given / preset configuration(s)
- Perhaps even add a number to each page.
In other words, Plot / Print a A2, A1, A0 or bigger onto several A3 pages.
Depending on how big the page is, number of A3 pages, plotscale 1:100
Or asks what plot scale I want to use.The only thing I think I will need is something like:
Get point 1, get point 2, List the points. So I can set the window.
how can i create single " .vlx" file from my lisp and dcl files? how to convert my lisp to vlx ?
i have to collect my all lisp into the single .lsp file and than convert to .vlx? if it is gonna be like that how about dcl file ?
How to create a new .ARG file
View 2 Replies View RelatedI want my application to include a useful Ribbon interface that displays custom properties, read from my custom objects.
I have found the existing Ribbon Control Elements, but I want to use custom controls, not the pre-canned controls.
Is there a generic programmable input box for the AutoCAD Ribbon?
I'm trying to create a hatch pattern to match a floor tile. I want a 24" long x 6" wide plank tile. The tiles should be offset from each other 8" (a 2/3 1/3 pattern lengthwise). My problem is I only can get a 6" offset (3/4 1/4 pattern).Here's the code I've got:
0, 0,0, 0,6
90, 0,0, 6,6, 6,-18
I want to make many object cooper lines in autocad and each line has some data about its length, size, type etc. that can then extract to excel as a Bill of materials.
View 1 Replies View RelatedI have been using one routine very successfully to create a pline in modelspace that has the outline of the chosen viewports in the drawing. This one works great.
Now I am trying add other routines that I've done to better fit my needs. If I use each routine individually at the command line they work, but when I use all in a single command I got the following errors:
The routine SetColor - does not change color to Bylayer The routine RectWidth - ; error: bad SSGET list
Why?
See the attached file for more details and be free to improve whatever you want in my routines because they are very basic.
And, if I am not asking to much, is that possible to not be prompt to select objects? I mean, the routine could automatically select all viewports in the drawing...
until now I've always used ACADINST.exe to realize my self-installing setup packages for my application lisp: [URL]
Now there AutoCAD2014 which introduced some variables that affect proper operation completely automatic: TRUSTEDPATHS and SECURELOAD.
Is there a way to add search paths, modify variables, load menu, set the automatic start of a *.Lsp or *.Fas, during installation of the application, without opening AutoCAD?
i have created an Autolisp routine that creates a drawing made up of structural members, x-refs & surfaces based on a few different user inputs. I now want the program to insert the drawing as a block rather than individual elements. My Idea was simply to use the block command in the lisp routine to create a block and then have the drawing create itself in block editor, and close once it has done. however I am having difficulty thinking of a way that I can get AutoCAD to automatically name this block depending on other blocks in the drawing, i.e. in sequence. The name is irrelevent really, but it would make sence for it to be logical, so... if the last block inserted was "b7" then the next one should be "b8" and so on.
Is there a better way of doing it all together? I have read a bit into "entmake" but i'm not sure on how to use that function.
How to create macros of a drawing and then hw can we change the drawing by editing the macro. E.g.. I have drawn a circle of 30 mm dia.. than need to crate macros for same and then by changing the dia of circle in macros I want to create new circle of 50 mm dia.
Another thing I wanted to ask is what is difference between visual lisp and visual basic. Which is easier??
I have run into a little trouble in trying to figure out how to create a arc polyline with entmake. I've put together the following and it works great with command "pline". I just want to know how to do it with entmake.
(defun C:22 ()
(setq P1 (getpoint "
Specify first point: ")
P2 (getpoint P1 "
Specify next point: "))
[code].......
I have to create some plines in a drawing from the inputs provided by the client. I prepared a lisp code for it. I have to use it to 1000 drawings. Every time I open the drawing and running the lisp command.
Is any lisp code to run in bulk open drawings with out entering command prompt.
I have two attributes "REVN" and "REVD" in a block "ATT" that I would like to change (globally preferably) to the following.
(1) Existing text to keyboard entry text.
(2) Colour from existing to 10
I am a bit lost in the (command "-attdef" .......)
(defun c:atc ()
(setq rev (getstring "Please enter review"))
(setq dat (getstring "please enter date"))
(command "-attdef" .."ATT".."REVN"....."c" "10")..)
(command "-attdef" .."ATT".."REVD"....."c" "10")..)
)
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.
View 4 Replies View RelatedI 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?
We are using autocad 2012.
Is there a way to move all 3.5mm text to layer text3.5 and move all 5mm text to layer text5.
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
swap function for one text is here:
(defun c:swap ( / pos ent el txt)
(vl-load-com)
(if(null #div#)(setq #div# "/"))
(setq #div#
(if(=(setq tmp(getstring(strcat "
Divisor character: <"#div#"> ")))"")
#div# tmp
)
[Code]....
but I want a program to prompt me like this:
(prompt "Select objects:")(terpri)
(setq a (ssget '((0 . "TEXT"))))
and gets divisor char </>:
after that:
(setq n (sslength a))
(repeat n
....
)
repeats n times, n=number of texts in my selection
this code is used to fix specific font but its problem that it will prompt you to select single text
i need to make it to select multiple text so it saves me a lot of time,
;;; Process Individual request
(defun cht_ProcessIndividual ()
(setq sslen (sslength sset))
(while (> sslen 0)
(setq temp (ssname sset (setq sslen (1- sslen))))
[Code]...
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 have text objects with the same Z value and I will select as follows:
(setq sstxt (ssget '((0 . "TEXT")(8 . "APS-text"))))
How to store this value in another variable "zvalue" to apply to:
(command "change" "select text objects" "" "_p" "_e" zvalue "") ?