tisdag 30 april 2019

Macro för rotera viewport eller Let's twist again!

Idag blir det ett rent AutoCAD-tips faktiskt, även om vi använder det i Civil 3D.

Jag fick en fråga igår från en kund om hur ritningshanteringen går till i Civil 3d, och tyvärr så måste jag svara att ritningshanteringen i det stora hela går till precis som den gör i AutoCAD.

Ritningshanteringen i AutoCAD är inte svår, den är mest omständlig och kräver att man gör allt i rätt ordning och alltid gör samma sak. Det finns dessutom många sätt att hantera sina ritningar på, som mycket annat i AutoCAD så leder alla vägar till Rom, men det finns många vägar till Rom. (jag rekommenderar med tåg över/genom bergen genom Österrike, men igen, eget inlägg)

Idag diskuterade jag också ritningshantering, speciellt hur man roterar sin modell för ritdeffen och de kommandona jag använde insåg jag snabbt att man kan lägga ihop till ett macro, så det är dagens inlägg: ett macro för att rotera din modell och zooma in i en viewport. Och jag tänkte använda detta för att visa lite hur man kan göra macros generellt- jag har skrivit om detta tidigare, så det blir säkert en liten repetition för en del av er.

Några frågar du kan ställa dig innan du börjar:

Kan jag göra detta till ett macro?

Alla funktioner som lever på kommandoraden är enkla att göra om till macro, så så länge du inte blandar in några dialogboxar så kommer det gå galant.

Är det lönt att göra ett macro?

Om det är en serie av kommandon som du gör upprepade gånger så är det oftast lönt att göra macrot. Både för att spara tid och för att komma ihåg att alltid göra funktionerna i rätt ordning. Angående tids-aspekten så gillar jag XKCDs diagram över tidsvinst: https://xkcd.com/1205/


Hur du börjar:

Gör de funktioner du vill sätta ihop och skriv ner hur du gör. I mitt fall vill jag ställa in ett eget UCS längs en utsnittsruta, vrida vyn till det UCS, ställa tillbaka UCS till World och sist zooma till utsnittsrutan. Jag börjar med att skriva alla kommandon på kommandoraden, och medan jag skriver det på kommandoraden så skriver jag samma saker i ett Notepad/Anteckningar-fönster. Notepad är kung för detta, det minimerar risken för att formattering av text bråkar med dig.

Varje mellanslag/enter skriver jag som ett
Varje gång jag behöver klicka något på skärmen skriver jag ett \
Mitt första utkast på macro blev då UCS;\;plan;;ucs;w;zoom \\

Om ni testar det så kommer ni se att det inte fungerar. Den enklaste metoden för att testa sitt macro är att klistra in texten på kommandoraden och se vad som händer. Jag behöver väl inte säga att ni ska se till att spara ritningen och helst inte ha en "riktig" ritning uppe medan ni gör det här? Bra.

För att testa ett macro är det enklast att ta det i steg. Jag började med att få UCS-delen att fungera, tog alltså bara UCS;\; och klistrade in på kommandoraden och ändrade i macrot tills jag fick in alla enter-slag och \ på rätt ställe.

Till slut, efter lite testande, så fick jag detta: ^C^CUCS;\\;plan;;UCS;w;zoom;
Notera att det numera också börjar med ^C^C, det är för att macrot ska avbryta eventuell funktion som är igång innan den startar själva macrot.

För att sedan skapa en knapp så är det CUI-dialogen som gäller, skapa funktion, lägga in macrot, skapa en panel, lägga in knappen på panelen, lägga panelen på en tab, badabing badaboom!


Det är riktigt tillfredställande att få ihop ett riktigt snyggt macro som gör precis det man vill!