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

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

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

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

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

АвтоКад-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- ...)
__________________
Счастливо, Алексей!
Просмотров: 2323
 
Непрочитано 27.11.2017, 10:26
#2
Сергей812


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


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

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<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
г. Норильск
Сообщений: 470


Чего-то не получается точку задать...
Оба варианта не срабатывают:
ни
(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,040


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


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


Спасибочки!

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

:-)

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

CanonicalMediaName = "USER9265"

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

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

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


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


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


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


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

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

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

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<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,844


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


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


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

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

Что касается ссылок 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,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


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


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


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

:-)

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


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


Кстати, столкнулся с интересным глюком 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,844


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


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


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


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


Сорри, конечно же (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