...
App.DocumentCollection docMng = cad.DocumentManager;
docMng
.DocumentLockModeChanged += new App
.DocumentLockModeChangedEventHandler(docMng_DocumentLockModeChanged
);...
static void docMng_DocumentLockModeChanged(object sender, App.DocumentLockModeChangedEventArgs e) {
if (string.Compare(e.GlobalCommandName, "OPEN", true) == 0) {
e.Veto();
ShowOpenFileDialog();
}
}
...
[Rtm.CommandMethod("bush-open", Rtm.CommandFlags.Modal)]
public static void ShowOpenFileDialog() {
// using CadWin = Autodesk.AutoCAD.Windows;
CadWin
.OpenFileDialog dialog
= new CadWin
.OpenFileDialog( String.Format("[{0}] {1}", Resource.startTitle, Resource.docOpenTitle),
"", "dwg;dwt;dws;dxf", "", CadWin.OpenFileDialog.OpenFileDialogFlags.SearchPath); // It is my dialog
// using WinForms = System.Windows.Forms;
WinForms.DialogResult result = dialog.ShowDialog();
if (result != Win.Forms.DialogResult.OK)
return;
if (!dialog.Filename.ToLower().StartsWith(variables["%cadDir%"])) {
DirectoryInfo dir
= new DirectoryInfo
(Path
.GetDirectoryName(dialog
.Filename));
if (!dir.Exists)
return;
FileInfo[] files = dir.GetFiles("acad*.lsp", SearchOption.TopDirectoryOnly);
FileInfo[] files2 = dir.GetFiles("acad*.fas", SearchOption.TopDirectoryOnly);
FileInfo[] files3 = dir.GetFiles("acad*.mnl", SearchOption.TopDirectoryOnly);
String fileName = String.Empty;
try {
foreach (FileInfo
[] collection
in new FileInfo
[][] { files, files2, files3
}) { foreach (FileInfo item in collection) {
fileName = item.FullName;
item.Delete();
cad.DocumentManager.MdiActiveDocument.Editor.WriteMessage(Resource.fileDeleted, fileName);
}
}
}
catch (Exception ex) {
// using Win = System.Windows;
Win.MessageBox.Show(String.Format(Resource.disableFileOpen, fileName, ex.Message),
Resource.warning, Win.MessageBoxButton.OK, Win.MessageBoxImage.Stop);
return;
}
}
App.Document doc = cad.DocumentManager.Open(dialog.Filename.Trim()); // Problem is here! Was opened "native" dialog. Why???
if (doc != null)
cad.DocumentManager.MdiActiveDocument = doc;
}