Показать сообщение отдельно
 
Непрочитано 01.03.2009, 12:15
1 | #27
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,457


Чего-то у меня не работает - то что в 19-м =)
Почему пока не знаю.
Итакс: ИМХО код который в 19 посте неправилен с моей колокольни, потому что, как мне кажется нарушает логику автоматизации. Придумали шаблоны печати, когда ты его применяешь ты поидее должен отдавать себе отчет какой формат листа и т.д.ит.п. ты присваиваешь листу, и поидее главным является имя шаблона, а тут с подачи пользователей код обращается к имени принтера и т.д. ит.п. у мене все ето не работает патамушта принтеры сетевые и переодически выключены и их нетума, а имя шаблона понятие - идеализированное его присвоил и усе вне зависимости подключены такие принтеры к компу есть ли вналичие теже pc3 или нету, поэтому выкладываю свой вариант, он отображает СПИСОК ЛИСТОВ И ВСКОБОЧКАХ ИМЯ СТИЛЯ ПЕЧАТИ как в стандартном ДИСПЕТЧЕРЕ СТИЛЕЙ ПЕЧАТИ.
Кто понимает о чем я - милости прошу:
Используется библиотечная функция из: http://forum.dwg.ru/showthread.php?t=15661

Код:
[Выделить все]
;posted whdjr
;http://www.theswamp.org/index.php?topic=12439.msg153420#msg153420
(defun c:change_page_setups (/		adoc	     page_setups
			     dcl_id	userclick   selection
			     plotcfg
			    )
;;;
 (defun	get_page_setup (doc func / lst)
  (vlax-map-collection
   (vla-get-plotconfigurations doc)
   '(lambda (x) (setq lst (cons ((eval func) x) lst)))
  )
  (reverse lst)
 )
;;;
 (defun	getSelectedItems (tilename AllItemsList / indexes)
  (if (setq indexes (get_tile tilename))
   (setq indexes (read (strcat "(" indexes ")"))
	indexes (mapcar '(lambda (n) (nth n AllItemsList))
			indexes
		)
   )
  )
  indexes
 )
;;;
 (vl-load-com)
 (defun	on_list_pick ()
  (if (= (get_tile "page_setup_names") "")
   (mode_tile "select" 1)
   (mode_tile "select" 0)
  )
 )
 (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
 (and
  (setq page_setups (get_page_setup adoc '(lambda(x)(if (eq (vla-get-modeltype x) :vlax-false)(vla-get-name x) nil)))) ;;;_Change VVA
  (setq page_setups (vl-remove-if 'null page_setups))                                                                  ;;;_Add VVA
  (setq dcl_id (load_dialog "page_setup.dcl"))
  (new_dialog "page_setup" dcl_id)
  (start_list "page_setup_names")
  (mapcar 'add_list page_setups)
  (not (end_list))
  (action_tile "cancel" "(done_dialog 0)")
  (action_tile
   "select"
   (strcat
    "(setq selection (getSelectedItems \"page_setup_names\" page_setups))"
    "(done_dialog 1)"
   )
  )
  (action_tile "page_setup_names" "(on_list_pick)")
  (not (mode_tile "select" 1))
  (setq userclick (start_dialog))
 )
 (if dcl_id
  (unload_dialog dcl_id)
 )
 (if (and userclick selection)
  (and
   (setq plotcfg (vla-item (vla-get-plotconfigurations adoc)
			   (car selection)
		)
   )
   (vlax-map-collection
    (vla-get-layouts adoc)
    '(lambda (x)
      (if (eq (vla-get-modeltype x) :vlax-false)
       (vla-copyfrom x plotcfg)
      )
     )
   )
  )
 )
 (princ)
)
;;;posted whdjr
;;;http://www.theswamp.org/index.php?topic=12439.msg153420#msg153420
;;;Modifyed VVA 21.01.2008 http://dwg.ru/f/showthread.php?t=16792
;;Change Page Setups on Select Layout (CPSSL)
(defun c:CPSSL (/                  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
;;; *
;;; * loc:dwgru-get-user-dcl (Кандидат)
;;; *
;;; * Запрос значения у пользователя через диалоговое окно
;;; *
;;; *
;;; * 21/01/2008 Версия 0001. Редакция Владимир Азарко (VVA)
;;; ************************************************************************


  (defun loc:dwgru-get-user-dcl
         (zagl info-list multi / fl ret dcl_id msg layouts)
         ;|
* Запрос значения у пользователя через диалоговое окно
* Диалог формируется "налету"
* Параметры вызова:
    zagl - заголовок окна [String]
    info-list - список строковых значений[List of String]
    multi - t - разрешен множественный выбор, nil- нет
    
* Возвращает:
 Список выбранных строк или nil - отмена
* Пример
 (loc:dwgru-get-user-dcl "Укажите вариант" '("Первый" "Второй" "Третий") nil) ->("Первый") 
 (loc:dwgru-get-user-dcl "Укажите вариант" '("Первый" "Второй" "Третий") t) ->("Первый" "Второй") 
|;
    (if (null zagl)
      (setq zagl "Выбор")
    ) ;_ end if
    (setq fl (vl-filename-mktemp "dwgru" nil ".dcl"))
    (setq ret (open fl "w"))
    (mapcar
      '(lambda (x) (write-line x ret))
      (list "dwgru_msg : dialog { "
            (strcat "label=\"" zagl "\";")
            " :list_box {"
            "alignment=top ;"
            (if multi
              "multiple_select = true ;"
              "multiple_select = false ;"
            ) ;_ end of if
            "width=31 ;"
            (if (> (length info-list) 26)
              "height= 26 ;"
              (strcat "height= " (itoa (+ 3 (length info-list))) ";")
            ) ;_ end of if
            "is_tab_stop = false ;"
            "key = \"info\";}"
            "ok_cancel;}"
      ) ;_ end of list
    ) ;_ end of mapcar
    (setq ret (close ret))
    (if (and (null (minusp (setq dcl_id (load_dialog fl))))
             (new_dialog "dwgru_msg" dcl_id)
        ) ;_ end and
      (progn (start_list "info")
             (mapcar 'add_list info-list)
             (end_list)
             (set_tile "info" "0")
             (setq ret "0")
             (action_tile "info" "(setq ret $value)")
             (action_tile "cancel" "(done_dialog 0)")
             (action_tile "accept" " (done_dialog 1)")
             (if (zerop (start_dialog))
               (setq ret nil)
               (setq
                 ret (mapcar (function (lambda (num) (nth num info-list)))
                             (read (strcat "(" ret ")"))
                     ) ;_ end mapcar
               ) ;_ end setq
             ) ;_ end if
             (unload_dialog dcl_id)
      ) ;_ end of progn
    ) ;_ end of if
    (vl-file-delete fl)
    ret
  ) ;_ end of defun

   ;_ end of defun

;;;
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq page_setups
         (loc:get_page_setup
           adoc
           '(lambda (x)
              (if (eq (vla-get-modeltype x) :vlax-false)
                (vla-get-name x)
                nil
              ) ;_ end of if
            ) ;_ end of lambda
         ) ;_ 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"
                             page_setups
                             nil
                           ) ;_ end of loc:dwgru-get-user-dcl
           ) ;_ end of setq
           (setq
      layouts (loc:dwgru-get-user-dcl
         "Select Layouts with Shift or Ctrl"
         (acad_strlsort
    (mapcar
      '(lambda (y / x)
         (setq x (vla-item (vla-get-Layouts adoc) y))
         (strcat
    y
    (if (= (cdr (assoc 1 (entget (vlax-vla-object->ename x)))) "")
      "/___/(Нет)"
      (strcat "/___/("
       (cdr (assoc 1 (entget (vlax-vla-object->ename x))))
       
         ")"
      )
    )
 
         )
       )
      (LAYOUTLIST)
    )
         )
         t
       ) ;_ end of loc:dwgru-get-user-dcl
    ) ;_ end of setq

	   (setq layouts
    (mapcar '(lambda(x)
	       (car (dwgru-string-to-list x "/___/"))
	     
        )
     layouts
     )
   )
	   
           (setq plotcfg (vla-item (vla-get-plotconfigurations adoc)
                                   (car selection)
                         ) ;_ end of vla-item
           ) ;_ end of setq
      ) ;_ end of and
    (vlax-map-collection
      (vla-get-layouts adoc)
      '(lambda (x)
         (if (and (eq (vla-get-modeltype x) :vlax-false)
                  (member (vla-get-name x) layouts)
             ) ;_ end of and
           (vla-copyfrom x plotcfg)
         ) ;_ end of if
       ) ;_ end of lambda
    ) ;_ end of vlax-map-collection
  ) ;_ end of if
  (princ)
) ;_ end of defun
(princ "\nType Change_page_setups or CPSSL in command line")

Последний раз редактировалось Sleekka, 01.03.2009 в 13:27.
Sleekka вне форума  
 
Размещение рекламы