У меня нет опыта работы с C# и AutoCad. Я прошел обучение по AutoLISP. Но, зная, как работает AC, я бы сказал, что лучше всего взять под контроль командную строку как задокументировано здесь.
Судя по тому, что вы сказали, я предполагаю, что вы хотели бы напечатать то, что когда-либо находится в пространстве модели; это правильно?
Хорошо, когда вы находитесь в PaperSpace, вы можете переключиться на ModelSpace, набрав ._MSPACE
в командной строке. Это позволит вам работать в MSpace, так сказать, через дыру в PSpace. Итак, если макет в PSpace не показывает все содержимое MSpace, вы можете переключиться на MSpace и ввести z
или набрать zoom
в командной строке. После этого у вас будут все параметры, доступные любому пользователю в пространстве модели с помощью инструмента zoom
(Все/Центр/Динамический...). All
вероятно, будет лучшим выбором.
Поэтому, когда пользователь нажимает вашу кнопку или вводит ваш псевдоним, вы можете автоматизировать весь процесс. Вы можете переключиться на MSpace-> увеличить все -> график -> макет (что рисовать).
Обновлять:
Теперь я понимаю, что моя ссылка не привела вас к конкретной теме, которую я имел в виду. (?)
Вот фрагмент того, что, по моему мнению, вам следует попробовать:
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
[CommandMethod("selectEntireAutoCadDrawing")]
public static void selectEntireAutoCadDrawing()
{
//This sets up your doc. Not sure if this is the way you're doing it.
//I imagine you'd probably pass the doc into the method.
Document yourACDoc = Application.DocumentManager.MdiActiveDocument;
//When your plug-in is invoked the first thing I'd do is make sure they're
//in PaperSpace
yourACDoc.SendStringToExecute("tilemode 0 ");
//Next enable ModelSpace through PaperSpace.
yourACDoc.SendStringToExecute("_mspace ");
//Now we zoom to the extents of the drawing.
//Not sure about the bools at the end. The AC documentation has it there for a
//zoom all example but AC doesn't ask any further questions after selecting the
//all or extents zoom types and doesn't elaborate on it?
yourACDoc.SendStringToExecute("._zoom _extents "/*, true, false, false*/);
//Head back to PaperSpace
yourACDoc.SendStringToExecute("_pspace ");
}
На этом этапе ваш рисунок должен быть в PaperSpace. Теперь просто продолжайте выполнять остальные действия.
Командная строка AC требует пробела, возврата или, если настроено правильно, щелчка мыши для выполнения любой команды. Поэтому между некоторыми параметрами есть пробелы. Это необходимо сделать именно так, иначе они будут интерпретированы как неизвестные команды.
Возможно, вам придется немного поиграть с ним, посмотреть справку по API или использовать другой тип масштабирования. Увеличение может стать сложным, если у вас есть несколько пользователей с разными стилями, особенно в слабо управляемом магазине. Если это будет реализовано в среде, где люди знают об ограничениях, все должно быть в порядке.
Кроме того, было бы неплохо познакомиться с AC. Вы можете использовать командную строку в качестве отладчика, поскольку она показывает список всех введенных команд и любые сообщения об ошибках. Это также позволит вам разработать дизайн заранее. Просто введите команды в AC, запишите порядок и назначение подсказок и кодируйте соответственно. Существует также способ записи действий в макрос, которым пользуются многие, не имеющие знаний в области программирования.
Удачи~
person
ChiefTwoPencils
schedule
18.01.2013