Тема: Как подвинуть пространство модели на листе?

Доброго времени суток!
Проблема следующая:
иногда бывает нужно скопировать layouts в другой чертёж, чтобы распечатать их вместе, но при копировании содержимого модели в другой чертёж (с исходными координатами) может произойти наложение геометрии. Хотелось бы решить эту проблему так: вставляю внешней ссылкой весь нужный чертёж в новый, затем, если необходимо, двигаю всю внешнюю ссылку по определённой оси на определённую величину. После чего захожу во вставленный лист, указываю нужные видовые окна и пространство модели двигается на указанную величину (может быть с помощью команды -pan) во всех окнах одновременно. Возможно ли написать подобную программу? Может кто подскажет как иначе можно решить подобную проблему. Заранее очень благодарен за отзывы!

Re: Как подвинуть пространство модели на листе?

печатайте из подшивок и переносить листы не потребуется

Re: Как подвинуть пространство модели на листе?

Вопрос об экономии бумаги.
Из подшивки распечатать несколько форматов на одном листе невозможно!
Задачу решил сам! Вопрос снимается.

Re: Как подвинуть пространство модели на листе?

Антон Собинов пишет:

Задачу решил сам! Вопрос снимается.

Наверно вставили как dwg-подложку?  ;)

Re: Как подвинуть пространство модели на листе?

Да, вставил файл внешней ссылкой.
И с помощью LISPа подвигаю выбранные видовые окна.
Функция заходит в каждое видовое окно и двигает с помощью команды "-pan" пространство модели на нужную величину.
Александр, может вы подскажите как можно выполнить описанное действия без захода в видовые окна
может через ActiveX?

Re: Как подвинуть пространство модели на листе?

Не совсем допонял смысл  :D Может вам поможет то, что каждый лист можно сохранять в пространство модели (правда в отдельный файл)? Просто надо вызвать контекстное меню, нажав правой кнопкой мыши на вкладке листа и выбрать там пункт "Экспорт вкладки листа во вкладку модели"

Re: Как подвинуть пространство модели на листе?

Предпочитаю делать иначе: печатать каждый лист в dwf, и компоновать dwf-подложки в файле, отправляемом на плоттер (команда _dwfattach). По крайней мере, не будет "пересечения" слоев и прочих "прелестей"

Re: Как подвинуть пространство модели на листе?

Пекшев aka Modis пишет:

Не совсем допонял смысл
Может вам поможет то, что каждый лист можно сохранять в пространство модели (правда в отдельный файл)?

Нет, это не совсем то.
Написал следующую функцию, но не очень нравится её скорость работы.
Так вот, повторюсь: хотелось бы, чтобы функция выполнялась методом ActiveX... может будет шустрее).

;Программа перемещает пространство модели в выбранных видовых экранах
;
(defun ErrorVP (msg)    ;функция отлова ошибок
  (command)
  (setvar "CMDECHO" echo)
  (setq *error* ExError)  
  (princ)
)

(defun c:VP-Move-Sp (/ ExError echo activeVp selSet ssLen indexCount delta dst pt2 entItem idVp obj)
  (vl-load-com)
  (vla-StartUndoMark (vla-Get-ActiveDocument (vlax-Get-Acad-Object)))
  (setq ExError *error*
    *error* ErrorVP
    echo (getvar "CMDECHO")  
      activeVp (getvar "CVPORT")
    ) ;setq
  (setvar "CMDECHO" 0)
  (if
    (= (getvar "TILEMODE") 1)
    (alert "Команда не доступна в пространстве модели. Перейдите в пространство листа.")
    (progn
      (if (/= 1 activeVp)
    (alert "Команда не доступна в плавающем видовом экране. Перейдите в пространство листа.")    
    (progn
      (setq selSet     (ssget '((0 . "VIEWPORT")))
        ssLen      (sslength selSet)
        indexCount (1- ssLen)
        )                    ;setq
      (initget "X Y")
      (setq delta (getkword "\nУкажите ось смещения [X/Y] <Y>: "))
      (initget 1)
      (setq   dst (/ (getreal "\nУкажите величину смещения видового экрана (в единицах модели): ") -1))
      (if
    (= delta "Y")
    (setq pt2 (list '0.0 dst '0.0))
    (setq pt2 (list dst '0.0 '0.0))
    ) ;if
      (repeat ssLen
        (setq entItem    (ssname selSet indexCount)
          idVp         (cdr (assoc 69 (entget entItem)))
          indexCount (1- indexCount)
          obj (vlax-ename->vla-object entItem)
        ) ;setq
        (if
          (= (vlax-get-property obj 'DisplayLocked)
         :vlax-true)
          (vlax-put-property obj 'DisplayLocked :vlax-false)
          ) ;if
        (command "_MSPACE"      "_cvport"    idVp
             "_-Pan"      "0.0,0.0,0.0" pt2 "_PSPACE"
            ) ;command
        (vlax-put-property obj 'DisplayLocked :vlax-true)
      ) ;repeat
      ) ;progn
    ) ;if
      ) ;progn
    ) ;if
  (vlax-release-object obj)
  (setvar "CMDECHO" echo)
  (vla-EndUndoMark (vla-Get-ActiveDocument (vlax-Get-Acad-Object)))
  (princ)
)