Jump to content

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


Recommended Posts

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

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

image.png.f401ec50fa5c534d4cc873104314b8f8.png

 

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

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

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

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

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

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

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 сказал:

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

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

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

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

 

  • Like 1
Link to comment
Share on other sites

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..

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

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

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

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

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

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

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

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

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

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

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

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

  • Like 2
  • Haha 1
Link to comment
Share on other sites

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

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

Спасибо.

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

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

  • Like 1
  • Haha 1
Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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 в модели к существующим, предварительно не очищая, нана не ругается.

Edited by doctorraz
  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...