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

nanoCAD не принимает программные настройки


Рекомендуемые сообщения

Если в модели вручную задать рамку печати и применить к модели, затем программно сформировать  другие настройки печати и применить к модели (layout.CopyFrom(ps ))

то при открытии печати нано выдает такое предупреждение

image.png.f401ec50fa5c534d4cc873104314b8f8.png

 

Собственно вопрос, как этого избежать?

Подавить появление окна, что бы применялись программные настройки или что то надо подкрутить в конфиге layout?

----------------

И еще вопрос, при задании рамки в модели и применении ее к пространству, то как бы мы не крутили модель, на превью печати картинка всегда будет как сохранили.

Есть ли доступ к этой фиче программно?

Изменено пользователем doctorraz
Ссылка на сообщение
Поделиться на другие сайты
22 часа назад, doctorraz сказал:

Собственно вопрос, как этого избежать?

 

Это из-за коллекции 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.CustomPlotSettings[layout];
            customPlotSettings.PlotAreas.Clear();
            plot.CustomPlotSettings[layout] = customPlotSettings;
        }
    }

 

22 часа назад, doctorraz сказал:

как бы мы не крутили

Что именно изменяется в модели и не видно на превью?

Ссылка на сообщение
Поделиться на другие сайты
10 минут назад, Светлана Мирончик сказал:

Нужно ее очистить в CustomPlotSettings перед тем, как копировать в лист новые настройки области печати.

Спасибо, вычитал в твоем коде. Получилось

Net Api к CustomPlotSettings (PlotAreas ) нет и не будет???

-----------

13 минут назад, Светлана Мирончик сказал:

Что именно изменяется в модели и не видно на превью?

Наоборот, если выставить вид и PlotArea Add через UI, то потом как модель не крути, на превьюшке будет вид примененный к листу. Крутая фича!!!

Собственно в связи с этим вопрос:

Подсмотрел в метаданных

PlotArea Add(object ptMin, object ptMax);

Судя по названию точки на вход принимает???, но какие Point2d или Point3d, object  смущает...

В каких координатах подсовывать?

В общем, как в лист программно дописать PlotArea?

--------------

И последний (сегодня) вопрос

Plot на вход принимает PlotSetting ?? естественно при активном нужном пространстве?

Или не морочиться и настраивать печать в Layout, один фих пакетной печати нет и не предвидится((

добавлено через 6 минут
Спойлер

image.thumb.png.89531de5c12c936bbed04f737b4b6513.png

 

Ссылка на сообщение
Поделиться на другие сайты
56 минут назад, doctorraz сказал:

Net Api к CustomPlotSettings (PlotAreas ) нет и не будет???

Пока нет, будет ли - не могу однозначно ответить.

 

57 минут назад, doctorraz сказал:

PlotArea Add(object ptMin, object ptMax);

Судя по названию точки на вход принимает???, но какие Point2d или Point3d, object  смущает...

принимает массив double[] с двумя числами-координатами: первое - X, второе - Y. Координаты нужно преобразовывать в Display Coordinate System.

 

35 минут назад, doctorraz сказал:

В общем, как в лист программно дописать PlotArea?

Был топик по областям печати, я выкладывала пример, как добавить "Рамку" и другие области печати программно через API nanoCAD:

 

52 минуты назад, doctorraz сказал:

Plot на вход принимает PlotSetting ??

Если речь о nanoCAD.Plot и Teigha.DatabaseServices.PlotSettings, то - нет. У nanoCAD.Plot другой тип данных для наборов параметров: OdaX.IAcadPlotConfiguration. Он так просто не преобразовывается в PlotSettings..

 

Ссылка на сообщение
Поделиться на другие сайты
33 минуты назад, Светлана Мирончик сказал:

принимает массив double[] с двумя числами-координатами: первое - X, второе - Y. Координаты нужно преобразовывать в Display Coordinate System.

Спасибо, а я му Point совал))), удивлялся, чего не жрет)))

34 минуты назад, Светлана Мирончик сказал:

Был топик по областям печати, я выкладывала пример, как добавить "Рамку" и другие области печати программно через API nanoCAD:

Ага видел, уже почти наизусть

34 минуты назад, Светлана Мирончик сказал:

Он так просто не преобразовывается в PlotSettings..

Жаль, хотел с минимальными затратами и под АК publish и для нано plot

Не беда, ветки уже разделились, как выяснилось нано умеет кое что, что АК и не снилось, ну и наоборот соответственно.

Будем использовать сильные стороны обоих кадов

Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Светлана Мирончик сказал:

принимает массив double[]

Спасибо.

принимает, и вид от ПСК не зависит..

Разбираюсь с очередностью передачи параметров и сорока нано_точками выравнивания... затейники.. енум нафих... и так все понятно)))

Ссылка на сообщение
Поделиться на другие сайты
18 часов назад, Светлана Мирончик сказал:

принимает массив double[] с двумя числами-координатами: первое - X, второе - Y. Координаты нужно преобразовывать в Display Coordinate System.

похоже все несколько сложнее(((

double[3]

В листе координаты совпадают с GetWindowToPlot и Z=0

 

Спойлер

image.png.11f4d619f554cd222f77a6e0a6236e7e.png

 

 

Спойлер

Sub PlotArea()
'Для успеха эксперимента
 пространстве настраиваем область печати РАМКОЙ
'задаем границы и давим применить
'Потом стартуем этот скрипт

'********************

Set objApp = GetObject(, "nanoCAD.Application") 'цепляемся к нане, или AutoCAD
Set comDoc = objApp.ActiveDocument
Set ActiveLayout = comDoc.ActiveLayout
Set Plot = comDoc.Plot
Set CustomPlotSettings = Plot.CustomPlotSettings(ActiveLayout)

Dim ptMinWin, ptMinPa, ptMinGet 'шоб рядом в отладке были
Dim ptMaxWin, ptMaxPa, ptMaxGet

'point Win
ActiveLayout.GetWindowToPlot ptMinWin, ptMaxWin

Set pa = CustomPlotSettings.PlotAreas
Set pa0 = CustomPlotSettings.PlotAreas(0)
offPa = pa0.Offset
 
 'point PA
 ptMaxPa = pa0.ptMax
 ptMinPa = pa0.ptMin

'Stop
pa.Clear
Plot.CustomPlotSettings(ActiveLayout) = CustomPlotSettings

'если добавить PlotAreas
pa.Add ptMinPa, ptMaxPa ' с теми же точками спрашивает какую область(((

Plot.CustomPlotSettings(ActiveLayout) = CustomPlotSettings

Stop
'get point
comDoc.Activate
AppActivate (objApp.Caption)
ptMinGet = comDoc.Utility.GetPoint
ptMaxGet = comDoc.Utility.GetPoint
Stop
'point Get
ptMinGet = comDoc.Utility.TranslateCoordinates(ptMinGet, 0, 2, False)
ptMaxGet = comDoc.Utility.TranslateCoordinates(ptMaxGet, 0, 2, False)
Stop
Debug.Print "ptMinWin: X"; vbTab; ptMinWin(0); vbTab; "Y "; vbTab; ptMinWin(1)
Debug.Print "ptMinGet: X"; vbTab; ptMinGet(0); vbTab; "Y "; vbTab; ptMinGet(1)
Debug.Print "ptMinPa:  X"; vbTab; ptMinPa(0); vbTab; "Y "; vbTab; ptMinPa(1); vbTab; "Z "; vbTab; ptMinPa(2)
Debug.Print "*******************"
Debug.Print "ptMaxWin: X"; vbTab; ptMaxWin(0); vbTab; "Y "; vbTab; ptMaxWin(1)
Debug.Print "ptMaxGet: X"; vbTab; ptMaxGet(0); vbTab; "Y "; vbTab; ptMaxGet(1)
Debug.Print "ptMaxPa:  X"; vbTab; ptMaxPa(0); vbTab; "Y "; vbTab; ptMaxPa(1); vbTab; "Z "; vbTab; ptMaxPa(2)
Stop

End Sub

 

 

 

если удалить PlotAreas и потом добавить с теми же координатами, то

image.png.f941f6e6fec1244007a6a335181c9cc8.png

------------------------

Короче либо я не не понимаю, как... либо опять недопилено и брошено

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, doctorraz сказал:

Короче либо я не не понимаю, как... либо опять недопилено и брошено

Да, что-то намудрили. Надо разбираться, почему так происходит

Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Светлана Мирончик сказал:

Надо разбираться, почему так происходит

:prey:

--------------

Мощная штука эта PlotArea.

С ее помощью можно (пофих в какой ПСК и как повернута модель) задавать параметры печати= план МСК и не разворачивая чертеж печатать *для СПФОРМАТ весьма актуально)

 

офф

А там пакетная печать подтянется, остальные баги выгребутся,  продажи нано пойдут вертикально в гору, он вытеснит оригинал с рынка....Нью Васюки, центр вселенной...

 

upd

щас проверил

если напрямую писать координаты

---

Set pa = CustomPlotSettings.PlotAreas
Set pa0 = CustomPlotSettings.PlotAreas(0)

 

comDoc.Activate
AppActivate (objApp.Caption)
ptMinGet = comDoc.Utility.GetPoint
ptMaxGet = comDoc.Utility.GetPoint

'point Get
ptMinGet = comDoc.Utility.TranslateCoordinates(ptMinGet, 0, 2, False)
ptMaxGet = comDoc.Utility.TranslateCoordinates(ptMaxGet, 0, 2, False)

 

pa0.ptMax = ptMaxGet
pa0.ptMin = ptMinGet

Plot.CustomPlotSettings(ActiveLayout) = CustomPlotSettings

 

то координаты к модели применяются и нана не ругается, но...

PlotAreas должна уже быть (походу  PlotAreas.Add че то некорректно делает)

непонятно что это за координаты в модели??!!!

--------------

кстати в пространстве листа после PlotAreas.Add нана не ругается и координаты применяет исправно,

при том, что если изменить только координаты PlotAreas , то координаты PlotAreas и GetWindowToPlot не бьются (естественно) , на превьюшке показывает по заданным координатам т.е. PlotAreas

если PlotAreas.Clear то область печати определяется SetWindowToPlot, на превьюшке 

т.е. в листе работает как задумано, PlotAreas есть, печатаем по ней, нет.... печатаем по WindowToPlot

и координаты с dcs копейка в копейку.

-----

А вот с моделью ой(((

---------------------

Спойлер

image.thumb.png.9e507b2e22691df35950fc7acad6698c.png

 

------------------

upd

еще нюанс, если добавлять PlotAreas в модели к существующим, предварительно не очищая, нана не ругается.

Изменено пользователем doctorraz
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Расскажите друзьям

    Нравится Официальный форум компании Нанософт? Расскажите друзьям!
×
×
  • Создать...