Перейти к содержанию

Светлана Мирончик

Клуб разработчиков
  • Публикаций

    24
  • Зарегистрирован

  • Посещение

  • Победитель дней

    5

Весь контент Светлана Мирончик

  1. Расширенные настройки печати в nanoCAD являются дополнением к базовым настройкам. Через пользовательский интерфейс nanoCAD невозможно увидеть, какая настройка является базовой, а какая – расширенной, однако при работе с API nanoCAD разница видна четко. В качестве примера можно взять настройку выравнивания области печати на листе. Если бы существовала возможность использовать только базовую настройку, то область печати удавалось бы выровнять лишь по центру листа. Расширенная настройка позволяет выравнивать область печати не только по центру, но и по сторонам листа. В этой статье будут
  2. Эта коллекция входит в CustomPlotSettings, о ней будет упомянуто в следующей статье
  3. В nanoCAD при настройке параметров печати необходимо выбрать область печати. Если оставить настройку по умолчанию, может быть напечатано совсем не то, что требовалось. В этой статье мы разберемся, как работать с областью печати через API nanoCAD. https://habr.com/ru/company/nanosoft/blog/579140/
  4. Из настроек принтеров в API только "общие" настройки, которые встречаются у всех встроенных принтеров. Первыми двумя через API нельзя управлять и системными переменными тоже, только через UI. Последняя галочка - это свойство RunPDFApp в CustomPlotSettings: HostMgd.ApplicationServices.Document doc = HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument; nanoCAD.Document comDoc = doc.AcadDocument as nanoCAD.Document; OdaX.IAcadLayout activeLayout = comDoc.ActiveLayout; nanoCAD.Plot plot = (nanoCAD.Plot)comDoc.Plot; nanoC
  5. На листе он особо не нужен. Там ориентация бумаги меняется переключением Альбомный/Книжный, через API тот же эффект. С ног на голову чертеж в листе не повернуть, в отличие от пространства модели.
  6. Alignment относится к CustomPlotSettings, будет отдельная статья по этим настройкам
  7. При подготовке чертежа к печати необходимо настраивать большое количество параметров: принтер, формат бумаги, масштаб, область печати и т.д. В nanoCAD все необходимые для этого параметры объединены в наборы параметров листов. Однажды созданный набор можно применять в разных документах и разных листах, что позволит значительно сократить время подготовки документа к печати. В этой статье мы рассмотрим, как работать с наборами параметров листов через API nanoCAD. https://habr.com/ru/company/nanosoft/blog/565514/
  8. Пока нет, будет ли - не могу однозначно ответить. принимает массив double[] с двумя числами-координатами: первое - X, второе - Y. Координаты нужно преобразовывать в Display Coordinate System. Был топик по областям печати, я выкладывала пример, как добавить "Рамку" и другие области печати программно через API nanoCAD: Если речь о nanoCAD.Plot и Teigha.DatabaseServices.PlotSettings, то - нет. У nanoCAD.Plot другой тип данных для наборов параметров: OdaX.IAcadPlotConfiguration. Он так просто не преобразовывается в PlotSettings..
  9. Это из-за коллекции PlotAreas. Нужно ее очистить в CustomPlotSettings перед тем, как копировать в лист новые настройки области печати. Через COM: private void CleanPlotAreas() { HostMgd.ApplicationServices.Document doc = HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument; nanoCAD.Document comDoc = doc.AcadDocument as nanoCAD.Document; nanoCAD.Plot plot = (nanoCAD.Plot)comDoc.Plot; foreach (OdaX.IAcadLayout layout in comDoc.Layouts) { nanoCAD.InanoCADPlotCustomParams customPlotSettings = plot.CustomPlotSetti
  10. Обернуть в try-catch, тогда не будет стопориться на этой ошибке и в конце выдаст все форматы бумаги pdf-принтеров Еще такой код сработает без ошибок с тем же результатом: [Teigha.Runtime.CommandMethod("GetCanonicalNames")] public void GetPDFPlotters() { //Получение ссылки на активный документ HostMgd.ApplicationServices.Document doc = HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument; nanoCAD.Document comDoc = doc.AcadDocument as nanoCAD.Document; //Получение ссылки на редактор активного документа HostMgd.EditorI
  11. https://habr.com/ru/company/nanosoft/blog/564564/ Печать чертежей – это ответственный и трудоемкий процесс. Чертеж, напечатанный в неверном масштабе или с неверной толщиной линий может стать причиной ошибки производства, так как будет неверно прочитан. Порой на настройку параметров печати и саму печать уходит значимая часть рабочего времени. Поэтому многие проектировщики, знакомые с программированием, обращаются к программному интерфейсу САПР. Это хорошая возможность уменьшить влияние человеческого фактора и сократить время, которое приходится тратить на работу с чертежами. Этой
  12. Бумага портрет/ландшафт одного размера сопоставляются по системному названию размера бумаги. У альбомной ориентации в системном названии всегда есть символы _L, например Letter_(8.50_x_11.00_Inches) - книжный Letter_(8.50_x_11.00_Inches)_L - альбомный Возможны другие интерпретации, в зависимости от выбранного принтера, например, может быть (Альбомная)_L или _L_L, или _L6 Для того, чтобы изменить ориентацию бумаги одного размера, в API отдельного метода не предусмотрено. Для решения этой задачи нужно оперировать содержимым свойства CanonicalMediaName и пользоваться поис
  13. Через API ориентацию листа можно изменить через свойство CanonicalMediaName конкретного листа COM-документа nanoCAD. Свойство PlotRotation изменит книжный/альбомный только в листе, в пространстве модели оно изменит поворот области печати на листе, но на сам формат листа не повлияет. Прикрепляю пример на C#, как изменить формат листа через CanonicalMediaName. Эта команда изменит ориентацию листа одинаково и в пространстве модели и в листе SetPaperFormat.cs
  14. Тоже сталкивалась с таким предупреждением. У меня оно возникало, когда я пыталась добавить сразу несколько областей печати "Рамка" на лист. Если добавлять одну рамку методом setwindowtoplot, то все нормально работало. Такая разница в поведении этого кода в nanoCAD и AutoCAD скорее всего связана с доработкой в nanoCAD, позволяющей добавлять несколько областей печати "Рамка" на один лист. Вот пример на С# по областям печати, может поможет. На 21м nanoCAD работает P.S. нужны библиотеки hostmgd.dll и ncauto.dll SetPlotArea.cs
  15. Здесь еще неправильный порядок действий. Метод SetWindowToPlot должен быть вызван до того, как plotType назначено значение acWindow. Без отработки SetWindowToPlot область печати "Рамка" не применится к plotType
  16. В строке ThisDrawing.ModelSpace.Layout.PlotType = acExtents вместо acExtents должно быть acWindow. И еще кривая работа этого кода может быть связана с тем, что координаты точек нужно перевести в Display coordinate system.
×
×
  • Создать...