AutoCAD Visual LISP / AutoLISP :: Looping In Keyboard Macros
Jan 9, 2013
I have created the following keyboard macro:
^C^C_.MOCORO \ C X R
It launches move-copy-rotate, allows me to pick 2 items (in my case a electrical symbol and its associated tag), copies the entities to the desired location then rotates. It works perfect, however after the rotate I need to repeat the process indefinitely starting before the "C".
I know that I can usu an asterisk at the beginning to loop the entire macro, however I don't want to re-select, just continue on with the MCR function using the already selected entities. Any GOTO function in macros?
I suspect that I might need LISP for this but I not familiar with writing that code.
View 4 Replies
ADVERTISEMENT
Jun 3, 2013
I wrote a lisp, that grabs all text and assigns it a variable. Here's what it looks like:
(setq numbers (ssget "_X" (list (cons 0 "TEXT") (cons 1 "*")) ))
(sslength numbers)
(setq numb1(ssname numbers 0))
(setq enlist1 (entget numb1))
(setq texty (fix (caddr(assoc 10 enlist1))))
(setq value1 (cdr(assoc 1 enlist1)))
In this case length returns a value of 20. I can repeat this command 20 times and have all these variables but I don't think that is the best way. I do need the "y" value insertion point of the text. Line numbers are very important with what I do.In the end what I want to do is
1. sort through how ever many values sslength returns.
2. compare a blocks attribute "y" value insertion point with that of all the text values.
3. If both y values are equal then that blocks "tag name" will be changed.
Here is what I am doing on the block end with for reference:
(if (= texty fuwhole)
(setq funum1 (subst (cons 1 (strcat "FU" value1)) (assoc 1 funum1) funum1))
(entmod funum1)
)
fuwhole is the blocks "y" value insertion point.
funum1 is the blocks dxf group code
View 2 Replies
View Related
Aug 26, 2013
I am using AutoCAD 2011. I have a lisp that I have created/modified.
What it does:
Allows me to Select a layer that I call out and change its color properties back to bylayer.
(i primarily use this when i am cleaning up my drawings, I turn them all to gray with another command i have then i run this one to find all the entities on that specified layer)
What i am trying to do:
I would like this command to do a loop. So say i type in a layer name that does not exist, instead of running through the rest of the command i want it to revert back to "specify layer name" until the correct name is entered for that layer.
Here is the lisp:
(defun cLL ()
(setq varLayer (getstring t "
Specify Layer Name: "))
(sssetfirst nil (ssget "X" (list (cons 8 varLayer))))
(command "change" "p" "" "p" "c" "bylayer" "")
(princ)
View 9 Replies
View Related
Mar 19, 2013
I have an interesting challenge. I am tasked with updating old drawings. The only difficulty that I've run into with the old files are that the TitleBlocks are all done with all of the attributes are named "SPEC". There are 90 attributes. I'm really struggling with getting each attribute's value and then storing the value to a variable so that I can then put that value into a new TitleBlock. The old TB will be deleted to avoid future confusion in the file.
(To clearify, the old TitleBlock is in model space, while there are actually nine new TitleBlocks all in seperate paper space Layouts, and this program may have to run on hundreds of files.)
getting the values from the Old TB. I need them in order of first to last or last to first (either way will work since I have the variable names in a list that can be reversed if necessary.)
simple function to read through the block's attributes in order and store the attribute's value to a variable name in the seperate list (also in order)?
View 5 Replies
View Related
Aug 6, 2012
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??
View 7 Replies
View Related
Jun 13, 2013
I want to make a keyboard shortcut that will turn on/off my osnap, polar, and otrack.I would be fine with setting F3 to do this, or any other key really.I like to be able to turn these off on the fly, but it is getting old having to press all three.
View 7 Replies
View Related
May 17, 2013
Switching from 2010 win xp to 2014 win 7. I need my specific user interface , and cant replicate it because of this issue :
I used to press context menu key on keybard to make edit menus pop up . In 2014 even though its same settings (show context menus and time sentive click) i ve lost this ability .
Either menus dont appear at all or they are replaced by the small command line context menu. I think this suggest new command line features are messing with right click options any variable i can turn off , or else to go back to normal.
View 1 Replies
View Related
Jun 21, 2012
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")..)
)
View 4 Replies
View Related
Jul 4, 2013
Been meaning to make some more videos. Here's one I made today pertaining to looping.
[URL].........
[URL]......
[URL].........
View 1 Replies
View Related
Oct 23, 2012
If I set a keyboard shortcut for a macro, it will function properly until the session is closed. When Inventor is opened again, the shortcut will not be on the keyboard customization list. So far, all shortcuts for regular Inventor functions, and even Add-Ins, will stay present when the session is closed and opened. I've been able to reproduce this on a co-worker's computer, so I don't believe it is an issue related to my system.
Edit: Forgot to add, using Inventor 2012
View 3 Replies
View Related
Jul 12, 2012
Is there a lisp that will allow me to do a continuous dimension, but will alternate the dimension position from low, high, low and high? If there is no lisp already created, how to create one?
See Continuous dimension attachment for example.
I work at a glass and glazing company and this is how we dimension mullion width and DLO. See typical window dimensioning attachment for window elevation with dimensions.
View 6 Replies
View Related
Nov 14, 2013
I have a list ("temp.dwg" "temp2.dwg") and would like to add the string "insert text here" into each item in the list resulting in ("insert text heretemp.dwg" "insert textheretemp2.dwg"). how would i go about doing that using LISP?
View 2 Replies
View Related
Oct 7, 2013
Is there a way to programatically set a visual style before a drawing actually opens?
We have some huge models and people seem to forget to change their visual styles back to 2D wireframe before saving and exiting drawings. Some models will crash on some workstations when trying to open in a rendered mode.
I found a lisp with a function that looked to set viewport visual styles. But it does not seem to be supported anymore. --> (vla-put-VisualStyle vport 1)
View 9 Replies
View Related
Oct 11, 2012
I'm trying to write a lisp routine that, when I invoke the mleader command, osmode is set to "nearest" & orthomode is set off. I then would like the original settings to be returned.
attached is what I have written so far:-
View 4 Replies
View Related
Jun 20, 2013
Lisp that switches back on Selection Preview i.e. thickens and highlights lines when you hover over them?I don't know why, but they are always unticking the boxes.
View 4 Replies
View Related
Sep 7, 2012
Is it possible to execute a certain command based on multiple selections withinin a dcl? for example: two radio colums, one with selections A and B, and a second with selections 1 and 2. is it possible to program commands based on user selections from each column? ex: if A and 1- do a command. A 2- do a different command, etc...
I tried :
(action_tile "key1" "(setq A t")
(action_tile "key2" "(setq B t")
(action_tile "key3" "(setq 1 t)(done_dialog)")
(action_tile "key4" "(setq 2 t)(done_dialog)")
(if
(and (a) (1)
)
(command ...
but was unsuccessful. no matter which combination was selected, the command under all combinations would run.
View 2 Replies
View Related
Jun 3, 2013
I am trying to find a lisp that would get an attribute value (tag name = NBR_5) . I'm trying to run a simple routine that would let the user place the value from the titleblock attribute as text on a drawing. I see a ton of articles regarding getting attributes but I am not well versed in programming.
View 9 Replies
View Related
Jun 22, 2012
I have a routine that work fine, but I receive a nil at the end of command. How to fix that?
View 7 Replies
View Related
Oct 9, 2013
I'm trying to find acceptable point values to feed to the vlax-3d-point function for a vla-addmtext function. With vanilla lisp I just provide the point as x y = "7/32" "2-3/8". So I assumed that I could drop a 0 in for the z like: (VLAX-3D-POINT "7/32" "2-3/8" 0).
Then I thought I was going to be tricksy and try (vlax-3D-point (getpoint)) believing that I could pick the point and get what I need to feed the function, but yet again, no deal. The command line gave me:
node
of #<variant 8197 ...>
Nothing I can use in my code. So how do I find the point in a format that vlax-3d-point will like?
View 9 Replies
View Related
Dec 19, 2011
What is the magic word for put a point at each end of an arc, the lisp I have only put a point at center of the arc.
(defun cAA ( / i j ss e1 e2 p1 p2 p3 points )
(if (setq i -1 ss (ssget '((0 . "ARC"))))
(progn
[Code].....
View 5 Replies
View Related
Dec 30, 2011
Is there a quick way of getting the value of an attribute?
I have an attributed block called "tp_attributes" and it has and attribute called "OrderNum".
I just want to be able to quickly grab that value.
View 3 Replies
View Related
May 29, 2013
I use Spell Check regularly and I always check the entire drawing. I would like to add to the Spell macro so that when I pick Spell from the toolbar it goes past the Check Spelling window and begins checking the entire drawing.
I believe I need to insert Alt S into my macro to select Start from the window to begin the check. Is there a character or series of characters that will represent Alt in a macro?
View 1 Replies
View Related
Nov 8, 2011
I upgraded from Autocad 2004 to 2012 recently and my lisp file doesnt work anymore.
what it's supposed to do is when looking at the layout tab that you want you can switch to the model space location of the same zoom as the layout tab without messing with the layout zoom.
(defun c:msp ()
(setq cm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command"view" "d" "tmp")
(setvar "tilemode" 0)
(command"pspace")
(princ "Click TWICE on desired VPORT: ")
(command "mspace" pause "view" "s" "tmp")(princ)
(setvar "tilemode" 1)
(command "view" "r" "tmp")
(setvar"cmdecho" cm)
(princ)
)
View 4 Replies
View Related
Oct 27, 2012
I need a program that simulate this DOS command: dir /on/b *.dwg >list.txt
it list all dwg files on current open dwg file folder and sort them and finally put them in a text file with list.txt name. something like thistype list.txt)
test1.dwg
test2.dwg
test100.dwg
test256.dwg
test1005.dwg
(sort alphabetically and logically) because of disabled DOS utility in my PC I need a pure lisp functions, I tried to wrote this program but I couldn't!!
(defun c:listMaker()
(vl-load-com)
(setq path (getvar "dwgprefix"))
(setq fn "list.txt")
[code]...
and also I need a append a string(='This Is EOF') in the last line of the "list.txt" file.
View 8 Replies
View Related
May 10, 2012
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 "") ?
View 9 Replies
View Related
Oct 17, 2011
the following returns true since the @ symbol tests for an alpha character.. (wcmatch "S101" "@*").What is the Dot Net equivalent?
View 2 Replies
View Related
Jul 10, 2012
Is there a command that is the opposite of starting an application to open up a file? Like:
(startapp "PlaySound.exe" (findfile "CuckooClock.wav"))
Instead of starting an application, how to shut all of its instances down. Let’s say I have iTunes and/or Internet Explorer w/ a few tabs open and I can close them down without getting to the application to terminate it the usual way.
Naturally,
(endapp "iTunes.exe") doesn’t work :-))
View 3 Replies
View Related
Apr 13, 2012
I am trying to get my original layer and lintype reinstated after the user is finished with the pline..I know Im suppose to use the while command but am now completely lost on which way to do this
(DEFUN c:TEST1 ()(if (not (tblsearch "LTYPE" "MYWC")) (command "-linetype" "LOAD" "MYWC" "C:/COUNTER.LIN" ""));SECOND PROGRAM...;CREATE CORESPONDING LAYER...(command "._Layer" "Make" "WC LEIDING" "Ltype" "Continuous" "" "Color" "211" "" "")(SETQ MYOLDCELTYPE (GETVAR "CELTYPE"))(SETVAR "CELTYPE" "MYWC")(while (PROGN(COMMAND "pline")(SETVAR "CELTYPE" MYOLDCELTYPE)))
View 5 Replies
View Related
Jan 5, 2012
I have a drawing that has 2D pipeline (only x and y, z value =0) and 3 topo contour lines ( with x, y and z vaules). I need to divide the the 2D pipeline into say 2000 points and then get the corresponding z values from the topo contour lines. I think it can be done by interpolating between the z values for the two apparent intersection points of the 2D line and the contour lines, the x and y values will be the same for the points that falls between these two aparent intersections. Is there any lisp out there that can do that.
View 7 Replies
View Related
Sep 2, 2005
I am looking for an AutoLISP routine, which gives all aligned dimensions of a closed polyline, drawn in 3d.
I have attached a 2D drawing for reference.
View 9 Replies
View Related
May 15, 2013
The following gives me the first folder string, with no back-slashes, that the drawing exists in.
(setq FirstFolder
((lambda (/ tmpDir tmpPos)
(substr
(setq tmpDir (getvar "dwgprefix"))
(+ 2 (setq tmpPos (vl-string-search "\" tmpDir)))
(- (vl-string-search "\" tmpDir (1+ tmpPos)) (1+ tmpPos))))))
Is there a way to find the name of the second folder?
Is there a way to find the name of the third folder?
The string length of the characters for each of the first, second, third (and so on) folders are different, which means I can't count character using the "substr" function.
View 8 Replies
View Related