Как избавиться от не нужных page setup?
Реклама i
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как избавиться от не нужных page setup?

Как избавиться от не нужных page setup?

Ответ
Поиск в этой теме
Непрочитано 19.07.2008, 10:17 #1
Как избавиться от не нужных page setup?
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,990

Имею файл который содержит некое количество page setup для разных принтеров. Многие из них давно не используются, так и осталась лишняя информация в файле. Через purge не нашел способа избавиться от не нужных page setup. Можно как-то по другому это сделать?
__________________
Блог
Просмотров: 3912
 
Непрочитано 19.07.2008, 11:15
#2
ButcheR

пианист
 
Регистрация: 18.02.2008
Питер
Сообщений: 418


Левой кнопкой щёлкаешь по вкладке "Лист"-там будут настройки. Удаляешь.
ButcheR вне форума  
 
Автор темы   Непрочитано 19.07.2008, 11:34
#3
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


А ты вопрос правильно понял? Мне не лист надо удалить, а page setup.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 19.07.2008, 15:07
#4
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,345


правым кликом вызываешь это меню
Миниатюры
Нажмите на изображение для увеличения
Название: ret.jpg
Просмотров: 261
Размер:	39.5 Кб
ID:	8578  
asys вне форума  
 
Автор темы   Непрочитано 19.07.2008, 15:23
#5
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Asys, Спасибо
__________________
Блог
Red Nova вне форума  
 
Непрочитано 21.07.2008, 19:01
#6
PL


 
Регистрация: 23.11.2006
California
Сообщений: 4,750


внести в чертеж свои page setup с помощью макроса - нет проблем, а как перед этим все существующие удалить лиспом или макросом (Acad 2004)?
PL вне форума  
 
Непрочитано 21.07.2008, 19:17
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Попробуй так
Код:
[Выделить все]
(vl-load-com)
(vlax-map-collection
      (vla-get-plotconfigurations (vla-get-activedocument (vlax-get-acad-object)))
      '(lambda(x)(vl-catch-all-apply 'vla-delete (list x)))
      )
*** Добавлено
С диалогом выбора так
Код:
[Выделить все]
;;;posted VVA http://dwg.ru/f/showthread.php?p=269016
;;;Delete selected Page Setups )
(defun c:DPS ( /                  adoc
                page_setups        dcl_id
                userclick          selection
                plotcfg            loc:get_page_setup
                loc:getSelectedItems
                loc:dwgru-get-user-dcl
               )
;;;
  (defun loc:get_page_setup (doc func / lst)
    (vlax-map-collection
      (vla-get-plotconfigurations doc)
      '(lambda (x) (setq lst (cons ((eval func) x) lst)))
    ) ;_ end of vlax-map-collection
    (reverse lst)
  ) ;_ end of defun
;;;
  (defun loc:getSelectedItems (tilename AllItemsList / indexes)
    (if (setq indexes (get_tile tilename))
      (setq indexes (read (strcat "(" indexes ")"))
            indexes (mapcar '(lambda (n) (nth n AllItemsList))
                            indexes
                    ) ;_ end of mapcar
      ) ;_ end of setq
    ) ;_ end of if
    indexes
  ) ;_ end of defun
 ;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2008  DWGru Programmers Group
;;; *
;;; * _dwgru-get-user-dcl (Кандидат)
;;; *
;;; * Запрос значения у пользователя через диалоговое окно
;;; *
;;; *
;;; * 26/01/2008 Версия 0002. Редакция Владимир Азарко (VVA)
;;;              - Выход по двойному клику, если запрещен множественный выбор (multi-nil)
;;;              - Обработка нескольких колонок
;;; * 21/01/2008 Версия 0001. Редакция Владимир Азарко (VVA)
;;; ************************************************************************


;;; ************************************************************************
;;; * Library DWGruLispLib Copyright © 2008 DWGru Programmers Group
;;; *
;;; * _dwgru-get-user-dcl (Candidate)
;;; *
;;; * Inquiry of value at the user through a dialogue window
;;; *
;;; *
;;; * 26/01/2008 Version 0002. Edition Vladimir Azarko (VVA)
;;; - the Output on double a clique if the plural choice (multi-nil) is forbidden
;;; - Processing of several columns
;;; * 21/01/2008 Version 0001. Edition Vladimir Azarko (VVA)


(defun loc:dwgru-get-user-dcl (ZAGL        INFO-LIST   MULTI
                            /           FL          RET
                            DCL_ID      MAXROW      MAX_COUNT_COL
                            COUNT_COL   I           LISTBOX_HEIGHT
                            LST         _LOC_FINISH _LOC_CLEAR
                            NCOL
                           )
 ;| 
* ENGLISH
* Inquiry of value at the user through a dialogue window
* Dialogue is formed to "strike"
* the Quantity of lines on page without scrolling is set by variable MAXROW.
* It is necessary to remember, that number MAXROW increases on 3.
* the Maximum quantity of columns is set by variable MAX_COUNT_COL
* It is published
     http://dwg.ru/f/showthread.php?p=203746#post203746
* Parameters of a call:
    zagl - heading of a window [String]
    info-list - the list of line values[List of String]
    multi - t - the plural choice is resolved, nil-is not present
      
* Returns:
 The list of the chosen lines or nil - a cancelling
* the Example
 (_dwgru-get-user-dcl " Specify a variant " ' ("First" "Second" "Third") nil); _-> ("First") 
 (_dwgru-get-user-dcl " Specify a variant " ' ("First" "Second" "Third") t); _-> ("First"  "Second ")
 (_dwgru-get-user-dcl " Specify a variant "
   (progn (setq i 0 lst nil) (repeat 205 (setq lst (cons (strcat "Значение-" (itoa (setq i (1 + i)))) lst))) (reverse lst)) nil)
 (_dwgru-get-user-dcl " Specify a variant, using CTRL and SHIFT for a choice "
   (progn (setq i 0 lst nil) (repeat 205 (setq lst (cons (strcat "Значение-" (itoa (setq i (1 + i)))) lst))) (reverse lst)) t)
|;
;|
* RUS						   
* Запрос значения у пользователя через диалоговое окно
* Диалог формируется "налету"
* Количество строк на страницу без скроллинга задается переменной MAXROW.
* Необходимо помнить, что число MAXROW увеличивается на 3.
* Максимальное количество колонок задается переменной MAX_COUNT_COL
* Опубликована
     http://dwg.ru/f/showthread.php?p=203746#post203746
* Параметры вызова:
    zagl - заголовок окна [String]
    info-list - список строковых значений[List of String]
    multi - t - разрешен множественный выбор, nil- нет
    
* Возвращает:
 Список выбранных строк или nil - отмена
* Пример
 (_dwgru-get-user-dcl "Укажите вариант" '("Первый" "Второй" "Третий") nil) ;_->("Первый") 
 (_dwgru-get-user-dcl "Укажите вариант" '("Первый" "Второй" "Третий") t) ;_->("Первый" "Второй")
 (_dwgru-get-user-dcl "Укажите вариант"
   (progn (setq i 0 lst nil)(repeat 205 (setq lst (cons (strcat "Значение-" (itoa (setq i (1+ i)))) lst)))(reverse lst)) nil)
 (_dwgru-get-user-dcl "Укажите вариант, используя CTRL и SHIFT для выбора"
   (progn (setq i 0 lst nil)(repeat 205 (setq lst (cons (strcat "Значение-" (itoa (setq i (1+ i)))) lst)))(reverse lst)) t)
|;
 ;_ ===== КОНСТАНТЫ ============

  (setq MAXROW 40) ;_макc. кол-во строк без скроллинга (К нему дальше добавится еще 3 строчки)
                   ;_  max lines without scrolling (To it 3 more lines further will be added)
  (setq MAX_COUNT_COL 5) ;_максимальное количество колонок
                         ;_ ; _ a maximum quantity of columns
;;============== Локальные фунцкции START==================
;;============== Local functions START========================

  (defun _LOC_FINISH ()
    (setq I   0
          RET NIL
    ) ;_ end ofsetq
    (repeat COUNT_COL
      (setq I (1+ I))
      (setq RET (cons (cons I (get_tile (strcat "info" (itoa I)))) RET))
    ) ;_ end ofrepeat
    (setq RET (reverse RET))
    (done_dialog 1)
  ) ;_ end ofdefun
  (defun _LOC_CLEAR (NOMER)
    (setq I 0)
    (repeat COUNT_COL
      (setq I (1+ I))
      (if (/= I NOMER)
        (progn
          (start_list (strcat "info" (itoa I)))
          (mapcar 'add_list (nth (1- I) LST))
          (end_list)
        ) ;_ end ofprogn
      ) ;_ end ofif
    ) ;_ end ofrepeat
  ) ;_ end ofdefun

;;;==================== Локальные фунцкции END ==================================
;;;==================== Local functions END ==================================

;;;==================== MAIN PART ===============================================

  (if (null ZAGL)
    (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
      (setq ZAGL "Выбор")
      (setq ZAGL "Select")
    ) ;_ end ofif
  ) ;_ end if
  (if (zerop (rem (length INFO-LIST) MAXROW)) ;_Целое количество столбцов
    (setq COUNT_COL (/ (length INFO-LIST) MAXROW)) ;_Его и оставляем
    (setq COUNT_COL (1+ (fix (/ (length INFO-LIST) MAXROW 1.0)))) ;_Берем ближайшее целое
  ) ;_ end ofif
  (if (> COUNT_COL MAX_COUNT_COL)
    (setq COUNT_COL MAX_COUNT_COL)
  ) ;_Ограничиваем max количеством
  (setq LISTBOX_HEIGHT (+ 3 MAXROW)) ;_  добавляем 3 строчки для красоты и для исключения пограничного скроллинга
                                     ;_ We add 3 lines for appearance and for exception boundary scroll
  (if (and (= COUNT_COL 1) (<= (length INFO-LIST) MAXROW))
    (setq LISTBOX_HEIGHT (+ 3 (length INFO-LIST)))
  ) ;_ end ofif
  (setq I 0)
  (setq FL (vl-filename-mktemp "dwgru" NIL ".dcl"))
  (setq RET (open FL "w")
        LST NIL
  ) ;_ end ofsetq
  (mapcar '(lambda (X) (write-line X RET))
          (append (list "dwgru_get_user : dialog { "
                        (strcat "label=\"" ZAGL "\";")
                        ": boxed_row {"
                        (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
                          "label = \"Значение\";"
                          "label = \"Value\";"
                        ) ;_ end ofif
                  ) ;_ end oflist
                  (repeat COUNT_COL
                    (setq LST
                           (append
                             LST
                             (list
                               " :list_box {"
                               "alignment=top ;"
                               (if MULTI
                                 "multiple_select = true ;"
                                 "multiple_select = false ;"
                               ) ;_ end ofif
                               "width=31 ;"
                               (strcat "height= " (itoa LISTBOX_HEIGHT) " ;")
                               "is_tab_stop = false ;"
                               (strcat "key = \"info" (itoa (setq I (1+ I))) "\";}")
                             ) ;_ end oflist
                           ) ;_ end ofappend
                    ) ;_ end ofsetq
                  ) ;_ end ofrepeat
                  (list
                    "}"
                    ":row{"
                    "ok_cancel_err;}}"
                  ) ;_ end oflist
          ) ;_ end of list
  ) ;_ end of mapcar
  (setq RET (close RET))
  (if (and (null (minusp (setq DCL_ID (load_dialog FL))))
           (new_dialog "dwgru_get_user" DCL_ID)
      ) ;_ end and
    (progn
      (setq LST INFO-LIST)
      ((lambda (/ RET1 BUF ITM)

         (repeat (1- COUNT_COL)
           (setq I '-1)
           (while (and (setq ITM (car LST))
                       (< (setq I (1+ I)) MAXROW)
                  ) ;_ end ofand
             (setq BUF (cons ITM BUF)
                   LST (cdr LST)
             ) ;_ end ofsetq
           ) ;_ end ofwhile
           (setq RET1 (cons (reverse BUF) RET1)
                 BUF  NIL
           ) ;_ end ofsetq
         ) ;_ end ofrepeat
         (setq RET RET1)
       ) ;_ end oflambda
      )
      (if LST
        (setq RET (cons LST RET))
      ) ;_ end ofif
      (setq LST (reverse RET))
      (setq I 0)
      (mapcar '(lambda (THIS_LIST)
                 (if (<= (setq I (1+ I)) COUNT_COL)
                   (progn
                     (start_list (strcat "info" (itoa I)))
                     (mapcar 'add_list THIS_LIST)
                     (end_list)
                   ) ;_ end ofprogn
                 ) ;_ end ofif
               ) ;_ end oflambda
              LST
      ) ;_ end ofmapcar

      (set_tile "info1" "0")
      (setq I 0
            NCOL 1
      ) ;_ end ofsetq
      (repeat COUNT_COL
        (action_tile
          (strcat "info" (itoa (setq I (1+ I))))
          (strcat "(progn (setq Ncol "
                  (itoa I)
                  ")(if (not multi)(_loc_clear Ncol))"
                  "(if (and (not multi)(= $reason 4))(_loc_finish)))"
          ) ;_ end ofstrcat
        ) ;_ end ofaction_tile
      ) ;_ end ofrepeat
      (action_tile "cancel" "(done_dialog 0)")
      (action_tile "accept" "(_loc_finish)")
      (if MULTI
        (set_tile "error"
                  (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
                    "Используйте CTRL и SHIFT для выбора"
                    "Use CTRL and SHIFT for a choicet"
                  ) ;_ end ofif
        ) ;_ end ofset_tile
        (set_tile "error"
                  (if (= (getvar "DWGCODEPAGE") "ANSI_1251")
                    "Можно выбирать двойным щелчком"
                    "It is possible to choose double click"
                  ) ;_ end ofif
        ) ;_ end ofset_tile
      ) ;_ end ofif
      (if (zerop (start_dialog))
        (setq RET NIL)
        (progn
          (setq
            RET (apply
                  'append
                  (mapcar
                    '(lambda (ITM)
                       (setq THIS_LIST (nth (1- (car ITM)) LST))
                       (mapcar
                         (function (lambda (NUM) (nth NUM THIS_LIST)))
                         (read (strcat "(" (cdr ITM) ")"))
                       ) ;_ end ofmapcar
                     ) ;_ end oflambda
                    RET
                  ) ;_ end ofmapcar
                ) ;_ end ofapply
          ) ;_ end ofsetq

        ) ;_ end ofprogn
      ) ;_ end if
      (unload_dialog DCL_ID)
    ) ;_ end of progn
  ) ;_ end of if
  (vl-file-delete FL)
  RET
) ;_ end ofdefun



;;;
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq page_setups
         (loc:get_page_setup
           adoc
           'vla-get-name
         ) ;_ end of loc:get_page_setup
  ) ;_ end of setq
;;;_Change VVA
  (setq page_setups (vl-remove-if 'null page_setups))
;;;_Add VVA
  (if (and page_setups
           (setq selection (loc:dwgru-get-user-dcl
                             "Select Page Setups to Delete"
                             page_setups
                             t
                           ) ;_ end of loc:dwgru-get-user-dcl
           ) ;_ end of setq
	   (setq plotcfg (vla-get-plotconfigurations adoc))
      ) ;_ end of and
   (foreach item selection
     (vl-catch-all-apply '(lambda()(vla-delete (vla-item plotcfg item))))
     )
    (princ "\nNothing page setups")
  ) ;_ end of if
  (princ)
) ;_ end of defun
(princ "\nType DPS in command line")
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 21.07.2008 в 19:37.
VVA вне форума  
 
Непрочитано 21.07.2008, 20:48
#8
PL


 
Регистрация: 23.11.2006
California
Сообщений: 4,750


Отлично работает. То что надо. Большое спасибо.
А как обьединить Вашу чистку и загрузку моих page setup?
(vl-load-com)
(vlax-map-collection
(vla-get-plotconfigurations (vla-get-activedocument (vlax-get-acad-object)))
'(lambda(x)(vl-catch-all-apply 'vla-delete (list x)))
)
------------------------------------------------------------

(defun c:pgs2()
(setvar "expert" 2)
(vl-cmdf "-PSETUPIN" "C:\\CAD Support\\Blocks\\KPW-pagesetup.dwg" "*")
(setvar "expert" 0)
)
PL вне форума  
 
Непрочитано 21.07.2008, 21:16
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Склеиванием
Код:
[Выделить все]
(defun c:pgs2() 
(vl-load-com)
(vlax-map-collection
(vla-get-plotconfigurations (vla-get-activedocument (vlax-get-acad-object)))
'(lambda(x)(vl-catch-all-apply 'vla-delete (list x)))
)
(setvar "expert" 2)
(vl-cmdf "-PSETUPIN" "C:\\CAD Support\\Blocks\\KPW-pagesetup.dwg" "*")
(setvar "expert" 0)
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.07.2008, 21:45
#10
PL


 
Регистрация: 23.11.2006
California
Сообщений: 4,750


Спасибо еще раз. Бью челом об пол. Извини за скудоумие. склеивал несколько раз сам, почему то выбрасывал из твоего кода последнюю скобку.
PL вне форума  
 
Непрочитано 22.07.2008, 08:44
#11
Залётный


 
Регистрация: 15.04.2005
Сообщений: 243


Цитата:
Сообщение от PL Посмотреть сообщение
внести в чертеж свои page setup с помощью макроса - нет проблем, а как перед этим все существующие удалить лиспом или макросом (Acad 2004)?
Вопрос уже решён. Просто хочу показать фрагмент меню, которым пользуюсь многие годы:
Код:
[Выделить все]
^C^C^C(LOAD "DAPS.LSP") DAPS _.-LAYOUT R  LayoutName (command "PSETUPIN" "PAPER_4836.DWG" "*") (command "-PLOT" "N" "LayoutName" "FULL" "" "N" "Y" "N")
Здесь переименовывается Layout, удаляются все Page Setup (DAPS взят отсюда: DAPS) и делается текущим Page Setup под названием FULL. Считаю уднобным, когда во всех чертежах сделан текущим определённый Page Setup, наиболее используемый.

P.S. Директория с файлами Page setup находится на пути поиска.
Залётный вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как избавиться от не нужных page setup?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Большой размер файла, как от этого избавиться? Pac AutoCAD 51 10.12.2015 14:09
Как именно настроить параметры нового чертежа? Макс_Северянин AutoCAD 31 01.09.2010 10:16
как избавиться от такого глюка algol2003 AutoCAD 3 23.12.2004 08:52
Я не понимаю - что это и как избавиться? ТРУП AutoCAD 8 28.04.2004 20:29