Расположение области печати относительно 0,0 пространства листа
Ответы
-
Привязка к координатам работает, если выбрать "Рамку"
Если выбрать "Лист" вместо "Рамка" то переброски (подвязки) области не происходит. Ну, это вроде, норм.
0 -
Спасибо, пытаюсь это программно как-то исправлять.
0 -
Покажи настройки печати
А лучше файл чертежа
Настройки печати сделаны руками или программно?
0 -
Вижу такое расположение, как на рисунке и хотелось бы программно установить настройки печати (для разных форматов).
0 -
дык устанавливай,
что сделано?
в SDK имха примеров достаточно
0 -
ну и тема не в том разделе тогда, если программно требуется
0 -
У меня нет SDK
Тему надо перенести (заново создать в другом разделе)?
Пока так:
namespace LayoutDocument
{
public partial class LayoutsDocument
{
[Teigha.Runtime.CommandMethod("LayoutDocA1")]
public void LayoutDocumentA1()
{
// Получение ссылки на активный документ
HostMgd.ApplicationServices.Document doc = HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
nanoCAD.Document comDoc = doc.AcadDocument as nanoCAD.Document;// Получение ссылки на его базу данных
Teigha.DatabaseServices.Database db = doc.Database;
// Получение ссылки на редактор активного документа
HostMgd.EditorInput.Editor ed = doc.Editor;
// Получение ссылки на активный лист документа
OdaX.AcadLayout activeLayout = comDoc.ActiveLayout;
// Получение ссылки на свойство Plot активного документа
nanoCAD.Plot plot = (nanoCAD.Plot)comDoc.Plot;
// Получение ссылки на расширенные настройки печати активного листа
nanoCAD.InanoCADPlotCustomParams customPlotSettings = plot.CustomPlotSettings[activeLayout];
try
{
// Вывод в консоль настроек до изменения
ed.WriteMessage("");
ed.WriteMessage("before: {0}:{1},{2},{3}", activeLayout.Name, activeLayout.ConfigName, activeLayout.CanonicalMediaName, activeLayout.PlotType);
// Назначение активному листу настроек печати
activeLayout.ConfigName = "Встроенный PDF-принтер";
activeLayout.CanonicalMediaName = "ISO A1";
// Добавляем область печати "Рамка" в активный лист
customPlotSettings.PlotAreas.Clear();
// Добавление области печати "Рамка" в коллекцию PlotAreas
customPlotSettings.PlotAreas.Add(new double[] { 0, 0 }, new double[] { 594, 841 });
// Проверка, установлен ли активному листу тип области печати "Рамка"
if (activeLayout.PlotType != OdaX.AcPlotType.acWindow)
activeLayout.PlotType = OdaX.AcPlotType.acWindow;
// Определяем, как выровнять область печати на листе
customPlotSettings.PaperOutMargins = 1;
customPlotSettings.Alignment = 36;
// Передаем измененные настройки в активный лист
plot.CustomPlotSettings[activeLayout] = customPlotSettings;
//// Проверка, установлен ли активному листу тип области печати "Лист"
//if (activeLayout.PlotType != OdaX.AcPlotType.acLayout)
// activeLayout.PlotType = OdaX.AcPlotType.acLayout;
// Вывод в консоль настроек после изменения
ed.WriteMessage("after: {0}:{1},{2},{3}", activeLayout.Name, activeLayout.ConfigName, activeLayout.CanonicalMediaName, activeLayout.PlotType);
ed.WriteMessage("------------------------------------------------------------");
// Сообщение пользователю
ed.WriteMessage("Настройки печати применены к активному Листу");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
// Сообщение пользователю
ed.WriteMessage("Ошибка");
}
}
}}
Но не получается то , что если изначально в Листе в настройках печати для области печати было, например, x=100, y=150, то не применяется 0,0?
Как сбросить:
0 -
смотри
у наны можно область печати настроить в двух местах
Autodesk.AutoCAD.DatabaseServices Namespace > PlotSettings Class > PlotSettings Properties > PlotOrigin Property
Доступ через PlotSettings
0 -
Спасибо, получилось:
double[] newValue = { 0, 0 };
activeLayout.PlotOrigin = newValue;0 -
Можно Вас еще попросить подсказать - какой параметр (вероятно в Plotsettings) отвечает за "Ориентацию бумаги в окне печать - книжная / альбомная"?
0 -
имя бумаги с суффиксом L и без
Landscape
Но если делать на net то Нана сам умеет подбирать бумагу под размер печатаемой области
0 -
Сделала, спасибо!
0 -
к каноническому имени CanonicalName бумаги надо добавить L будет альбом без L , будет портрет
или наоборот
размер бумаги идет парный , например
Letter
Letter_L
но в настройках печати LocaleName у них одно и то же
тут можешь посмотреть как устроено
HKEY_CURRENT_USER\SOFTWARE\Nanosoft\nanoCAD x64\23.1\Profiles\SPDS\Commands\Plot\Printer Paper Setups
0 -
Спасибо!
Делала по-другому:
activeLayout.PlotRotation = (AcPlotRotation)PlotRotation.Degrees000; (*верт)
activeLayout.PlotRotation = (AcPlotRotation)PlotRotation.Degrees090; (*гориз)
0 -
в pdf это как будет выглядеть?
Degrees090 в листе можно поставить только программно. Если пользователь захочет в настройках печати сделать поворот в ноль, то что?
имха с такой "обработкой" Реверса вполне достаточно)))
дело твое делать по нормальному или лепить вот это вот все
========
PS разбирайся с методом SetClosestMediaName, .NET
в автокад там затычка, а в нано вполне работает
0 -
Спасибо, посмотрю!
Верно, надо по-другому делать поворот
0 -
Ты еще одну печать делаешь?
Из готовых ни одна не подошла?
0 -
Сделала вроде.
*Переделала при печати ориентацию (книж / альб).
Спасибо большое за совет!
0
Разделы
- Все разделы
- 57 Общие вопросы
- 52 Работа nanoCAD в ОС Linux
- 407 Платформа nanoCAD
- 16 nanoCAD GeoniCS
- 87 nanoCAD BIM Строительство
- 42 nanoCAD Механика PRO
- 56 nanoCAD BIM Электро
- 11 nanoCAD BIM Вентиляция
- 13 nanoCAD BIM ВК
- 3 nanoCAD BIM Отопление
- 7 nanoCAD BIM СКС
- 51 nanoCAD BIM ОПС
- 2 nanoCAD Стройплощадка
- 3 nanoCAD Металлоконструкции
- 2 nanoCAD Конструкции PS
- 4 TDMS Фарватер
- 1 Облака точек
- NSR Specification
- Учебным заведениям и учащимся
- 7 nano360