.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to disable AEC warning message

16 REPLIES 16
SOLVED
Reply
Message 1 of 17
elliottpd11
30072 Views, 16 Replies

How to disable AEC warning message

We are trying to run an automated process on incoming AutoCAD drawings.  However, the process stops if a drawing has AEC object references, because the warning dialog opens (and the program does not deal with it).  Is there a programmatic way to disable the AEC warning dialog for opening?  Similar to turning off the Proxy warning?  Perhaps a Registry setting?  Thanks in advance for all your help.

16 REPLIES 16
Message 2 of 17
_gile
in reply to: elliottpd11

Hi,

 

Are you talking about the PROXYNOTICE sysvar? If so, just set it to 0.



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 3 of 17
elliottpd11
in reply to: elliottpd11

No that doesn't seem to affect the AEC warning.

Message 4 of 17
SENL1362
in reply to: elliottpd11

http://adndevblog.typepad.com/autocad/fenton-webb/page/2/ :: Disable Task Dialogs programmatically

These ‘hide dialog’ settings are stored in your %APPDATA%\Autodesk\AutoCAD 2014\R19.1\enu\Support\Profiles\Unnamed Profile\fixedprofile.aws under the HideableDialogs section.

The messages comes from dictionaries stored in the Database(DWG). They can be removed after opening but that's too late to avoid the messages.
Unfortunately up to now i was not able to remove these AEC (proxy/zomby) object from the database before showing it in the Application. The next code failed:
...
aexDB.ReadDwgFile(aecPathname, FileOpenMode.OpenForReadAndWriteNoShare,true, null);
...
if (Regex.IsMatch(id.ObjectClass.DxfName, "Acad_Proxy_Object", RegexOptions.IgnoreCase))
{
//other ghost/zomby like objects
}

if (Regex.IsMatch(proxy.OriginalDxfName, "AEC", RegexOptions.IgnoreCase))

{

//AEC like objects

}

Message 5 of 17
Balaji_Ram
in reply to: elliottpd11

Anton (SENL1362) has already provided the right answer. These settings are part of the profile settings.

Just wanted to add to it.

 

If you need to stop those warnings even before the drawing is opened in AutoCAD, you can directly edit the .aws file by parsing it as an XML.

 

Add the following as a child node under the <HideableDialogs>

 

<HideableDialog id="AecUiBase.PreviousVersionOpen" result="8" />

 

This change is to be done in the FixedProfile.aws

 

Regards,

Balaji



Balaji
Developer Technical Services
Autodesk Developer Network

Message 6 of 17
elliottpd11
in reply to: Balaji_Ram

We are using AutoCAD 2012, and there is not a <HideableDialogs> node in the FixedProfile.aws, so I am wondering: Do I add a <HideableDialogs> section, and where in the tree does it go?

Message 7 of 17
SENL1362
in reply to: elliottpd11

%AppData%\Roaming\Autodesk\AutoCAD Map 3D 2012\R18.2\enu\Support\Profiles


<Profile> <StorageRoot> <AcApData> <HideableDialogs> <HideableDialog id="DrawingOpen.ForeignDWGFile" title="Open - Foreign DWG File" category="Drawing Open" application="" result="1001"> <Preview> <TaskDialog Source="/AcTaskDialogs;component/TaskDialogs.xaml" Id="DrawingOpen.ForeignDWGFile" xmlns="clr-namespace:Autodesk.Windows;assembly=AdWindows"> </TaskDialog> </Preview> </HideableDialog> </HideableDialogs> </AcApData> </StorageRoot> <Name>*Fixed_Profile</Name> <Description> </Description> </Profile>

 

Compare this AWS before and after turning the message OFF

You can turn the messages on in AutoCAD: Options>System>Hidden Messages Settings...

 

 

 

 

Message 8 of 17
SENL1362
in reply to: SENL1362

 

 

AWS after turning the AEC message OFF:

<Profile>
	<StorageRoot>
		<AcApData>
			<HideableDialogs>
				<HideableDialog id="DrawingOpen.ForeignDWGFile" title="Open - Foreign DWG File" category="Drawing Open" application="" result="1001">
					<Preview>
						<TaskDialog Source="/AcTaskDialogs;component/TaskDialogs.xaml" Id="DrawingOpen.ForeignDWGFile" 				xmlns="clr-namespace:Autodesk.Windows;assembly=AdWindows">
						</TaskDialog>
					</Preview>
				</HideableDialog>
				<HideableDialog id="AecUiBase.NewerVersionOpen" title="Open Drawing - New Versions of Objects in Drawing" category="Version Conflict Warning" application="AutoCAD Map 3D 2012" result="8">
					<Preview>
						C:\Users\avb\AppData\Local\Temp\AecUiBase.NewerVersionOpen.xaml
					</Preview>
				</HideableDialog>
			</HideableDialogs>
		</AcApData>
	</StorageRoot>
	<Name>
		*Fixed_Profile
	</Name>
	<Description></Description>
</Profile>

 

Message 9 of 17
b_ralphs
in reply to: SENL1362

Are we refering to the same message?

I need to hide this "Mixed version AEC object" warning box (attached).

It doesn't have a "Don't show this message again" check box, so it doens't show up under "Hidden Messages Settings".

Does it have an ID so I can also hide it?

Message 10 of 17
mcicognani
in reply to: b_ralphs

I may suggest another technique, even if it require more fine tuning. It's based on an old post on Kean's blog, given some time I'm sure you can find it.

 

The key is to intercept any new windows and send close message to those we're not interested.

 

This is the code for installing a watcher on your main function:

 

WorkshopNET.Win32.LocalCbtHook cbt = new WorkshopNET.Win32.LocalCbtHook();
cbt.WindowCreated += new WorkshopNET.Win32.LocalCbtHook.CbtEventHandler(cbt_WindowCreated);
cbt.Install();  // install dialog watcher

and this is the function, quite simple, you may need to add some logic to preserve good forms (e.g. Adobe PDF printer) from bad ones...

 

void cbt_WindowCreated(object sender, WorkshopNET.Win32.CbtEventArgs e)
{
    if (e.IsDialogWindow && (e.Title.Length > 0))
    {
        // send close message
        WorkshopNET.Win32.User32.SendMessage(e.Handle, (int)WorkshopNET.Win32.Msgs.WM_CLOSE, IntPtr.Zero, IntPtr.Zero);   
    }
}

The WorkshopNET.Win32 namespace is my application repository for win32 declaration. For your convenience I post it the complete file, since you may need most of it.

 

using System;
using System.Text;
using System.Runtime.InteropServices;
 
namespace WorkshopNET.Win32
{
	public delegate int WindowProcDelegate(IntPtr hw, IntPtr uMsg, IntPtr wParam, IntPtr lParam);
	
	// Filter function delegate
	public delegate int HookProc(int code, IntPtr wParam, IntPtr lParam);
 
	/// <summary>
	/// Windows User32 DLL declarations
	/// </summary>
	public class User32
	{
		[DllImport("User32.dll", CharSet=CharSet.Auto)]
		public static extern IntPtr SetClipboardViewer(IntPtr hWnd);
 
		[DllImport("User32.dll", CharSet=CharSet.Auto)]
		public static extern bool ChangeClipboardChain(
			IntPtr hWndRemove,  // handle to window to remove
			IntPtr hWndNewNext  // handle to next window
		);
 
		[DllImport("user32.dll", CharSet=CharSet.Auto)]
		public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
 
		[DllImport("user32.dll")]
		public static extern IntPtr SetWindowsHookEx(HookType code, HookProc func, IntPtr hInstance, int threadID);
 
		[DllImport("user32.dll")]
		public static extern int UnhookWindowsHookEx(IntPtr hhook);
 
		[DllImport("user32.dll")]
		public static extern int CallNextHookEx(IntPtr hhook, int code, IntPtr wParam, IntPtr lParam);
 
		[DllImport("user32.dll")]
		public static extern int GetClassName(IntPtr hwnd, StringBuilder lpClassName, int nMaxCount);
 
		[DllImport("user32.dll")]
		public static extern int GetWindowText(IntPtr hwnd, StringBuilder lpString, int nMaxCount);
 
	}
 
	/// <summary>
	/// Windows Event Messages sent to the WindowProc
	/// </summary>
	public enum Msgs : int
	{
		WM_NULL                   = 0x0000,
		WM_CREATE                 = 0x0001,
		WM_DESTROY                = 0x0002,
		WM_MOVE                   = 0x0003,
		WM_SIZE                   = 0x0005,
		WM_ACTIVATE               = 0x0006,
		WM_SETFOCUS               = 0x0007,
		WM_KILLFOCUS              = 0x0008,
		WM_ENABLE                 = 0x000A,
		WM_SETREDRAW              = 0x000B,
		WM_SETTEXT                = 0x000C,
		WM_GETTEXT                = 0x000D,
		WM_GETTEXTLENGTH          = 0x000E,
		WM_PAINT                  = 0x000F,
		WM_CLOSE                  = 0x0010,
		WM_QUERYENDSESSION        = 0x0011,
		WM_QUIT                   = 0x0012,
		WM_QUERYOPEN              = 0x0013,
		WM_ERASEBKGND             = 0x0014,
		WM_SYSCOLORCHANGE         = 0x0015,
		WM_ENDSESSION             = 0x0016,
		WM_SHOWWINDOW             = 0x0018,
		WM_WININICHANGE           = 0x001A,
		WM_SETTINGCHANGE          = 0x001A,
		WM_DEVMODECHANGE          = 0x001B,
		WM_ACTIVATEAPP            = 0x001C,
		WM_FONTCHANGE             = 0x001D,
		WM_TIMECHANGE             = 0x001E,
		WM_CANCELMODE             = 0x001F,
		WM_SETCURSOR              = 0x0020,
		WM_MOUSEACTIVATE          = 0x0021,
		WM_CHILDACTIVATE          = 0x0022,
		WM_QUEUESYNC              = 0x0023,
		WM_GETMINMAXINFO          = 0x0024,
		WM_PAINTICON              = 0x0026,
		WM_ICONERASEBKGND         = 0x0027,
		WM_NEXTDLGCTL             = 0x0028,
		WM_SPOOLERSTATUS          = 0x002A,
		WM_DRAWITEM               = 0x002B,
		WM_MEASUREITEM            = 0x002C,
		WM_DELETEITEM             = 0x002D,
		WM_VKEYTOITEM             = 0x002E,
		WM_CHARTOITEM             = 0x002F,
		WM_SETFONT                = 0x0030,
		WM_GETFONT                = 0x0031,
		WM_SETHOTKEY              = 0x0032,
		WM_GETHOTKEY              = 0x0033,
		WM_QUERYDRAGICON          = 0x0037,
		WM_COMPAREITEM            = 0x0039,
		WM_GETOBJECT              = 0x003D,
		WM_COMPACTING             = 0x0041,
		WM_COMMNOTIFY             = 0x0044 ,
		WM_WINDOWPOSCHANGING      = 0x0046,
		WM_WINDOWPOSCHANGED       = 0x0047,
		WM_POWER                  = 0x0048,
		WM_COPYDATA               = 0x004A,
		WM_CANCELJOURNAL          = 0x004B,
		WM_NOTIFY                 = 0x004E,
		WM_INPUTLANGCHANGEREQUEST = 0x0050,
		WM_INPUTLANGCHANGE        = 0x0051,
		WM_TCARD                  = 0x0052,
		WM_HELP                   = 0x0053,
		WM_USERCHANGED            = 0x0054,
		WM_NOTIFYFORMAT           = 0x0055,
		WM_CONTEXTMENU            = 0x007B,
		WM_STYLECHANGING          = 0x007C,
		WM_STYLECHANGED           = 0x007D,
		WM_DISPLAYCHANGE          = 0x007E,
		WM_GETICON                = 0x007F,
		WM_SETICON                = 0x0080,
		WM_NCCREATE               = 0x0081,
		WM_NCDESTROY              = 0x0082,
		WM_NCCALCSIZE             = 0x0083,
		WM_NCHITTEST              = 0x0084,
		WM_NCPAINT                = 0x0085,
		WM_NCACTIVATE             = 0x0086,
		WM_GETDLGCODE             = 0x0087,
		WM_SYNCPAINT              = 0x0088,
		WM_NCMOUSEMOVE            = 0x00A0,
		WM_NCLBUTTONDOWN          = 0x00A1,
		WM_NCLBUTTONUP            = 0x00A2,
		WM_NCLBUTTONDBLCLK        = 0x00A3,
		WM_NCRBUTTONDOWN          = 0x00A4,
		WM_NCRBUTTONUP            = 0x00A5,
		WM_NCRBUTTONDBLCLK        = 0x00A6,
		WM_NCMBUTTONDOWN          = 0x00A7,
		WM_NCMBUTTONUP            = 0x00A8,
		WM_NCMBUTTONDBLCLK        = 0x00A9,
		WM_NCXBUTTONDOWN          = 0x00AB,
		WM_NCXBUTTONUP            = 0x00AC,
		WM_KEYDOWN                = 0x0100,
		WM_KEYUP                  = 0x0101,
		WM_CHAR                   = 0x0102,
		WM_DEADCHAR               = 0x0103,
		WM_SYSKEYDOWN             = 0x0104,
		WM_SYSKEYUP               = 0x0105,
		WM_SYSCHAR                = 0x0106,
		WM_SYSDEADCHAR            = 0x0107,
		WM_KEYLAST                = 0x0108,
		WM_IME_STARTCOMPOSITION   = 0x010D,
		WM_IME_ENDCOMPOSITION     = 0x010E,
		WM_IME_COMPOSITION        = 0x010F,
		WM_IME_KEYLAST            = 0x010F,
		WM_INITDIALOG             = 0x0110,
		WM_COMMAND                = 0x0111,
		WM_SYSCOMMAND             = 0x0112,
		WM_TIMER                  = 0x0113,
		WM_HSCROLL                = 0x0114,
		WM_VSCROLL                = 0x0115,
		WM_INITMENU               = 0x0116,
		WM_INITMENUPOPUP          = 0x0117,
		WM_MENUSELECT             = 0x011F,
		WM_MENUCHAR               = 0x0120,
		WM_ENTERIDLE              = 0x0121,
		WM_MENURBUTTONUP          = 0x0122,
		WM_MENUDRAG               = 0x0123,
		WM_MENUGETOBJECT          = 0x0124,
		WM_UNINITMENUPOPUP        = 0x0125,
		WM_MENUCOMMAND            = 0x0126,
		WM_CTLCOLORMSGBOX         = 0x0132,
		WM_CTLCOLOREDIT           = 0x0133,
		WM_CTLCOLORLISTBOX        = 0x0134,
		WM_CTLCOLORBTN            = 0x0135,
		WM_CTLCOLORDLG            = 0x0136,
		WM_CTLCOLORSCROLLBAR      = 0x0137,
		WM_CTLCOLORSTATIC         = 0x0138,
		WM_MOUSEMOVE              = 0x0200,
		WM_LBUTTONDOWN            = 0x0201,
		WM_LBUTTONUP              = 0x0202,
		WM_LBUTTONDBLCLK          = 0x0203,
		WM_RBUTTONDOWN            = 0x0204,
		WM_RBUTTONUP              = 0x0205,
		WM_RBUTTONDBLCLK          = 0x0206,
		WM_MBUTTONDOWN            = 0x0207,
		WM_MBUTTONUP              = 0x0208,
		WM_MBUTTONDBLCLK          = 0x0209,
		WM_MOUSEWHEEL             = 0x020A,
		WM_XBUTTONDOWN            = 0x020B,
		WM_XBUTTONUP              = 0x020C,
		WM_XBUTTONDBLCLK          = 0x020D,
		WM_PARENTNOTIFY           = 0x0210,
		WM_ENTERMENULOOP          = 0x0211,
		WM_EXITMENULOOP           = 0x0212,
		WM_NEXTMENU               = 0x0213,
		WM_SIZING                 = 0x0214,
		WM_CAPTURECHANGED         = 0x0215,
		WM_MOVING                 = 0x0216,
		WM_DEVICECHANGE           = 0x0219,
		WM_MDICREATE              = 0x0220,
		WM_MDIDESTROY             = 0x0221,
		WM_MDIACTIVATE            = 0x0222,
		WM_MDIRESTORE             = 0x0223,
		WM_MDINEXT                = 0x0224,
		WM_MDIMAXIMIZE            = 0x0225,
		WM_MDITILE                = 0x0226,
		WM_MDICASCADE             = 0x0227,
		WM_MDIICONARRANGE         = 0x0228,
		WM_MDIGETACTIVE           = 0x0229,
		WM_MDISETMENU             = 0x0230,
		WM_ENTERSIZEMOVE          = 0x0231,
		WM_EXITSIZEMOVE           = 0x0232,
		WM_DROPFILES              = 0x0233,
		WM_MDIREFRESHMENU         = 0x0234,
		WM_IME_SETCONTEXT         = 0x0281,
		WM_IME_NOTIFY             = 0x0282,
		WM_IME_CONTROL            = 0x0283,
		WM_IME_COMPOSITIONFULL    = 0x0284,
		WM_IME_SELECT             = 0x0285,
		WM_IME_CHAR               = 0x0286,
		WM_IME_REQUEST            = 0x0288,
		WM_IME_KEYDOWN            = 0x0290,
		WM_IME_KEYUP              = 0x0291,
		WM_MOUSEHOVER             = 0x02A1,
		WM_MOUSELEAVE             = 0x02A3,
		WM_CUT                    = 0x0300,
		WM_COPY                   = 0x0301,
		WM_PASTE                  = 0x0302,
		WM_CLEAR                  = 0x0303,
		WM_UNDO                   = 0x0304,
		WM_RENDERFORMAT           = 0x0305,
		WM_RENDERALLFORMATS       = 0x0306,
		WM_DESTROYCLIPBOARD       = 0x0307,
		WM_DRAWCLIPBOARD          = 0x0308,
		WM_PAINTCLIPBOARD         = 0x0309,
		WM_VSCROLLCLIPBOARD       = 0x030A,
		WM_SIZECLIPBOARD          = 0x030B,
		WM_ASKCBFORMATNAME        = 0x030C,
		WM_CHANGECBCHAIN          = 0x030D,
		WM_HSCROLLCLIPBOARD       = 0x030E,
		WM_QUERYNEWPALETTE        = 0x030F,
		WM_PALETTEISCHANGING      = 0x0310,
		WM_PALETTECHANGED         = 0x0311,
		WM_HOTKEY                 = 0x0312,
		WM_PRINT                  = 0x0317,
		WM_PRINTCLIENT            = 0x0318,
		WM_HANDHELDFIRST          = 0x0358,
		WM_HANDHELDLAST           = 0x035F,
		WM_AFXFIRST               = 0x0360,
		WM_AFXLAST                = 0x037F,
		WM_PENWINFIRST            = 0x0380,
		WM_PENWINLAST             = 0x038F,
		WM_APP                    = 0x8000,
		WM_USER                   = 0x0400,
 
		// For Windows XP Balloon messages from the System Notification Area
		NIN_BALLOONSHOW			  = 0x0402,
		NIN_BALLOONHIDE			  = 0x0403,
		NIN_BALLOONTIMEOUT		  = 0x0404,
		NIN_BALLOONUSERCLICK	  = 0x0405
	}
 
 
	// FUNZIONI PER AGGANCIO HOOK A FINESTRE
 
	public class HookEventArgs : EventArgs
	{
		public int HookCode;    // Hook code
		public IntPtr wParam;   // WPARAM argument
		public IntPtr lParam;   // LPARAM argument
	}
 
 
	// Hook Types  
	public enum HookType : int
	{
		WH_JOURNALRECORD = 0,
		WH_JOURNALPLAYBACK = 1,
		WH_KEYBOARD = 2,
		WH_GETMESSAGE = 3,
		WH_CALLWNDPROC = 4,
		WH_CBT = 5,
		WH_SYSMSGFILTER = 6,
		WH_MOUSE = 7,
		WH_HARDWARE = 8,
		WH_DEBUG = 9,
		WH_SHELL = 10,
		WH_FOREGROUNDIDLE = 11,
		WH_CALLWNDPROCRET = 12,        
		WH_KEYBOARD_LL = 13,
		WH_MOUSE_LL = 14
	}
 
	public struct CWPRETSTRUCT
	{
		public IntPtr lResult;
		public IntPtr lParam;
		public IntPtr wParam;
		public uint message;
		public IntPtr hwnd;
	} 
 
	public class LocalWindowsHook
	{
		// Internal properties
		protected IntPtr m_hhook = IntPtr.Zero;
		protected HookProc m_filterFunc = null;
		protected HookType m_hookType;
 
		// Event delegate
		public delegate void HookEventHandler(object sender,  HookEventArgs e);
 
		// Event: HookInvoked 
		public event HookEventHandler HookInvoked;
		protected void OnHookInvoked(HookEventArgs e)
		{
			if (HookInvoked != null)
				HookInvoked(this, e);
		}
 
 
		// Class constructor(s)
		public LocalWindowsHook(HookType hook)
		{
			m_hookType = hook;
			m_filterFunc = new HookProc(this.CoreHookProc); 
		}
 
		public LocalWindowsHook(HookType hook, HookProc func)
		{
			m_hookType = hook;
			m_filterFunc = func; 
		}        
 
 
		// Default filter function
		public int CoreHookProc(int code, IntPtr wParam, IntPtr lParam)
		{
			if (code < 0)
				return User32.CallNextHookEx(m_hhook, code, wParam, lParam);
 
			// Let clients determine what to do
			HookEventArgs e = new HookEventArgs();
			e.HookCode = code;
			e.wParam = wParam;
			e.lParam = lParam;
			OnHookInvoked(e);
 
			// Yield to the next hook in the chain
			return User32.CallNextHookEx(m_hhook, code, wParam, lParam);
		}
 
		// Install the hook
		public void Install()
		{
			m_hhook = User32.SetWindowsHookEx(m_hookType, 
											  m_filterFunc, 
											  IntPtr.Zero, 
											  System.Threading.Thread.CurrentThread.ManagedThreadId);
		}
 
		// Uninstall the hook
		public void Uninstall()
		{
			User32.UnhookWindowsHookEx(m_hhook); 
		}
	}
		
	// ****************************************************************
 
	// CBT hook actions
	public enum CbtHookAction : int
	{
		HCBT_MOVESIZE = 0,
		HCBT_MINMAX = 1,
		HCBT_QS = 2,
		HCBT_CREATEWND = 3,
		HCBT_DESTROYWND = 4,
		HCBT_ACTIVATE = 5,
		HCBT_CLICKSKIPPED = 6,
		HCBT_KEYSKIPPED = 7,
		HCBT_SYSCOMMAND = 8,
		HCBT_SETFOCUS = 9
	}
 
 
	public class CbtEventArgs : EventArgs
	{
		public IntPtr Handle;			// Win32 handle of the window
		public string Title;			// caption of the window
		public string ClassName;		// class of the window
		public bool IsDialogWindow;		// whether is a popup dialog
	}
 
 
	#region Class LocalCbtHook
	public class LocalCbtHook : LocalWindowsHook
	{
		// Event delegate
		public delegate void CbtEventHandler(object sender, CbtEventArgs e);
 
		// Events 
		public event CbtEventHandler WindowCreated;
		public event CbtEventHandler WindowDestroyed;
		public event CbtEventHandler WindowActivated;
 
		// Internal properties
		protected IntPtr m_hwnd = IntPtr.Zero;
		protected string m_title = "";
		protected string m_class = "";
		protected bool m_isDialog = false;
 
 
		// Class constructor(s)
		public LocalCbtHook()
			: base(HookType.WH_CALLWNDPROCRET)
		{
			this.HookInvoked += new HookEventHandler(CbtHookInvoked);
		}
 
		public LocalCbtHook(HookProc func)
			: base(HookType.WH_CALLWNDPROCRET, func)
		{
			this.HookInvoked += new HookEventHandler(CbtHookInvoked);
		}
 
		// Handles the hook event
		private void CbtHookInvoked(object sender, HookEventArgs e)
		{
			IntPtr wParam = e.wParam;
			IntPtr lParam = e.lParam;
 
			CWPRETSTRUCT msg = (CWPRETSTRUCT)Marshal.PtrToStructure(lParam, typeof(CWPRETSTRUCT));
 
			CbtHookAction code = (CbtHookAction)msg.message;
 
			// Handle hook events (only a few of available actions)
			switch (code)
			{
				case CbtHookAction.HCBT_CREATEWND:
					HandleCreateWndEvent(wParam, lParam, msg);
					break;
				case CbtHookAction.HCBT_DESTROYWND:
					HandleDestroyWndEvent(wParam, lParam, msg);
					break;
				case CbtHookAction.HCBT_ACTIVATE:
					HandleActivateEvent(wParam, lParam, msg);
					break;
			}
 
			return;
		}
 
 
		// Handle the CREATEWND hook event
		private void HandleCreateWndEvent(IntPtr wParam, IntPtr lParam, CWPRETSTRUCT msg)
		{
			// Cache some information
			UpdateWindowData(wParam, msg);
 
			// raise event
			OnWindowCreated();
		}
 
 
		// Handle the DESTROYWND hook event
		private void HandleDestroyWndEvent(IntPtr wParam, IntPtr lParam, CWPRETSTRUCT msg)
		{
			// Cache some information
			UpdateWindowData(wParam, msg);
 
			// raise event
			OnWindowDestroyed();
		}
 
 
		// Handle the ACTIVATE hook event
		private void HandleActivateEvent(IntPtr wParam, IntPtr lParam, CWPRETSTRUCT msg)
		{
			// Cache some information
			UpdateWindowData(wParam, msg);
 
			// raise event
			OnWindowActivated();
		}
 
 
		// Read and store some information about the window
		private void UpdateWindowData(IntPtr wParam, CWPRETSTRUCT msg)
		{
			// Cache the window handle
			m_hwnd = msg.hwnd;
 
			// Cache the window's class name
			StringBuilder sb1 = new StringBuilder();
			sb1.Capacity = 40;
			User32.GetClassName(m_hwnd, sb1, 40);
			m_class = sb1.ToString();
 
			// Cache the window's title bar
			StringBuilder sb2 = new StringBuilder();
			sb2.Capacity = 256;
			User32.GetWindowText(m_hwnd, sb2, 256);
			m_title = sb2.ToString();
 
			// Cache the dialog flag
			m_isDialog = (m_class == "#32770");
		}
 
		// Helper functions that fire events by executing user code
		protected virtual void OnWindowCreated()
		{
			if (WindowCreated != null)
			{
				CbtEventArgs e = new CbtEventArgs();
				PrepareEventData(e);
				WindowCreated(this, e);
			}
		}
		protected virtual void OnWindowDestroyed()
		{
			if (WindowDestroyed != null)
			{
				CbtEventArgs e = new CbtEventArgs();
				PrepareEventData(e);
				WindowDestroyed(this, e);
			}
		}
		protected virtual void OnWindowActivated()
		{
			if (WindowActivated != null)
			{
				CbtEventArgs e = new CbtEventArgs();
				PrepareEventData(e);
				WindowActivated(this, e);
			}
		}
 
 
		// Prepare the event data structure
		private void PrepareEventData(CbtEventArgs e)
		{
			e.Handle = m_hwnd;
			e.Title = m_title;
			e.ClassName = m_class;
			e.IsDialogWindow = m_isDialog;
		}
 
		#endregion
	}
 }

 

 

 

Message 11 of 17
cadmannj
in reply to: elliottpd11

Well done to the previous answers.

 

Sounds like you were after the command AECFILEOPENMESSAGE, which I dont know if you had in your version of AutoCAD...

 

As part of AutoCAD 2015, there is now a command set that has worked for me on a similar issue for copying/pasting, including:

AECOBJECTCOPYMESSAGE (enter)

(type"NO", enter)

 

its description reads 'Display courtesy message when copying AEC objects into a newer version drawing [ Yes No ] <Yes>:', meaning Yes is default.

 

I have added this related info because in my search for this similar issue I ended up here, and I guess some other people might too.

NOTE: you cant change this 'in' the problem drawing/s, but they can be open at the time (just open a new drawing, use the command, close the new drawing)

Message 12 of 17

My new laptop at home is running WIN10 and ACAD2018

I have the save options in the ACAD2018 set to save as 2013 to match the save as options in my office workstation; WIN7 / ACAD2015

I just tried running the AECFILEOPENMESSAGE command, but was told t his was not allowed.

"Command not allowed because drawing contains objects from a newer version of this application."

except that should not be true since all files saved at my laptop are 2013

 

what gives, the AEC popup.

OK, SO I reread your post and opened up another drawing and yes, it gave the prompt for yes/no,

however, going back to the 'problem ' drawing, still has the same pointless alert

AEC MIXED OBJECTS POPUP.jpgdoes not stop anything I'm doing but delays it while I click the stupid alert out of my way

Message 13 of 17

AEC content does not "save down" like DWG file format.  You can save down to 2013 DWG file format, but the AEC content would still be 2018 format.

 

This is common to all the vertical products and many third-party ones too.

----------------------------------
If you are going to fly by the seat of your pants, expect friction burns.
"I don't know" is the beginning of knowledge, not the end.


Message 14 of 17

Do you want to keep these AEC objects?

If not purge the AEC dictionaries before Save.

 

        public static void PurgeAecDict(Database db)
        {
            if (db == null)
                throw new System.Exception($"Invalid Argument: {nameof(db)} IS NULL");

            using (var tr = db.TransactionManager.StartTransaction())
            {
                var prevDimscale = db.Dimscale;

                var aecDictNames = GetAecDict(db);
                if (aecDictNames != null)
                {
                    foreach (var dictName in aecDictNames)
                        DeleteDictionary(db, dictName);
                 }
                if (db.Dimscale != prevDimscale)
                    db.Dimscale = prevDimscale;
                tr.Commit();
            }
        }
        public static List<string> GetAecDict(Database db)
        {
            List<string> aecDictNames = null;

            if (db == null)
                throw new System.Exception($"Invalid Argument: {nameof(db)} IS NULL");

            using (var tr = db.TransactionManager.StartTransaction())
            {
                var dictNames = GetDictionariesNames(db);

                aecDictNames = dictNames.Where(n => n.StartsWith("AEC_",StringComparison.OrdinalIgnoreCase)).ToList();
                
                tr.Commit();
            }
            return aecDictNames;
        }
        public static List<string> GetDictionariesNames(Database db)
        {
            List<string> dictNames = null;

            if (db == null)
                throw new System.Exception($"Invalid Argument: {nameof(db)} IS NULL");

            using (var tr = db.TransactionManager.StartTransaction())
            {
                var nod = (DBDictionary)tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead);
                dictNames = new List<string>();
                foreach (DBDictionaryEntry de in nod)
                    dictNames.Add(de.Key);

                tr.Commit();
            }
            return dictNames;
        }

 

        public static void DeleteDictionary(Database db, string dictName)
        {
            if (db == null)
                throw new System.Exception($"Invalid Argument: {nameof(db)} IS NULL");

            if (string.IsNullOrWhiteSpace(dictName))
                throw new System.Exception($"Invalid Argument: {nameof(dictName)} IS NULL");

            using (var tr = db.TransactionManager.StartTransaction())
            {
                var nod = (DBDictionary)tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead);
                if (nod.Contains(dictName))
                {
                    var dictId = nod.GetAt(dictName);
                    if (!dictId.IsNull)
                    {
                        var dict = (DBObject)tr.GetObject(dictId, OpenMode.ForWrite);
                        dict.Erase();
                    }
                }
                tr.Commit();
            }
            return;
        }
Message 15 of 17

I found something resembling the aws file at the following location 

 

C:\Program Files\Autodesk\AutoCAD 2018\UserDataCache\Support\Profiles\

 

It did not contain a subheading called <HideableDialogs>

so nowhere to add a child node

 

Message 16 of 17
SENL1362
in reply to: brian.j.albrecht

The contents of the FixedProfile.aws looks like the picture below.
(The Hideable dialogs may also be appended to an exported Profile (*.arg))

You can get AutoCAD to create the section HideableDialog as follows:

1. Create an Acad.lsp somewhere in you're search path.

2. Start AutoCAD. It will ask for Loading Acad.lsp once for each drawing or...
Select the "Always perform my current choice".
3. Close AutoCAD. AutoCAD will save changes to files and registry only when closed normally.

 

 

image.png

Message 17 of 17
hamed.j
in reply to: elliottpd11

I HAVE THIS MESSAGE POPPING U P WHEN I OPEN THE CAD. DO NOT KNOW HOW TO DISABLE IT. IT WAS ABOUT HAVING PERSIAN FONT SCRIPTS OR FONT READ NOW IT SHOWS UP DON'T KNOW HOW TO DISABLE IT. 
WILL SOMEONE KNOW?

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost