Finding if PaletteSet is newly created

<?xml encoding=”UTF-8″>By Balaji Ramamoorthy

You may want to know if your PaletteSet is being created for the very first time to set its Docking or for any other purpose. To do this, you can save custom data when the PaletteSet gets saved which obviously will not be available at the very first time the PaletteSet is loaded.

Here is a sample code to set the default docking of a PaletteSet to DockSides.Left when it gets created. In subsequent sessions, the docking is not changed and the PaletteSet should retain the position that was set by the user.

 <span>using</span><span>  Autodesk.AutoCAD.Windows;</span>
 
 <span>static</span><span>  <span>bool</span><span>  _isFirstTime = <span>true</span><span> ;</span></span></span>
 MyUserControl ctrl = null;
 PaletteSet set = null;
 
 [CommandMethod(<span>"Test"</span><span> )]</span>
 <span>public</span><span>  <span>void</span><span>  commandMethodTest()</span></span>
 <span>{</span>
     <span>if</span><span>  (set == null)</span>
     <span>{</span>
         set = <span>new</span><span>  PaletteSet(<span>"MyPalette"</span><span> ,</span></span>
 		<span>new</span><span>  Guid(<span>"<span>{</span>43FFB063-DF0B-474B-9856-7886305CC3E8<span>}</span>"</span><span> ));</span></span>
 
         set.Load += 
 			<span>new</span><span>  PalettePersistEventHandler</span>
 			(ps_Load);
 
         set.Save += 
 			<span>new</span><span>  PalettePersistEventHandler</span>
 			(ps_Save);
                 
         <span>if</span><span>  (ctrl == null)</span>
         <span>{</span>
             ctrl = <span>new</span><span>  MyUserControl();</span>
             set.Add(<span>"MyPalette"</span><span> , ctrl);</span>
             set.Style = PaletteSetStyles.ShowCloseButton;
         <span>}</span>
     <span>}</span>
     set.Visible = <span>true</span><span> ;</span>
 
     Document doc 
 		= Application.DocumentManager.MdiActiveDocument;
     Editor ed = doc.Editor;
             
     <span>if</span><span>  (_isFirstTime)</span>
     <span>{</span>
         ed.WriteMessage(<span>"First Time, Set the Dock status"</span><span> );</span>
         set.Dock = DockSides.Left;
         _isFirstTime = <span>false</span><span> ;</span>
     <span>}</span>
     <span>else</span><span> </span>
     <span>{</span>
         ed.WriteMessage(<span>"Not the first time, Do nothing. </span><span> </span>
 			Leave it to the previous settings<span>");</span><span> </span>
     <span>}</span>
 <span>}</span>
 
 <span>private</span><span>  <span>static</span><span>  <span>void</span><span>  ps_Load(object sender, </span></span></span>
 	PalettePersistEventArgs e)
 <span>{</span>
     String sIsFirstTime = 
 		(String)e.ConfigurationSection.ReadProperty
 		(<span>"IsFirstTime"</span><span> , <span>"Yes"</span><span> );</span></span>
     <span>if</span><span>  (sIsFirstTime.Equals(<span>"No"</span><span> ))</span></span>
     <span>{</span>
         _isFirstTime = <span>false</span><span> ;</span>
     <span>}</span>
 <span>}</span>
 
 <span>private</span><span>  <span>static</span><span>  <span>void</span><span>  ps_Save(object sender, </span></span></span>
 	PalettePersistEventArgs e)
 <span>{</span>
     e.ConfigurationSection.WriteProperty(
 		<span>"IsFirstTime"</span><span> , <span>"No"</span><span> );</span></span>
 <span>}</span>
 


Comments

3 responses to “Finding if PaletteSet is newly created”

  1. Unknown Avatar
    Unknown

    I tryed this code in AutoCAD 2008, and next time when I opened CAD, there came Unknown command “MYPALETTE”。

  2. Unknown Avatar
    Unknown

    Oh,Thank you very much,
    It helps a lot, I think this is the best solution, better than the solution I found.
    For now, I solved it like this:
    When CAD was closed, find ‘FixedProfile.aws’, and remove ” from ‘StartupInfo’ node.
    It also worked, but now, I think this is a stupid way.
    Thank you for your advice.

Leave a Reply to UnknownCancel reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading