Monday, August 25, 2014

Create an Application Plugin to automatically load custom content

There are several methods for loading custom content into AutoCAD. In other posts we have looked at partially loading CUI files and deploying a network based AutoCAD profile. Another method that is very streamlined and does not even require a custom profile is to use the ApplicationPlugins folder. Autodesk products automatically look in this location for content and will auto-load it if the content is properly organized. This feature was introduced in AutoCAD 2012 and can be a great way to deploy custom content.
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
Then the new component is an XML file that "bundles" the custom content together and tells AutoCAD how it should be loaded.

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.


 

2 comments:

  1. merkur casino review
    Merkur Casino Review 메리트 카지노 쿠폰 2021 - Up choegocasino to $300 Welcome Bonus. Our Merkur review looks at deccasino this casino and the welcome bonus.

    ReplyDelete
  2. Streamlined Design: Create An Application Plugin To Automatically Load Custom Content >>>>> Download Now

    >>>>> Download Full

    Streamlined Design: Create An Application Plugin To Automatically Load Custom Content >>>>> Download LINK

    >>>>> Download Now

    Streamlined Design: Create An Application Plugin To Automatically Load Custom Content >>>>> Download Full

    >>>>> Download LINK d3

    ReplyDelete