I can't make aliases for custom commands.
So first i made a macro named VEMO in "Cui"
^C^C_LAYER;Set;3031.Vemo's;;_insert;0303VEMO;\;;;_LAYERP
created a button in my ribbon:
Button works fine:
Command: _LAYER Current layer: "4011.Titelhoek" Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/PStyle/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile]: Set Enter layer name to make current or <select object>: 3031.Vemo's Enter an option [?/Make/Set/New/Rename/ON/OFF/Color/Ltype/LWeight/TRansparency/MATerial/Plot/PStyle/Freeze/Thaw/LOck/Unlock/stAte/Description/rEconcile]: Command: _insert Enter block name or [?]: 0303VEMO Units: Centimeters Conversion: 1.0000 Specify insertion point or [Basepoint/Scale/X/Y/Z/Rotate]: Enter X scale factor, specify opposite corner, or [Corner/XYZ] <1>: Enter Y scale factor <use X scale factor>: Specify rotation angle <0>: Command: _LAYERP Restored previous layer status.
then i tried to put it in my PGP file:
; This PGP file was created with the AutoCAD Alias Editor. ; Last modified 25/11/2013, 18:39 ; Use the Alias Editor (ALIASEDIT command) to edit this file. ; ; ; Program Parameters File For Autodesk AutoCAD 2014 ; External Command and Command Alias Definitions ; Copyright 2013 Autodesk, Inc. All rights reserved. ; ; Use of this software is subject to the terms of the Autodesk license ; agreement provided at the time of installation or download, or which ; otherwise accompanies this software in either electronic or hard copy form. ; Each time you open a new or existing drawing, AutoCAD searches ; the support path and reads the first acad.pgp file that it finds. ; -- External Commands -- ; While AutoCAD is running, you can invoke other programs or utilities ; such Windows system commands, utilities, and applications. ; You define external commands by specifying a command name to be used ; from the AutoCAD command prompt and an executable command string ; that is passed to the operating system. ; -- Command Aliases -- ; The Command Aliases section of this file provides default settings for ; AutoCAD command shortcuts. Note: It is not recommended that you directly ; modify this section of the PGP file., as any changes you make to this section of the ; file will not migrate successfully if you upgrade your AutoCAD to a ; newer version. Instead, make changes to the new ; User Defined Command Aliases ; section towards the end of this file. ; -- User Defined Command Aliases -- ; You can abbreviate frequently used AutoCAD commands by defining ; aliases for them in the User Defined Command Aliases section of acad.pgp. ; You can create a command alias for any AutoCAD command, ; device driver command, or external command. ; Recommendation: back up this file before editing it. To ensure that ; any changes you make to PGP settings can successfully be migrated ; when you upgrade to the next version of AutoCAD, it is suggested that ; you make any changes to the default settings in the User Defined Command ; Aliases section at the end of this file. ; External command format: ; <Command name>,[<Shell request>],<Bit flag>,[*]<Prompt>, ; The bits of the bit flag have the following meanings: ; Bit 1: if set, don't wait for the application to finish ; Bit 2: if set, run the application minimized ; Bit 4: if set, run the application "hidden" ; Bit 8: if set, put the argument string in quotes ; ; Fill the "bit flag" field with the sum of the desired bits. ; Bits 2 and 4 are mutually exclusive; if both are specified, only ; the 2 bit is used. The most useful values are likely to be 0 ; (start the application and wait for it to finish), 1 (start the ; application and don't wait), 3 (minimize and don't wait), and 5 ; (hide and don't wait). Values of 2 and 4 should normally be avoided, ; as they make AutoCAD unavailable until the application has completed. ; ; Bit 8 allows commands like DEL to work properly with filenames that ; have spaces such as "long filename.dwg". Note that this will interfere ; with passing space delimited lists of file names to these same commands. ; If you prefer multiplefile support to using long file names, turn off ; the "8" bit in those commands. ; Examples of external commands for command windows DEL, DEL, 8,File to delete: , DIR, DIR, 8,File specification: , SH, , 1,*OS Command: , SHELL, , 1,*OS Command: , START, START, 1,*Application to start: , TYPE, TYPE, 8,File to list: , ; Examples of external commands for Windows ; See also the (STARTAPP) AutoLISP function for an alternative method. EXPLORER, START EXPLORER, 1,, NOTEPAD, START NOTEPAD, 1,*File to edit: , PBRUSH, START PBRUSH, 1,, ; Command alias format: ; <Alias>,*<Full command name> ; The following are guidelines for creating new command aliases. ; 1. An alias should reduce a command by at least two characters. ; Commands with a control key equivalent, status bar button, ; or function key do not require a command alias. ; Examples: Control N, O, P, and S for New, Open, Print, Save. ; 2. Try the first character of the command, then try the first two, ; then the first three. ; 3. Once an alias is defined, add suffixes for related aliases: ; Examples: R for Redraw, RA for Redrawall, L for Line, LT for ; Linetype. ; 4. Use a hyphen to differentiate between command line and dialog ; box commands. ; Example: B for Block, -B for -Block. ; ; Exceptions to the rules include AA for Area, T for Mtext, X for Explode. ; -- Sample aliases for AutoCAD commands -- ; These examples include most frequently used commands. NOTE: It is recommended ; that you not make any changes to this section of the PGP file to ensure the ; proper migration of your customizations when you upgrade to the next version of ; AutoCAD. The aliases listed in this section are repeated in the User Custom ; Settings section at the end of this file, which can safely be edited while ; ensuring your changes will successfully migrate. 3A, *3DARRAY 3DMIRROR, *MIRROR3D 3DNavigate,*3DWALK 3DO, *3DORBIT 3DP, *3DPRINT 3DPLOT, *3DPRINT 3DW, *3DWALK 3F, *3DFACE 3M, *3DMOVE 3P, *3DPOLY 3R, *3DROTATE 3S, *3DSCALE A, *ARC AC, *BACTION ADC, *ADCENTER AECTOACAD, *-ExportToAutoCAD AA, *AREA AL, *ALIGN 3AL, *3DALIGN AP, *APPLOAD APLAY, *ALLPLAY AR, *ARRAY -AR, *-ARRAY ARR, *ACTRECORD ARM, *ACTUSERMESSAGE -ARM, *-ACTUSERMESSAGE ARU, *ACTUSERINPUT ARS, *ACTSTOP -ARS, *-ACTSTOP ATI, *ATTIPEDIT ATT, *ATTDEF -ATT, *-ATTDEF ATE, *ATTEDIT -ATE, *-ATTEDIT ATTE, *-ATTEDIT B, *BLOCK -B, *-BLOCK BC, *BCLOSE BE, *BEDIT BH, *HATCH BLENDSRF, *SURFBLEND BO, *BOUNDARY -BO, *-BOUNDARY BR, *BREAK BS, *BSAVE BVS, *BVSTATE C, *CIRCLE CAM, *CAMERA CBAR, *CONSTRAINTBAR CH, *PROPERTIES -CH, *CHANGE CHA, *CHAMFER CHK, *CHECKSTANDARDS CLI, *COMMANDLINE COL, *COLOR COLOUR, *COLOR CO, *COPY CONVTOMESH, *MESHSMOOTH CP, *COPY CPARAM, *BCPARAMETER CREASE, *MESHCREASE CREATESOLID, *SURFSCULPT CSETTINGS, *CONSTRAINTSETTINGS CT, *CTABLESTYLE CUBE, *NAVVCUBE CURVATUREANALYSIS, *ANALYSISCURVATURE CYL, *CYLINDER D, *DIMSTYLE DAL, *DIMALIGNED DAN, *DIMANGULAR DAR, *DIMARC DELETE, *ERASE JOG, *DIMJOGGED DBA, *DIMBASELINE DBC, *DBCONNECT DC, *ADCENTER DCE, *DIMCENTER DCENTER, *ADCENTER DCO, *DIMCONTINUE DCON, *DIMCONSTRAINT DDA, *DIMDISASSOCIATE DDI, *DIMDIAMETER DED, *DIMEDIT DELCON, *DELCONSTRAINT DI, *DIST DIV, *DIVIDE DJL, *DIMJOGLINE DJO, *DIMJOGGED DL, *DATALINK DLI, *DIMLINEAR DLU, *DATALINKUPDATE DO, *DONUT DOR, *DIMORDINATE DOV, *DIMOVERRIDE DR, *DRAWORDER DRA, *DIMRADIUS DRAFTANGLEANALYSIS, *ANALYSISDRAFTANGLE DRE, *DIMREASSOCIATE DRM, *DRAWINGRECOVERY DS, *DSETTINGS DST, *DIMSTYLE DT, *TEXT DV, *DVIEW DX, *DATAEXTRACTION E, *ERASE ED, *DDEDIT EL, *ELLIPSE ER, *EXTERNALREFERENCES ESHOT, *EDITSHOT EX, *EXTEND EXIT, *QUIT EXP, *EXPORT EXT, *EXTRUDE EXTENDSRF, *SURFEXTEND F, *FILLET FI, *FILTER FILLETSRF, *SURFFILLET FREEPOINT, *POINTLIGHT FSHOT, *FLATSHOT G, *GROUP -G, *-GROUP GCON, *GEOMCONSTRAINT GD, *GRADIENT GENERATESECTION, *SECTIONPLANETOBLOCK GEO, *GEOGRAPHICLOCATION GR, *DDGRIPS H, *HATCH -H, *-HATCH HE, *HATCHEDIT HB, *HATCHTOBACK HI, *HIDE I, *INSERT -I, *-INSERT IAD, *IMAGEADJUST IAT, *IMAGEATTACH ICL, *IMAGECLIP IM, *IMAGE -IM, *-IMAGE IMP, *IMPORT IN, *INTERSECT INSERTCONTROLPOINT, *CVADD INF, *INTERFERE IO, *INSERTOBJ ISOLATE, *ISOLATEOBJECTS QVD, *QVDRAWING QVDC, *QVDRAWINGCLOSE QVL, *QVLAYOUT QVLC, *QVLAYOUTCLOSE J, *JOIN JOGSECTION, *SECTIONPLANEJOG L, *LINE LA, *LAYER -LA, *-LAYER LAS, *LAYERSTATE LE, *QLEADER LEN, *LENGTHEN LESS, *MESHSMOOTHLESS LI, *LIST LINEWEIGHT, *LWEIGHT LMAN, *LAYERSTATE LO, *-LAYOUT LS, *LIST LT, *LINETYPE -LT, *-LINETYPE LTYPE, *LINETYPE -LTYPE, *-LINETYPE LTS, *LTSCALE LW, *LWEIGHT M, *MOVE MA, *MATCHPROP MAT, *MATBROWSEROPEN ME, *MEASURE MEA, *MEASUREGEOM MI, *MIRROR ML, *MLINE MLA, *MLEADERALIGN MLC, *MLEADERCOLLECT MLD, *MLEADER MLE, *MLEADEREDIT MLS, *MLEADERSTYLE MO, *PROPERTIES MORE, *MESHSMOOTHMORE MOTION, *NAVSMOTION MOTIONCLS, *NAVSMOTIONCLOSE MS, *MSPACE MSM, *MARKUP MT, *MTEXT MV, *MVIEW NETWORKSRF,*SURFNETWORK NORTH, *GEOGRAPHICLOCATION NORTHDIR, *GEOGRAPHICLOCATION NSHOT, *NEWSHOT NVIEW, *NEWVIEW O, *OFFSET OFFSETSRF, *SURFOFFSET OP, *OPTIONS ORBIT, *3DORBIT OS, *OSNAP -OS, *-OSNAP P, *PAN -P, *-PAN PA, *PASTESPEC RAPIDPROTOTYPE, *3DPRINT PAR, *PARAMETERS -PAR, *-PARAMETERS PARAM, *BPARAMETER PARTIALOPEN, *-PARTIALOPEN PATCH, *SURFPATCH PC, *POINTCLOUD PCATTACH, *POINTCLOUDATTACH PCINDEX, *POINTCLOUDINDEX PE, *PEDIT PL, *PLINE PO, *POINT POFF, *HIDEPALETTES POINTON, *CVSHOW POINTOFF, *CVHIDE POL, *POLYGON PON, *SHOWPALETTES PR, *PROPERTIES PRCLOSE, *PROPERTIESCLOSE PROPS, *PROPERTIES PRE, *PREVIEW PRINT, *PLOT PS, *PSPACE PSOLID, *POLYSOLID PTW, *PUBLISHTOWEB PU, *PURGE -PU, *-PURGE PYR, *PYRAMID QC, *QUICKCALC QCUI, *QUICKCUI QP, *QUICKPROPERTIES RED, *REDRAW RA, *REDRAWALL RC, *RENDERCROP RE, *REGEN REA, *REGENALL REBUILD, *CVREBUILD REC, *RECTANG REFINE, *MESHREFINE REG, *REGION REMOVECONTROLPOINT, *CVREMOVE REN, *RENAME -REN, *-RENAME REV, *REVOLVE R, *ROTATE RP, *RENDERPRESETS RPR, *RPREF RR, *RENDER RW, *RENDERWIN S, *STRETCH SC, *SCALE SCR, *SCRIPT SE, *DSETTINGS SEC, *SECTION SET, *SETVAR SHA, *SHADEMODE SL, *SLICE SMOOTH, *MESHSMOOTH SN, *SNAP SO, *SOLID SP, *SPELL SPL, *SPLINE SPLANE, *SECTIONPLANE SPLAY, *SEQUENCEPLAY SPLIT, *MESHSPLIT SPE, *SPLINEDIT SSM, *SHEETSET ST, *STYLE STA, *STANDARDS SU, *SUBTRACT T, *MTEXT -T, *-MTEXT TA, *TABLET TB, *TABLE TEDIT, *TEXTEDIT TH, *THICKNESS TI, *TILEMODE TO, *TOOLBAR TOL, *TOLERANCE TOR, *TORUS TP, *TOOLPALETTES TR, *TRIM TS, *TABLESTYLE UC, *UCSMAN UN, *UNITS -UN, *-UNITS UNCREASE, *MESHUNCREASE UNHIDE, *UNISOLATEOBJECTS UNI, *UNION UNISOLATE, *UNISOLATEOBJECTS V, *VIEW VGO, *VIEWGO VPLAY, *VIEWPLAY -V, *-VIEW VP, *DDVPOINT -VP, *VPOINT VS, *VSCURRENT VSM, *VISUALSTYLES -VSM, *-VISUALSTYLES W, *WBLOCK -W, *-WBLOCK WE, *WEDGE WHEEL, *NAVSWHEEL X, *EXPLODE XA, *XATTACH XB, *XBIND -XB, *-XBIND XC, *XCLIP XL, *XLINE XR, *XREF -XR, *-XREF Z, *ZOOM ZEBRA, *ANALYSISZEBRA ; The following are alternative aliases and aliases as supplied ; in AutoCAD Release 13. AV, *DSVIEWER CP, *COPY DIMALI, *DIMALIGNED DIMANG, *DIMANGULAR DIMBASE, *DIMBASELINE DIMCONT, *DIMCONTINUE DIMDIA, *DIMDIAMETER DIMED, *DIMEDIT DIMTED, *DIMTEDIT DIMLIN, *DIMLINEAR DIMORD, *DIMORDINATE DIMRAD, *DIMRADIUS DIMSTY, *DIMSTYLE DIMOVER, *DIMOVERRIDE LEAD, *LEADER TM, *TILEMODE ; Aliases for Hyperlink/URL Release 14 compatibility SAVEURL, *SAVE OPENURL, *OPEN INSERTURL, *INSERT ; Aliases for commands discontinued in AutoCAD 2000: AAD, *DBCONNECT AEX, *DBCONNECT ALI, *DBCONNECT ASQ, *DBCONNECT ARO, *DBCONNECT ASE, *DBCONNECT DDATTDEF, *ATTDEF DDATTEXT, *ATTEXT DDCHPROP, *PROPERTIES DDCOLOR, *COLOR DDLMODES, *LAYER DDLTYPE, *LINETYPE DDMODIFY, *PROPERTIES DDOSNAP, *OSNAP DDUCS, *UCS ; Aliases for commands discontinued in AutoCAD 2004: ACADBLOCKDIALOG, *BLOCK ACADWBLOCKDIALOG, *WBLOCK ADCENTER, *ADCENTER BMAKE, *BLOCK BMOD, *BLOCK BPOLY, *BOUNDARY CONTENT, *ADCENTER DDATTE, *ATTEDIT DDIM, *DIMSTYLE DDINSERT, *INSERT DDPLOTSTAMP, *PLOTSTAMP DDRMODES, *DSETTINGS DDSTYLE, *STYLE DDUCS, *UCSMAN DDUCSP, *UCSMAN DDUNITS, *UNITS DDVIEW, *VIEW DIMHORIZONTAL, *DIMLINEAR DIMROTATED, *DIMLINEAR DIMVERTICAL, *DIMLINEAR DOUGHNUT, *DONUT DTEXT, *TEXT DWFOUT, *PLOT DXFIN, *OPEN DXFOUT, *SAVEAS PAINTER, *MATCHPROP PREFERENCES, *OPTIONS RECTANGLE, *RECTANG SHADE, *SHADEMODE VIEWPORTS, *VPORTS EDWFX, *EXPORTDWFX EDWF, *EXPORTDWF EPDF, *EXPORTPDF -QPUB, *-EXPORT ; Aliases for commands discontinued in AutoCAD 2007: RMAT, *MATBROWSEROPEN FOG, *RENDERENVIRONMENT FINISH, *MATERIALS SETUV, *MATERIALMAP SHOWMAT, *LIST RFILEOPT, *RENDERPRESETS RENDSCR, *RENDERWIN ; Aliases for commands discontinued in AutoCAD 2009: DASHBOARD, *RIBBON DASHBOARDCLOSE, *RIBBONCLOSE ; Aliases for sysvars discontinued in AutoCAD 2013: RASTERPREVIEW, *THUMBSAVE AUTOCOMPLETE, *-INPUTSEARCHOPTIONS AUTOCOMPLETEMODE, *-INPUTSEARCHOPTIONS AUTOCOMPLETEDELAY, *INPUTSEARCHDELAY ; -- User Defined Command Aliases -- ; Make any changes or additions to the default AutoCAD command aliases in ; this section to ensure successful migration of these settings when you ; upgrade to the next version of AutoCAD. If a command alias appears more ; than once in this file, items in the User Defined Command Alias take ; precedence over duplicates that appear earlier in the file. ; **********----------********** ; No xlate ; DO NOT REMOVE VEMO,*VEMO 41, *401K 42, *402H 12, *cirkel 303V, *303V 309O, *309O
and after a reinit i discover i doesn't work. i did some research about Lisp (first time) and i found out that you can make commands with Lisp to.
So i made a Txt file with the contents:
(DEFUN C:VEMO () (COMMAND "VEMO"))
in my personal file. C:\Program Files\Autodesk\AutoCAD 2014\Support\en-us (file: Commands.lisp)
But when i load the lisp in "load application". and restart autocad it doesn work:
So i must doing something wrong in all those steps? i m very new to lisp etc. so a good explaining is needed 🙂 when giving solutions or questions.
Shout away
PS: already been to
but i m doing it prob wrong or something like that
Solved! Go to Solution.
Solved by Kent1Cooper. Go to Solution.
Solved by Kent1Cooper. Go to Solution.
Solved by Kent1Cooper. Go to Solution.
If VEMO is just a name assigned to a button that contains a macro routine, I don't think that qualifies it as a defined command that can be called up by any means other than that button. The AutoLISP (command) function can only use actual AutoCAD command names, not User-defined commands. Your (defun) definition of VEMO can't call the same command name [although it is possible to do something similar to that if you re-define an AutoCAD command name after Undefining it, such as (for example) to include forcing it to set a certain Layer current when drawing a certain type of entity, but that's another topic].
I would go about it this way:
Make a file called VEMO.lsp [not .txt], to do what the macro does, but in LISP terminology, something like this [untested]:
(defun C:VEMO ()
(command
"_.LAYER" "_Set" "3031.Vemo's" ""
"_.insert" "0303VEMO" pause "" "" ""
"_.LAYERP"
); command
); defun
In your acaddoc.lsp file, put something in to make that command name available:
(load "VEMO")
or, if you want it to not load it unless and until the User calls for the command:
(autoload "VEMO" '("VEMO"))
Then it will be available without the need for an alias in the .pgp file [besides, there's not much point in using an alias that's the same as the full command name], and the contents of the button in the ribbon can be just:
^C^CVEMO
or if that doesn't work [I don't have any buttons quite analagous to that situation], it may need to be this way, as would be required to call a User-defined command within another LISP routine:
^C^C(C:VEMO)
@Anonymous wrote:
Kent,
it works!
can you make the lisp repeat himself?
Thanks!
Lucked out on that one....
You can build repeating in, something like this:
(defun C:VEMO (/ inspt)
(command "_.LAYER" "_Set" "3031.Vemo's" "")
(while (setq inspt (getpoint "\nInsertion point: "))
(command
"_.insert" "0303VEMO" inspt "" "" ""
); command
); while
(command "_.layerp")
); defun
However, that won't let you see the Block dragging as you go for the insertion point. There are several [untested] ways you could have it do that, the simplest but crudest of which is to require the User to hit Escape when they don't want to insert any more:
(defun C:VEMO (/ *error*)
(defun *error* ()
(command "_.layerp")
); defun -- *error*
(command "_.LAYER" "_Set" "3031.Vemo's" "")
(while T
(command "_.insert" "0303VEMO" pause "" "" "")
); while
); defun
But it can be more sophisticated, for instance allowing Enter or space or Escape to end it:
(defun C:VEMO (/ *error* inspt done)
(defun *error* (); on Escape at insertion-point prompt
(command "_.layerp")
); defun -- *error*
(command "_.LAYER" "_Set" "3031.Vemo's" "")
(while (not done)
(command "_.insert" "0303VEMO"); leave in command
(cond ; at insertion-point prompt
((setq inspt (getpoint "\nInsertion point or <exit>: )); point if picked, nil if Enter
(command inspt "" "" ""); finish Insertion
); end picked-a-point condition
(T ; on Enter/space at insertion-point prompt
(command); cancel Insert
(setq done T); stop (while) loop
); end exit condition
); cond
); while
(command "_.layerp")
); defun
@Anonymous wrote:
the third one doesn't work. ....
That's probably because I seem to have omitted the closing double-quote in the prompt:
....
((setq inspt (getpoint "\nInsertion point or <exit>: ")); point if picked, nil if Enter
....
It works for me here with that correction, though not quite as I expected [Escape doesn't exit it cleanly, and it doesn't show the Block dragging] -- I'll have to think about that....
EDIT:
Escape exits cleanly if you add a (command) with no arguments, to cancel the Insert command, [further Edit: and a message argument, even though it's not used] in the error handler:
....
(defun *error* (errmsg); on Escape at insertion-point prompt
(command); cancel Insert command, then
(command "_.layerp")
); defun -- *error*
....
(defun C:VEMO (/ *error* inspt done) (defun *error* (errmsg); on Escape at insertion-point prompt (command); cancel Insert command, then (command "_.layerp") ); defun -- *error* (command "_.LAYER" "_Set" "3031.Vemo's" "") (while (not done) (command "_.insert" "0303VEMO"); leave in command (cond ; at insertion-point prompt ((setq inspt (getpoint "\nInsertion point or <exit>: ")); point if picked, nil if Enter (command inspt "" "" ""); finish Insertion ); end picked-a-point condition (T ; on Enter/space at insertion-point prompt (command); cancel Insert (setq done T); stop (while) loop ); end exit condition ); cond ); while (command "_.layerp") ); defun
so that's what i have for some other followers (last edit). Works for me, did also the first edit, with the wrong excape exit, i got a scalefunction then. Nicely done kent! that thing will help me a lot. thanks!
@Anonymous wrote:
.... Nicely done kent! that thing will help me a lot. thanks!
You're welcome, and thank you for racking up three Solutions-authored for me on one thread! [Gotta keep my count up, so they'll keep me on as an Expert Elite, after all.]
Can't find what you're looking for? Ask the community or share your knowledge.