Александр Ривилис пишет:Я тогда не понял чего ты добиваешься. Если тебе не нужны примитивы в пространстве модели, а нужны только те, которые были нарисованы в пространстве листа, то удали всё в пространстве модели.
Прощу прощения, если не корректно объяснил суть проблемы.
1. Требуется разбить один чертеж состоящий из несколько листов на отдельные файлы.
2. Сейчас это делается путь использования новой команды AutoCAD 2010 EXPORTLAYOUT, эта команда сохраняет активный лист в новый файл, причем сохраняет в пространство модели. В итоге получается в новом файле сохранены объекты листа, других объектов нет.
3. Требуется для каждого листа вызвать команду EXPORTLAYOUT и сохранить в отдельный файл.
4. В AIP .NET AutoCAD я не нашел как вызвать эту команду и передать ее в качестве параметра имя листа для файла. Частично получилось за счет использования SendStringToExecute.
[CommandMethod("GRF", "SaveLayouts", "MyCommandLocal", CommandFlags.Modal)]
public static void SaveLayouts() {
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) {
LayoutManager acLayoutMgr = LayoutManager.Current;
Layout acLayout = acTrans.GetObject(acLayoutMgr.GetLayoutId(acLayoutMgr.CurrentLayout), OpenMode.ForRead) as Layout;
String filename = @"D:\" + acLayout.LayoutName;
// Output the name of the current layout and its device
acDoc.Editor.WriteMessage("\nПоптыка сохранить лист: " + acLayout.LayoutName);
acDoc.SendStringToExecute("._FILEDIA 0 ", true, false, true);
acDoc.SendStringToExecute("._EXPORTLAYOUT " + filename, true, false, false);
//acDoc.SendStringToExecute("._EXPORTLAYOUT ", true, false, false);
//acDoc.SendStringToExecute("._FILEDIA 1 ", true, false, true);
}
}
При использовании этого кода есть один побочный эффект, а имменно, когда выполянется код, то AutoCAD показывает окно для ввода пусткой команды, если в ней ввести просто ввод тогда отрабатывает сохраняет лист куда надо.
Я так понял что " " пробел в конце вызова команды означает ее выполнение, хотелось бы вызвать команду EXPORTLAYOUT с параметром места сохранения листа в отдельный файл, но либо команда EXPORTLAYOUT не иммет параметров (собственно для этого изменяю режим FILEDIA), либо я что-то делаю не так.