-AutoCAD Macro's-
Een AutoCAD macro is eenvoudig gezegd - een syntax van opeenvolgende AutoCAD commando's alsof men ze na elkaar zou hebben gebruikt. Ze bundelen repetitieve taken tot één functie. Elke reeks van opeenvolgende commando's welke men via het toestenbord of de commandoregel ingeeft, kan opgenomen worden in een macro. Er is dus een heel lage drempel om een macro te maken eens men een beetje vertrouwd is met AutoCAD.
Een macro bestaat dus uit meerdere AutoCAD commando's met of zonder haar opties, en eventueel andere programeercodes (zoals Diesel expressies, AutoLISP functies en VBA code). Een AutoCAD macro is zowel bruikbaar bij een gewone AutoCAD (en alle AutoCAD verticals zoals Mech, Plant, Civil...) alsook AutoCAD LT, en talloze AutoCAD klonen als BricsCAD. Macro's zijn over het algemeen heel versieneutraal, dus zouden moeten blijven werken bij een update van AutoCAD.
Een AutoCAD macro stelt men samen alsof men alles via de commandoregel ingeeft.
Enkele voorbeelden van een macro:
Plaatst een cirkel met diameter 15
^C^C_circle;\d;15;
Verwijdert 1 geselecteerd object
^C^C_erase;Single;
Er zijn aansluitend nog een aantal bijkomende codes en speciale karakters om de macro bij te sturen: zoals hier reeds wordt weergegeven met ^C^C wat staat voor 2x een cancel. Dit is nodig om eventueel aktieve commando's te onderbreken wanneer men de macro wil uitvoeren. Er zijn andere symbolen voor oa het pauzeren van de macro voor gebruikersingave of het onderdrukken van de meeste dialoogschermen. De voornaamste codes hebben we hier beschreven.
Eens men een Macro heeft gemaakt, kan men deze opslaan als een functie in de AutoCAD CUI of in een toolpalette.
Vanaf AutoCAD2009 werd de functie Action Recorder beschikbaar gesteld. Dit kan je best wel vergelijken als een macro recorder om eveneens repetitieve taken als een nieuwe functie te capteren en te bewaren. De Actions Recorder heeft echter nog een aantal nadelen:
- men er er geen bestanden mee openen
- men kan geen grips gebruiken
- men kan geen VBA laden
- en men kan geen veranderingen aanbrengen aan een dialoogscherm wat eigenlijk betekend dat men dan toch alles via de commandoregel moet doen om de macro op te nemen.
Heeft u ook een handige macro die u wil delen, mail ons dan naar
met de vermelding van uw naam en waarvoor u de macro gebruikt. |
karakter |
Beschrijving |
Spatie |
Equivalent als het ingeven van een Enter (=uitvoeren) tijdens het uitvoeren van een macro - met uitzondering van het intypen van tekst tijdens het maken van een tekstobject welke spatie (tussen de woorden) moet bevatten. |
; (semi-colon) |
Equivalent van een Enter. Maar wordt geprefereerd boven een Spatie omdat men met het semi-colon symbool meerdere enters na elkaar beter kan waarnemen in de code. Ook na het einde van een macro plaatst men best een semi-colon. |
^M |
Geeft eveneens een ENTER |
^I |
Staat voor een TAB |
\ |
Zet de macro op pause en wacht op een aktie van de gebruiker, bijv ingeven van een waarde of object selecteren - zal vervolgens de macro verder uitvoeren |
_ (underscore) |
Het toevoegen van een "underscore" verzekert dat de macro zal werken in elke taalversie van AutoCAD (Engels, Duits, Japans,...) |
- |
Onderdrukt dialoogvenster: bepaalde commando's die een dialoogvenster oproepen kan men niet aansturen via een macro (zoals layermanager en insert block) |
=* |
Weergave van het aktieve top level plaatje, pulldown menu en shortcut menu |
* |
Herhalen van de macro: dit kan men ingeven aan het begin van een macro, nog voor de ^C^C, om de macro te herhalen totdat men ESC activeert of een andere functie opstart via menu, ribbon of toolbalk. |
$ |
Speciaal karakter welke een menu sectie laadt of een conditionele DIESEL expressie opstart (*M=) |
^B |
Zal de Snap functie aan of uit zetten (CTRL+B) |
^C |
Cancel: zal een lopend commando annuleren (ESC). Er wordt veelal 2 maal een Cancel gegeven aan het begin van een macro om eventueel lopende commando's te annuleren alvorens de macro functie te kunnen starten. |
^D |
Zal de Coords functie aan of uit zetten (CTRL+D) |
^E |
Zal het volgende Isometrische vlak aktiveren (CTRL+E) |
^G |
Zal de Grid functie aan of uit zetten (CTRL+G) |
^H |
Backspace |
^O |
Zal de Ortho functie aan of uit zetten (CTRL+O) |
^P |
Wisselt de instelling MENUECHO aan of uit |
^Q |
Weergave van alle prompts, status oplijstingen en inputnaar een printer (CTRL+Q) |
^V |
Verandert het aktieve Viewport (CTRL+V) |
|
|
|
|
|
Repeating single erase
Via een Single selection set wordt het object verwijderd. Door de asterix (*) vooraan de macro wordt deze functie herhaald tot dat men een aanslag geeft op ESC of een nieuwe functie start. Superhandig om verschillende individuele objecten die ove de tekening verspreid staan - te picken en te verwijderen.
*^C^Cerase;Single;
Afronden met radius 0
Start het afrondingscommando en de optie instellen voor een radius=0, hiermee kan men snel 2 lijnen trimmen naar een hoek.
^C^C_fillet;r;0;
Invoegen van een block
Invoegen van de wblock met de naam "symbool.dwg" maar de tekenaar kan die naar willekeur neerplaatsen.
Voeg nog een asterix (*) voor de macro om deze functie te automatisch te herhalen. Superhandig bij veelvuldig geplaatste symbolen.
Het minteken voor het Insert commando onderdrukt het Insert dialoogvenster zodat alle opties via de commandoregel verschijnen.
^C^C_-insert;symbool.dwg;
Invoegen van de wblock met de naam "symbool.dwg" maar de tekenaar kan die naar willekeur neerplaatsen. (\ = pauze). Hierna krijgt de block steeds een verschaling van x=10 en y=5.
^C^C_-insert;symbool.dwg;\10;5;;
Deze macro zal de layer "inventorwizard" aktief plaatsen of deze zelf nieuw aanmaken wanneer de layer nog niet beschikbaar is in de tekening. Deze layer heeft verder nog een kleureigenschap blauw meegekregen. Vervolgens wordt laatst ingevoegde block (tweede enter na insert) terug in de tekening gebracht met een verschaling van x=5 en y=5
^C^C_-layer;make;inventorwizard;color;blue;;;-insert;;\5;5;;
Plaatsen van 1 horizontale of verticale constructielijn op de juiste layer
Deze macro zal de layer "xline" aktief plaatsen of deze nieuw aanmaken wanneer de layer nog niet beschikbaar is in de tekening. De layer krijgt een kleureigenschap rood mee alsook een niet plotbare status. Het commando xline wordt gestart met een optie Horizontaal of Vertikaal. Een AutoCAD konstruktielijn is een oneindige rechte die oa gebruikt voor om aanzichten over te halen.
^C^C-layer;make;xline;color;red;;plot;no;;;xline;h;
^C^C-layer;make;xline;color;red;;plot;no;;;xline;v;
Orthogonale lijn plaatsen volgens CAD standaard
Dit is een heel krachtige functie wanneer men bijv een elektrisch schema's, flowcharts of P&ID moet tekenen.
Deze macro start met een asterix (*) om de functie automatisch te herhalen eens voltooid, zodoende start men steeds opnieuw het lijncommando. ORTHOMODE zal zorgen dat men enkel maar orthogonale lijnen zal kunnen plaatsen. Dan wordt ofwel de layer "Verbindingslijn" aktief gemaakt of nieuw aangemaakt met eigenschappen zoals kleur, lijntype, lijndikte en plotbaar.
Optioneel kan men ook nog een OSMODE toevoegen om de gewenste object snaps te aktiveren.
*^C^Corthomode;1;-layer;m;Verbindingslijn;C;1;;l;continuous;;lw;0.25;;p;plot;;;LINE;\\;
Single Click Print functies
Ik heb ooit iemand gekend waarvan de plot.log getuigde dat hij jaarlijks een 1000 tal afdrukken maakte. Om in die hoeveelheden het plotdialoogscherm te doorkruisen om elke afdruk van de juiste instellingen te voorzien, is een deftig karwei. Daarom zijn deze 2 macros ontstaan.
Eenmaal men een reeds een afdruk heeft gelanceerd kan men een volgende aktieve tekening opnieuw afdrukken met dezelfde instellingen als vorige plot. Ik heb tot slot nog een "plot preview" toegevoegd als controle of het gewenste resultaat wel zal bekomen.
^C^C-plot;no;;Previous Plot;;No;Yes;No;Preview;
Volgende macro zal een PDF afdruk maken van de aktieve AutoCAD tekening. Omdat de printopties verschillend zijn voor een tekening in modelspace of layout - detecteert men via de TILEMODE variabele vanwaar de afdruk gelanceerd wordt. Modelspace wordt afgedrukt een "fit" en bij layout wordt het bereik van het blad gebruikt. Beide printen verder naar een PDF af op A3 formaat met een monochrome.ctb plottabel. Met een aantal van deze functies kan men op knopdruk verschillende printers en bladformaten bedienen. Vree wijs!!!
^C^C-plot;y;$M=$(if,$(and,$(getvar,tilemode),1),Model;"DWG To PDF.pc3";"ISO A3 (420.00 x 297.00 MM)";M;L;N;Window;\\Fit;Center;Y;monochrome.ctb;Y;;\N;Y,;"DWG To PDF.pc3";"ISO A3 (420.00 x 297.00 MM)";M;L;N;Window;\\Fit;Center;Y;monochrome.ctb;Y;Y;N;N;\N;Y);
Starten van een externe applicatie
Vanuit AutoCAD is het ook mogelijk om eigenlijk elk windows programma te starten. Hier een paar teasers die de windows calculator of notepad starten. Mijnenveger kan uiteraard ook ;-)
^C^C(startapp "calc.exe");
^C^C(startapp "notepad.exe");
Met volgende macro zal men Windows verkenner starten... in de folder van de aktieve tekening.
Heel handig in combinatie bijv met de Plotmacro die een PDF van tekeningen maakt. Om aansluitend de PDF bestanden op te halen kan men deze functie starten die onmiddelijk verkenner opent op de lokatie waar de aktieve tekening staat.
^C^C^P(startapp "explorer" (strcat "/e, "(getvar "dwgprefix")))(princ);
Ophalen en starten van een LISP routine
Deze macro zal een LISP routine laden in de teken - let hier op de verplichte slash "/" en niet de gebruikelijke backslash "\" om de folder structuur op de bouwen. "zwbylayer" is het uitvoerende commando welke in de LIPS routine werd gedefinieerd mer DEFUN
^C^C(load "C:/cad_bibliotheek/tools/insert_cadstandard.lsp");zwbylayer;
Ophalen en starten van een VBA routine
Opgelet: sinds AutoCAD 2010 werd de VBA module niet meer geinstalleerd met AutoCAD, waardoor alle VBA scripts niet meer zullen werken. Intussen wordt VBA ook niet meer officieel ondersteund door AutoCAD en drijft men alles in de richting van .NET
Mogelijks kan men voor uw AutoCAD versie wel nog een niet officiele VBA Enabler downloaden om de VBA nog een tijdlang te gebruiken.
^C^C_-vbarun;FILENAME.dvb!MODULNAME.SUBNAME
FILENAME is de naam van het project DVB bestand
MODULNAME is de naam van de module
SUBNAME is de naam van de subroutine in de Module, en de routine die gestart wordt
TOP
|