The approach is quite different than other methods of managing custom content but it is very powerful as it is not attached to an AutoCAD user profile.
This post will walk through deploying a custom ribbon tab and command using the ApplicationPlugins folder. We will have all the usual pieces:
- Some code to define the command
- A CUI with icon images
The location of the ApplicationPlugins folder is: C:\Program Files\Autodesk\ApplicationPlugins
Notice this is not specific to AutoCAD, Civil 3D, Map 3D, etc or even to a version. This is because all of these Autodesk products look in this location for content to load.
We will organize our content in this folder by first creating a top level folder to store our custom content and allow us to keep it separate from other plug-ins in this location.
The content can be organized in multiple sub-folders within this location. It can be setup to accommodate the custom app, or tools that are being added. For this example I made a few subfolders to store the application file (.dll), the CUI, and the images for the button.
Notice the PackageContents.xml file. This is what instructs AutoCAD on where the custom content is and ensures everything is loaded properly. Here is the contents of the XML file:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage SchemaVersion="1.0" AutodeskProduct="AutoCAD" ProductType="Application" Name="SLDexample" AppVersion="1.1.0" Description="Example Custom
Content" Author="Streamlined Design"
AppNameSpace="" OnlineDocumentation=""
HelpFile="" Icon=""
ProductCode="SLD0001" UpgradeCode="">
<RuntimeRequirements OS="Win32|Win64" Platform="AutoCAD*|AutoCAD" SeriesMin="R18.2" SeriesMax="R19.1"/>
<CompanyDetails Name="Streamlined Design" Url="http://streamlined-design.blogspot.com" Email=" " />
<Components>
<RuntimeRequirements SupportPath="./Contents/Support" OS="Win32|Win64" Platform="AutoCAD*|AutoCAD" SeriesMin="R18.2" SeriesMax="R19.1"/>
<ComponentEntry AppName="SLDexample" Version="1.1.0" ModuleName="./Contents/SLDexample.dll" AppDescription="SLD Custom Command" PerDocument="True">
<Commands>
<Command Local="SLDappPlugin" Global="SLDappPlugin" Description="Custom Command Using Plugin" />
</Commands>
</ComponentEntry>
<ComponentEntry AppName="SLDexample" Version="1.1.0" ModuleName="./Contents/Support/SLDexample.cuix" AppDescription="SLD Tools CUI" />
</Components>
</ApplicationPackage>
The first part of this file defines the application. There are a few fields that can be left blank and the ProductCode can be a unique identifier.
<ApplicationPackage SchemaVersion="1.0" AutodeskProduct="AutoCAD" ProductType="Application" Name="SLDexample" AppVersion="1.1.0" Description="Example Custom Content" Author="Streamlined Design"
AppNameSpace="" OnlineDocumentation=""
HelpFile="" Icon=""
ProductCode="SLD0001" UpgradeCode="">
The <Components> section is where a SupportPath can be defined, this creates a functioning support path while AutoCAD is running. The OS and AutoCAD versions can be specified as well.
<Components>
<RuntimeRequirements SupportPath="./Contents/Support" OS="Win32|Win64" Platform="AutoCAD*|AutoCAD" SeriesMin="R18.2" SeriesMax="R19.1"/>
There is a <ComponentEntry> for the application (.dll in this example) as well as for the CUI. Notice each component is pathed to using a relative path location from the folder the XML file is located in. This is represented by the "." in the path.
<ComponentEntry AppName="SLDexample" Version="1.1.0" ModuleName="./Contents/SLDexample.dll" AppDescription="SLD Custom Command" PerDocument="True">
Each command defined within the application file (.dll) should be specified. In this example there is only one command: SLDappPlugin. If there were more each one would have its own line:
<Command Local="SLDappPlugin" Global="SLDappPlugin" Description="Custom Command Using Plugin" />
After defining the application file and the commands the CUI is defined also as a <ComponentEntry>
Again, a relative path location is used from the XML file to the location of the cui file.
<ComponentEntry AppName="SLDexample" Version="1.1.0" ModuleName="./Contents/Support/SLDexample.cuix" AppDescription="SLD Tools CUI" />
With the XML file pointing to the application and cui file it is now ready for AutoCAD to load. There is nothing additional required on the AutoCAD side, simply ensure the bundle folder is directly in the ApplicationPlugins folder mentioned above and then launch AutoCAD.
You will notice an information bubble pop-up that confirms the custom application was loaded properly
The CUI elements defined in the CUI should now be available
And the command definition in the .dll will be active
Also, without any additional configuration this plugin is available in Civil 3D since it also auto-loads from the same ApplicationPlugins folder.
This opens up a whole new method of managing custom content. Consider an automated method of deploying this content to workstations with a batch file and/or SharePoint.