In een vorige blog heb ik iets geschreven over het maken van Partial Menu’s om aanpassingen te doen aan de User Interface, maar zodanig dat het niet wordt gesloopt door een update of nieuwe installatie, en dat het herbruikbaar is. Maar je kunt nog veel meer via de CUI dan Partial Menu’s of dubbelklik-acties. Je kunt ook eigen Ribbons maken, en zelfs Contextual Ribbons die verschijnen bij een bepaald commando of bij het selecteren van een object. Bij sommige objecten gebeurt dit al zoals een Hatch of een Array, of een Layout. En natuurlijk bij veel of misschien wel alle Civil 3D objecten. Maar niet bij een eenvoudige polylijn.

Contextual Ribbon

Het is handig om een nieuwe Contextual Ribbon in een persoonlijke Partial Menu te plaatsen. Doe je dit in een Civil 3D of AutoCAD menu-bestand, dan kan deze overschreven worden bij een update, en moet je alle aanpassingen opnieuw doen voor andere versies. Een Partial Menu staat er helemaal los van en kun je ook in andere versies laden.

Onder het menu Ribbon > Contextual Tab States vind je alle mogelijke acties waar een Contextual Ribbon aan gekoppeld kunnen worden. Deze vind je in het hoofdmenu maar ook in de Partial Menu’s.

Om maar gelijk met de deur in huis te vallen, er is in Civil 3D geen mogelijkheid om een Contextual Ribbon aan een 2D Polyline te koppelen maar in AutoCAD wel. Dit moet een bug zijn helaas. Het onderdeel waar je aan een 2D Polyline een Ribbon wilt koppelen heet in Civil 3D ‘Polyline object’ en in AutoCAD heet dit ‘Polyline selected’. Die laatste klinkt goed, want zo is er ook een ‘Arc selected’, ‘Circle selected’, enzovoort.

Om een Ribbon aan de actie te koppelen, kun je eerst Tabs met Panels maken onder het kopje Ribbon > Tabs en Ribbon > Panels, waarna je de gemaakte Panels sleept naar de gemaakte Tabs, om vervolgens die Tab te slepen naar de actie onder Contextual Ribbon. Klinkt wat ingewikkeld maar valt wel mee. Vroeger was het vele malen complexer, vóór het CUI tijdperk. En de eerste versies van de CUI Editor waren ook niet makkelijk, allemaal losse XML bestandjes, en bij een wijziging werd een volledig menu gekopieerd diep naar een sub-folder op de C-schijf die vervolgens werd bijgewerkt. Het origineel op de server of gedeelde locatie bleef eenzaam achter, en het was volslagen onduidelijk waarom de één wel een wijziging in beeld kreeg en de andere collega niet. Maar goed, dat was vroeger.

In plaats van een nieuwe Ribbon, kun je ook bestaande Tabs uit het AutoCAD menu slepen naar de Contextual Ribbon States. Bijvoorbeeld uit het ACAD Menu kun je de Tab ‘Home – 2D’ slepen naar je Partial Menu, onderdeel Ribbon > Contextual Ribbon States > Polyline selected. Wil je dit in Civil 3D doen, dan moet je de wijzigingen in AutoCAD doen, want zoals gezegd, is de actie ‘Polyline Selected’ niet aanwezig in Civil 3D. Zorg er overigens wel voor dat alle sub-menu’s al opengeklapt zijn, om teleurstellingen te voorkomen.

Kopie bewerken

Als je vanuit het hoofdmenu zo’n Tab versleept naar een Partial Menu, dan wordt er een kopie gemaakt in de onderdelen Tabs en Panels van Ribbon. Om verwarring te voorkomen, kun je het beste de naam en ID aanpassen van de tabs, anders krijg je vreemde resultaten in AutoCAD. Bijvoorbeeld een enorm lange Home Tab waarin alles gedupliceerd lijkt. Klik hiervoor op de betreffende Tab en wijzig de Alias, en de Display Text. Ook kun je in het partial menu gelijk wat Panels verwijderen die je niet wilt zien als je een Polyline selecteert zoals de Block, Groups en Clipboard Panels.

Na opslaan wordt het menu automatisch geladen. Bij een selectie van een Polyline zul je zien dat er een aparte Ribbon wordt getoond met alleen die Panels die je wilt zien. Je kunt deze ook uitbreiden met eigen Panels, als je allerlei hulptools gemaakt hebt. Bijvoorbeeld met Lisp.

Kost een beetje tijd, maar geeft je daarna enorm veel plezier!

Altijd al plug-ins willen maken voor AutoCAD? Dan is dit het boek dat je nodig hebt om dat te leren. Het helpt je om plug-ins te ontwikkelen in de .NET taal C# met behulp van Visual Studio. This book is only available in English.