|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
NanoCAD - как задать область печати на LISP?
Регистрация: 10.01.2020
Сообщений: 415
|
||
Просмотров: 2242
|
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Фиг знает... Я пока остановился на командном методе, т.е.:
(command "-plot" "_y" ... детальная настройка ... "_y" "_n") иначе что-нибудь, да подглючивает :-( Что пока не смог победить, так это программно "отцентровать" область вывода (чтобы серединка пиктограммы со стрелочками на твоей картинке стала голубой). Просто опции "Центр" в команде Печати в NC23.1 нет (в NC24, говорят, уже появилась). Приходится высчитывать и задавать смещение. Зрительно "всё по центру", но квадратик всё равно остаётся серым.
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
На Хабре на тему печати есть хороший цикл статей.
Там для . NET, но пугаться не надо, печать и настройки реализованы через ActiveX, т.е. на Лиспе то же реально Эти же статьи есть в справке нанокад SDK Если вкратце, то область печати в нано может задаваться в двух местах апи, центрирование тоже. Если задавать там и там, то для печати CustomPlotSetting имеет приоритет. Печатать будет с его настройками Т. Е. если хотим как в Автокад CustomPlotSetting надо очищать, clear В CustomPlotSetting может быть задано НЕСКОЛЬКО областей печати
__________________
Мастерская СПДС Последний раз редактировалось doctorraz, 03.10.2024 в 07:06. |
||||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Цитата:
Очень нужно задать центровку чертежа при печати. Через LISP. Что-то CUSTOMPLOTSETTINGS не получается. Ни -GET-, ни тем более -PUT- ... Какой там хоть синтаксис-то? Или для центровки просто (vla-put-CenterPlot ...) достаточно будет?
__________________
Счастливо, Алексей! Последний раз редактировалось ===AAA===, 04.10.2024 в 14:47. |
|||
![]() |
|
||||
__________________
Мастерская СПДС |
||||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Для начала надо бы описание функций
(VLA-GET-CUSTOMPLOTSETTINGS) и (VLA-PUT-CUSTOMPLOTSETTINGS) найти... В доках SDK LISP nanoCAD 23.1 я только упоминание о них обнаружил. Если есть у кого - подкиньте, плиз.
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Чет я думал что ActiveX через лисп тот жэж функционал, что и через vba.. заблуждался от неведения?
Ну и писать лисп с нуля для нано это надо быть Гуру лиспа, без отладчика .. Имха vbs для этой задачи попроще, и отладчик есть. Выгоды в производительности от лисп не будет. Даже net не будет значительно быстрее именно на печати
__________________
Мастерская СПДС Последний раз редактировалось doctorraz, 05.10.2024 в 20:31. |
||||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Цитата:
их вызове НК не ругается на их отсутствие. Но какой параметр вызова для той же (VLA-GET-CUSTOMPLOTSETTINGS) нужно подсовывать, чтобы она не возвращала ошибку - пока не понятно...
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
в акаде - да. Они вроде вообще одновременно в нем появились - vla* функции и VBA. А нано, насколько понимаю, использует стороннюю библиотеку ODA для работы с закрытым форматом *.dwg, а реализация интерпретатора лиспа у них своя - и что и как у них реализовано, насколько полно или где-то "заглушки" функций еще стоят...
|
|||
![]() |
|
||||
Регистрация: 10.01.2020
Сообщений: 415
|
Ну что-же, благодаря doctorraz (спасибо за ссылку на пост на хабре) и ===AAA=== (спасибо за пост про VLA-SET_CUSTOM...) я поковырявшись и проанализровав решил-таки проблему с программной установкой областей печати в nanocad (заранее установить в настройках принтер и область печати рамкой) :
Код:
Последний раз редактировалось name02, 06.10.2024 в 10:38. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
А какой функцией можно получить текущий заданный размер
бумаги плоттера (который "A1" или какой-нибудь "ISO A4") ? Типа: (setq acdobj (vlax-get-acad-object)) (setq acddoc (vla-get-ActiveDocument acdobj)) (vla-get-Чего-Нибудь-Написать-Сюда (vla-get-ActiveLayout acddoc))
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
__________________
Мастерская СПДС Последний раз редактировалось doctorraz, 22.10.2024 в 15:41. |
||||
![]() |
|
||||
Регистрация: 10.01.2020
Сообщений: 415
|
Цитата:
|
|||
![]() |
|
||||
__________________
Мастерская СПДС |
||||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
А можно вот с этого места подробнее?
Цитата:
Задать "нужный мне формат" - тоже. Задача - узнать, а что же там было назначено изначально? Добавлено №1 Эта информация ведь в чертеже где-то хранится... Может быть - вообще системная переменная какая-нибудь? Добавлено №2 Если глянуть на DXF, то можно увидеть секцию примерно такого вида: Цитата:
формата бумаги. Осталось только до него добраться. Добавлено №3 Видимо, как-так... (setq ad (vla-get-activedocument (vlax-get-acad-object) )) (setq al (vla-get-activelayout ad)) (setq pl (VLA-GET-PLOT ad)) (setq custom_pl (VLA-GET-CUSTOMPLOTSETTINGS pl al)) Далее смотрим дамп (vlax-dump-object custom_pl t) и видим: Цитата:
__________________
Счастливо, Алексей! Последний раз редактировалось ===AAA===, 23.10.2024 в 08:49. Причина: Добавлено |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Что выяснилось.
1. Для одного и того же драйвера (скажем, того же самого HP Designjet T1300 HPGL2) Автокад и наноКАД имеют разную наборку пользовательских имён бумаги. Какие-то из них могут совпадать (допустим "А1"), а какие-то (допустим "А1 (альбомная)") в наборке НК будут отсутствовать. 2. Если мы откроем в НК файл, работу с которым мы закончили в АК с назначением формата листа на отсутствующий в НК "А1 (альбомная)", то при печати НК заменит его на какой-то из своих форматов. Возможно - не самый оптимальный. Но что-то он туда назначит. Пока всё логично. Но! 3. Если мы откроем такой файл в НК и попытаемся программно узнать, а что же НК назначил вместо отсутствующего у него "А1 (альбомная)", то в active_mn_local (см. пост #18 выше) будет пустота, т.е. "". А всё потому, что в active_mn_canon будет какая-то "левизна". 4. Попробуем сейчас зайти в окно печати и "зрительно" увидеть, что НК всё-таки назначил какой-нибудь "DIN Oversize L1" и снова повторить код из пост #18. Всё замечательно, active_mn_local = "DIN Oversize L1" Вывод: пока НК не получит "волшебного пенделя", правду он не скажет. Имейте это в виду при адаптации своих программ для АС под НК.
__________________
Счастливо, Алексей! |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Плагин создания кабельных линий и генерации КЖ раздела КИПиА. Протестировано на AutoCAD 2015...2022 и офис 2013...2019. NanoCAD 23 | petro_f | Готовые программы | 244 | 26.09.2024 10:25 |
Как настроить область печати при публикации PDF из подшивки. | XoRys | AutoCAD | 15 | 18.06.2015 08:31 |
Lisp простой нумератор для Nanocad | gizmo_zx | LISP | 2 | 17.03.2015 11:50 |
"Съезжает" область печати в пространстве листа! | Marv | AutoCAD | 1 | 08.12.2012 17:12 |
Можно ли нескольким листам задать стиль печати | Maiia | AutoCAD | 1 | 19.10.2012 16:00 |