| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как программно задать точку начала области печати?

Как программно задать точку начала области печати?

Ответ
Поиск в этой теме
Непрочитано 27.11.2017, 09:25 #1
Как программно задать точку начала области печати?
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 451

Всем добрый день.

АвтоКад-2016 (русский)

"Точка начала области печати" - это смещение по X и Y,
показываемые в нижнем-левом углу диалогового окна
"Печать".

Вот фрагмент кода программы:

Код:
[Выделить все]
   (setq namlay (vla-item (vla-get-Layouts
       (vla-get-activedocument (vlax-get-acad-object)))(getvar "CTAB")))
Если, допустим, нужно изменить ориентацию листа, пишем что-то вроде

Код:
[Выделить все]
 (vla-put-PlotRotation namlay 1)
А какую строку нужно написать, чтобы начальная точка изменилась на (0 0)
или, скажем, (5 5) ?

Да, через (command "_.plot" и далее параметры) поменять её можно,
но хотелось бы сделать это через конструкцию (vla- ...) или (vlax- ...)
__________________
Счастливо, Алексей!
Просмотров: 2308
 
Непрочитано 27.11.2017, 10:26
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Если не ошибаюсь навскидку, то это PlotOrigin.
Сергей812 вне форума  
 
Непрочитано 27.11.2017, 10:34
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


===AAA===, Посмотри dump объекта. Там будут все свойства и методы.
Код:
[Выделить все]
(vlax-dump-object
  (vla-item (vla-get-layouts
              (vla-get-activedocument (vlax-get-acad-object))
            ) ;_ end of vla-get-Layouts
            (getvar "CTAB")
  ) ;_ end of vla-item
  t
) ;_ end of vlax-dump-Object
Цитата:
_$ (vlax-dump-Object l t)
; IAcadLayout: Параметры печати и видимые свойства пространства модели или блока пространства листа.
; Значения свойств:
; Application (RO) = #<VLA-OBJECT IAcadApplication 0000000140013318>
; Block (RO) = #<VLA-OBJECT IAcadPaperSpace 00000000273760e8>
; CanonicalMediaName = "User256"
; CenterPlot = 0
; ConfigName = "Universal Document Converter"
; Document (RO) = #<VLA-OBJECT IAcadDocument 0000000026fef698>
; Handle (RO) = "30C4"
; HasExtensionDictionary (RO) = -1
; ModelType (RO) = 0
; Name = "Лист1."
; ObjectID (RO) = 43
; ObjectID32 (RO) = 43
; ObjectName (RO) = "AcDbLayout"
; OwnerID (RO) = 44
; OwnerID32 (RO) = 44
; PaperUnits = 1
; PlotHidden = 0
; PlotOrigin = (5.0 5.0)
; PlotRotation = 1
; PlotType = 5
; PlotViewportBorders = 0
; PlotViewportsFirst = -1
; PlotWithLineweights = -1
; PlotWithPlotStyles = -1
; ScaleLineweights = 0
; ShowPlotStyles = 0
; StandardScale = 0
; StyleSheet = "МИП.stb"
; TabOrder = 1
; UseStandardScale = 0
; ViewToPlot = ""
; Поддерживаемые методы:
; CopyFrom (1)
; Delete ()
; GetCanonicalMediaNames ()
; GetCustomScale (2)
; GetExtensionDictionary ()
; GetLocaleMediaName (1)
; GetPaperMargins (2)
; GetPaperSize (2)
; GetPlotDeviceNames ()
; GetPlotStyleTableNames ()
; GetWindowToPlot (2)
; GetXData (3)
; RefreshPlotDeviceInfo ()
; SetCustomScale (2)
; SetWindowToPlot (2)
; SetXData (2)
T
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.11.2017, 11:06
#4
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Чего-то не получается точку задать...
Оба варианта не срабатывают:
ни
(vla-put-PlotOrigin namlay (list 10 10))
ни
(vla-put-PlotOrigin namlay 10 10)

В каком виде-то ей этот аргумент "скормить" нужно?
Или функция по-другому выглядеть должна?
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Непрочитано 27.11.2017, 11:09
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Официальной справкой принципиально не пользуетесь?
Сергей812 вне форума  
 
Автор темы   Непрочитано 27.11.2017, 11:29
#6
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Спасибочки!

Просто ожидал, что параметр должен передаваться в виде простого списка.

:-)

Ну и, если не затруднит, как сопоставить форматы бумаги типа

CanonicalMediaName = "USER9265"

из форматов принтера какому-нибудь "человеческому"

Oversize A1 (альбомная)

?
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Непрочитано 27.11.2017, 11:43
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


ищите по CanonicalMediaName. Пример на .Net
Сергей812 вне форума  
 
Автор темы   Непрочитано 27.11.2017, 12:13
#8
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Да "канонические"-то у меня есть... А вот где хранятся соответствующие им
"человеческие" имена - непонятно.

Т.е. у принтеров могут быть и "человекоподобные" названия форматов, типа
А1_(841.00_х_594.00)_MM
а могут быть (вперемешку) и USERхххх.

При этом сам Автокад видит, что конкретному USERхххх сопоставлен какой-
нибудь, к примеру, "Оверсайз А1 вертикальный" - вот прямо так, русскими буквами.
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Непрочитано 27.11.2017, 12:20
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


примеры на Lisp

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
А вот где хранятся соответствующие им
"человеческие" имена - непонятно.
Посмотри vla-GetLocaleMediaName

----- добавлено через ~12 мин. -----
===AAA===, Здесь в 2016 так же тебе давали ссылку на набор ф-ций Plot Device functions for AutoLISP и GetPlotDevices.lsp Free AutoLISP for AutoCAD
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 27.11.2017 в 19:18. Причина: исправлена ссылка. см #10
VVA вне форума  
 
Непрочитано 27.11.2017, 13:02
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


VVA, первая ссылка никуда не ведет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.11.2017, 14:54
#11
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Всем добрый вечер!

Спасибо, в части "точки начала области печати" всё получилось.

Что касается ссылок 2016 года, то, конечно, я их смотрел, но ни

(vlax-dump-object ...) ни (vla-put-PlotOrigin ...)

я там не нашёл.

Собственно, мне и нужно-то лишь изредка название одной-другой функции,
ибо несколько отдалился я от программирования (от слова "почти совсем")
в силу изменения характера работы. Так что сорри, ежели повторюсь в
вопросах, которые для местных старожилов известны назубок.

Еще раз всем спасибо, насчёт (vla-GetLocaleMediaName ...) почитаю обязательно.

----- добавлено через ~37 мин. -----
Да, (vla-GetLocaleMediaName ...) именно то, что нужно.

А какая функция - наоборот - устанавливает "форматку" не по "каноническому", типа

(vla-put-CanonicalMediaName namlay "USER9265")

а по "человеческому" (оно же - медианейм) названию?

что-то, видимо, типа (vla-put-LocaleMediaName ... )

Подскажите, плиз.
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Непрочитано 27.11.2017, 19:35
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


===AAA===, Как вариант сделать список из "человеческого" и "канонического" названия. По "человеческому" найти соответствующее "каноническое" и уже устанавливать его с помощью vla-put-canonicalmedianame
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.11.2017, 20:52
#13
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Да, такой алгоритм действий у меня тоже наметился (исходя из предположения,
что порядок следования имён в "каноническом" и "человеческом" списках
совпадают - просто ещё не успел это проверить), но была надежда, что есть
функция, названия которой мне не ведомо.

:-)

Всё равно спасибо!
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Автор темы   Непрочитано 01.12.2017, 15:38
#14
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


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

Заключается в том, что ориентация листа через эту функцию меняется
не для всех "форматок". У меня, например, установленный "А0"
легко меняет ориентацию через диалоговые окна Автокада и не
меняется через вызов PlotOrigin.

Для других форматок А4 ... А1 всех модификаций - всё нормально.

Т.е. нестабильненько-с... Что есть самая неприятная вещь при
программировании.
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Непрочитано 01.12.2017, 15:53
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


PlotOrigin и PlotRotation, кажется, немного разные вещи
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.12.2017, 16:24
#16
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


а почему не используете наборы параметров листов? Или печать из модели идет?
Сергей812 вне форума  
 
Автор темы   Непрочитано 01.12.2017, 16:24
#17
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Сорри, конечно же (vla-put-PlotRotation ...)

:-)

----- добавлено через ~3 мин. -----
> а почему не используете наборы параметров листов?

Да проблемы, как таковой, в общем-то и нет, т.к. всё легко делается через
(command-s "_-plot" ... параметры ...)

Просто разбирался с альтернативными вариантами.
__________________
Счастливо, Алексей!
===AAA=== на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как программно задать точку начала области печати?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить точку привязки начала размера AutoCAD на VBA? МишаИнженер Программирование 22 02.09.2022 18:03
AutoLisp не получается задать точку при помощи переменных granit201z LISP 1 11.10.2014 13:32
Hp laserjet 5035 MFP смещение чертежа на формате A3 при печати из Autocad 2011 и 2013 merdoc2003 AutoCAD 6 18.04.2013 23:59
Не отображаются граница области печати и заданный формат на вкладке лист. shartal AutoCAD 14 05.04.2012 10:03
Печать свойств стилей печати Inner AutoCAD 11 19.03.2011 14:05