doctorraz Posted September 4, 2021 Report Share Posted September 4, 2021 В принципе простой вопрос, как сменить книжную на альбомную При том, что SetPlotRotation в нано работает совсем не так , как работает в оригинале... Quote Link to comment Share on other sites More sharing options...
Robink Posted September 5, 2021 Report Share Posted September 5, 2021 А они реализовали на. Net печать? Раньше точно не работало. Только через COM. 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted September 6, 2021 Author Report Share Posted September 6, 2021 10 часов назад, Robink сказал: А они реализовали на. Net печать? Раньше точно не работало. Только через COM. Упсс, Что publish заглушка стоит я уже в курсе. А вот что больше никак на Net не печатает неожиданно((( добавлено через 6 минут С другой стороны настройка ориентации листа что в com что в нет реализована одинаково.. некорректно Rotatedegre -0 в пространстве листа не меняет альбомную на книжную, но поворот становится 0 как бэ книжная и нано с этой настройкой печатает все линиями нулевой толщины. Еще и боком((( Quote Link to comment Share on other sites More sharing options...
Robink Posted September 6, 2021 Report Share Posted September 6, 2021 //вертикальная olayt.PlotRotation = AcPlotRotation.ac180degrees; //горизонтальная olayt.PlotRotation = AcPlotRotation.ac270degrees; Я вот так задаю ориентацию Quote Link to comment Share on other sites More sharing options...
doctorraz Posted September 6, 2021 Author Report Share Posted September 6, 2021 34 минуты назад, Robink сказал: AcPlotRotation.ac180degrees В каде это книжная вверхногами (галочка перевернуть стоит) 270 это альбом вверх ногами Проблема в том, что в нано AcPlotRotation не меняет книжную альбомную, а крутит положение бумаги. А книжная альбомная в нано меняет размер бумаги добавлено через 5 минут 41 минуту назад, Robink сказал: olayt Layout крутишь? Не pageset? А в модели тогда как? Quote Link to comment Share on other sites More sharing options...
Robink Posted September 6, 2021 Report Share Posted September 6, 2021 10 минут назад, doctorraz сказал: В каде это книжная вверхногами (галочка перевернуть стоит) 270 это альбом вверх ногами Проблема в том, что в нано AcPlotRotation не меняет книжную альбомную, а крутит положение бумаги. А книжная альбомная в нано меняет размер бумаги добавлено через 5 минут Layout крутишь? Не pageset? А в модели тогда как? Да Layout. Из модели не печатаю, только с листов. 2 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted September 6, 2021 Author Report Share Posted September 6, 2021 9 минут назад, Robink сказал: Да Layout Спасибо, посмотрю Quote Link to comment Share on other sites More sharing options...
Светлана Мирончик Posted September 7, 2021 Report Share Posted September 7, 2021 В 04.09.2021 в 19:28, doctorraz сказал: В принципе простой вопрос, как сменить книжную на альбомную При том, что SetPlotRotation в нано работает совсем не так , как работает в оригинале... Через API ориентацию листа можно изменить через свойство CanonicalMediaName конкретного листа COM-документа nanoCAD. Свойство PlotRotation изменит книжный/альбомный только в листе, в пространстве модели оно изменит поворот области печати на листе, но на сам формат листа не повлияет. Прикрепляю пример на C#, как изменить формат листа через CanonicalMediaName. Эта команда изменит ориентацию листа одинаково и в пространстве модели и в листе SetPaperFormat.cs 4 1 Quote Link to comment Share on other sites More sharing options...
Robink Posted September 7, 2021 Report Share Posted September 7, 2021 Вот это "поворот". Спасибо! Quote Link to comment Share on other sites More sharing options...
doctorraz Posted September 7, 2021 Author Report Share Posted September 7, 2021 (edited) 1 час назад, Светлана Мирончик сказал: Свойство PlotRotation изменит книжный/альбомный только в листе и сделает все примитивы нулевой толщины.. Любой plotrotation который не ноль. ---- Спасибо за код ______ Теперь вопрос к ТП, как нано сопоставляет бумагу портрет/ландшафт одного размера и настроек внутри себя? Неужели нет API? В каде это решалось через plotrotation, логично предположить что, коль нанодев отступил от оригинала, то что то сделал взамен и намного круче? Edited September 7, 2021 by doctorraz Quote Link to comment Share on other sites More sharing options...
doctorraz Posted September 7, 2021 Author Report Share Posted September 7, 2021 3 часа назад, Светлана Мирончик сказал: PlotRotation изменит книжный/альбомный только в листе Кстати нет, не меняет оно книжный альбомный в листе.. Переключает виртуальный комбобокс (который нанодев забыл наверное вытащить в лист 0 90 180 270) Альбомная книжная остается по бумаге, а сама печать по плотротатион.. с артефактами в виде всех примитивов нулевой толщиной.. Бага.. однако Quote Link to comment Share on other sites More sharing options...
Светлана Мирончик Posted September 8, 2021 Report Share Posted September 8, 2021 15 часов назад, doctorraz сказал: как нано сопоставляет бумагу портрет/ландшафт одного размера и настроек внутри себя? Бумага портрет/ландшафт одного размера сопоставляются по системному названию размера бумаги. У альбомной ориентации в системном названии всегда есть символы _L, например Letter_(8.50_x_11.00_Inches) - книжный Letter_(8.50_x_11.00_Inches)_L - альбомный Возможны другие интерпретации, в зависимости от выбранного принтера, например, может быть (Альбомная)_L или _L_L, или _L6 Для того, чтобы изменить ориентацию бумаги одного размера, в API отдельного метода не предусмотрено. Для решения этой задачи нужно оперировать содержимым свойства CanonicalMediaName и пользоваться поиском в коллекции форматов бумаги, доступных при текущих настройках листа. Коллекцию можно получить методом GetCanonicalMediaNames() (возвращает массив строк) нужного листа COM-документа nanoCAD. добавлено через 9 минут 18 часов назад, doctorraz сказал: и сделает все примитивы нулевой толщины.. Любой plotrotation который не ноль. Просьба протестировать у себя мою команду, которая изменяет PlotRotation. У меня описанных проблем не возникает. SetPlotOrientation.cs 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted September 8, 2021 Author Report Share Posted September 8, 2021 (edited) 1 час назад, Светлана Мирончик сказал: протестировать Все то же самое Хотя на предосмотре печати не видно Спойлер Спойлер Дело в том, что ты крутишь лист, а я настраиваю PageSet и потом применяю его к пространству, поэтому nanoкосяк видно сразу Спойлер using System; using System.Text; using System.Diagnostics; using System.Runtime.InteropServices; using System.Collections.Specialized; //----------------- #if MC using Multicad; using Multicad.AplicationServices; using Multicad.Runtime; using Mrtm = Multicad.Runtime; using Multicad.DatabaseServices; using Multicad.DataServices; using Multicad.Geometry; using Multicad.CustomObjectBase; using Multicad.Symbols; using Multicad.Symbols.Tables; #endif #if NC using App = HostMgd.ApplicationServices; using HostMgd.ApplicationServices; using HostMgd.EditorInput; using HostMgd.Windows; using Teigha.Colors; using Teigha.DatabaseServices; using Tds = Teigha.DatabaseServices; using Teigha.Geometry; using Teigha.Runtime; using Platform = HostMgd; using PlatformDb = Teigha; using Trtm = Teigha.Runtime; using HostMgd.PlottingServices; using PltS = HostMgd.PlottingServices; using HostMgd.Publishing; using HostMgd.Internal; #else using App = Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Colors; using Autodesk.AutoCAD.DatabaseServices; using Tds = Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Windows; using Platform = Autodesk.AutoCAD; using PlatformDb = Autodesk.AutoCAD; using Trtm = Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.PlottingServices; using PltS = Autodesk.AutoCAD.PlottingServices; using Autodesk.AutoCAD.Publishing; namespace drz { public class PagSet { /// <summary> /// Тест настройки параметров печати /// </summary> [Trtm.CommandMethod("t-PagSet1")] public void tstPagSet() { App.Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; StringCollection viewsToPlot = new StringCollection(); viewsToPlot.Add("Test0"); viewsToPlot.Add("Test90"); viewsToPlot.Add("Test180"); viewsToPlot.Add("Test270"); // Create page setup based on the views PlotRotation counter = 0; using (Transaction Tx = db.TransactionManager.StartTransaction()) { ObjectId layoutId = LayoutManager.Current.GetLayoutId (LayoutManager.Current.CurrentLayout); Layout layout = Tx.GetObject(layoutId, OpenMode.ForWrite) as Layout; foreach (String viewName in viewsToPlot) { PlotSettings ps = new PlotSettings(layout.ModelType);//в активном пространстве ps.CopyFrom(layout); PlotSettingsValidator psv = PlotSettingsValidator.Current; #if NC psv.SetPlotConfigurationName(ps, "Встроенный PDF-принтер", "ISO A2 (420.00 x 594.00 мм)"); #else psv.SetPlotConfigurationName(ps, "DWF6 ePlot.pc3", "ANSI_A_(8.50_x_11.00_Inches)"); #endif psv.RefreshLists(ps); psv.SetPlotPaperUnits(ps, PlotPaperUnit.Millimeters); psv.SetCurrentStyleSheet(ps, "monochrome.ctb"); psv.SetPlotRotation(ps, counter); // https://adn-cis.org/forum/index.php?topic=10114.msg45976#msg45976 Point2d minPoint2d = new Point2d(0.0, 0.0); Point2d maxPoint2d = new Point2d(420.0, 420.0); Extents2d points = new Extents2d(minPoint2d, maxPoint2d); psv.SetPlotWindowArea(ps, points); psv.SetPlotType(ps, Tds.PlotType.Window); psv.SetUseStandardScale(ps, false); psv.SetCustomPrintScale(ps, new CustomScale(1, 1)); psv.SetPlotCentered(ps, true); ps.PrintLineweights = true; ps.PlotSettingsName = String.Format("{0}{1}", viewName, "PS"); ps.AddToPlotSettingsDictionary(db); Tx.AddNewlyCreatedDBObject(ps, true); psv.RefreshLists(ps); layout.CopyFrom(ps); counter++; } Tx.Commit(); } } } } Спойлер четко видно, что в пространстве ЛИСТА при PlotRotation !=0 все линии нулевой толщины добавлено через 5 минут С альбомной книжной разобрался Спасибо тебе.. но в CanonicalMediaName всю фантазию для портретов применили плотер None без _L или альбомная Встроенный PDF-принтер - (Альбомная) [Отправить в OneNote 16] - USER_L1...USER_L37 короче зоопарк)))) sPlot20.ini Edited September 8, 2021 by doctorraz 3 Quote Link to comment Share on other sites More sharing options...
Светлана Мирончик Posted September 8, 2021 Report Share Posted September 8, 2021 Спасибо за подробное описание бага 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted September 11, 2021 Author Report Share Posted September 11, 2021 Еще нюансик.. В листе нет комбо поворота. Но PlotRotation в листе крутить можно. Собственно хотел уточнить.. Комбо на лист второпях вытащить забыли? Или что... Quote Link to comment Share on other sites More sharing options...
Светлана Мирончик Posted September 22, 2021 Report Share Posted September 22, 2021 В 11.09.2021 в 15:51, doctorraz сказал: Комбо на лист второпях вытащить забыли? Или что... На листе он особо не нужен. Там ориентация бумаги меняется переключением Альбомный/Книжный, через API тот же эффект. С ног на голову чертеж в листе не повернуть, в отличие от пространства модели. Quote Link to comment Share on other sites More sharing options...
doctorraz Posted September 22, 2021 Author Report Share Posted September 22, 2021 4 минуты назад, Светлана Мирончик сказал: С ног на голову чертеж в листе не повернуть, в отличие от пространства модели. СПФОРМАТ не повернуть, он всегда wcs plane А вот видовые экраны и примитивы легко.. Но учитывая, КАК nanodev реализовал работу с бумагой, PlotRotation получается атавизм 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.