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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Нужно пронумеровать листы

Нужно пронумеровать листы

Ответ
Поиск в этой теме
Непрочитано 24.01.2006, 13:02 #1
Нужно пронумеровать листы
Даниил
 
Регистрация: 19.01.2006
Сообщений: 16

Есть файл, в нем несколько листов в пространстве модели, в штампе на каждом листе в месте простановки номера листа стоит блок с атрибутом "ЛИСТ", можно ли пронумеровать все листы (автоматически не выбирая каждый атрибут) если все листы точно распологаются друг за другом по Х ?????????? И если можно занесением общего количества листов (блоков с атрибутами "ЛИСТ") в штамп на первом листе (тоже блок с атрибутом "ЛИСТОВ")????

Наверное многово хочу, но если кто знает подскажите!!!!!
Просмотров: 13537
 
Непрочитано 24.01.2006, 13:44
#2
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Всё это просто как угол дома реализуется.
1. Выбери блоки штампа.
2. Отсортируй по Х
3. Расставь номера листов, заменой атрибута "ЛИСТ"
4. В первом листе замени атрибут "ЛИСТОВ"
Alan вне форума  
 
Автор темы   Непрочитано 24.01.2006, 14:19
#3
Даниил


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


может есть какая-нибудь програмка для этого, чтоб нажав кнопку на панели все пронумеровалось
Даниил вне форума  
 
Непрочитано 24.01.2006, 15:45
#4
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Даниил, так всё что я писал, надо делать на ЛИСП.
Кнопка дело последнее.
Alan вне форума  
 
Непрочитано 24.01.2006, 16:47
#5
VVA

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


Как-то поднималась тема по поводу нумерации свай. Переделанная программа под штампы. Тэги атрибутов блоков ЛИСТ и ЛИСТОВ
Маркирует по Х или У оси.
Код:
[Выделить все]
(defun C:NLIST (/ adoc att_list axss 
        blk_list num opt sort_list fuzz sort_blk_list blk_obj pt buf buf1 count what blk1) 
  (vl-load-com) 
  (setq fuzz 1) ;_Допуск для сортировки
  (setq   adoc (vla-get-activedocument 
          (vlax-get-acad-object) 
        ) 
  ) 
  (if (and 
   (= (getvar "tilemode") 0) 
   (= (getvar "cvport") 1) 
      ) 
    (setq acsp (vla-get-paperspace adoc)) 
    (setq acsp (vla-get-modelspace adoc)) 
  )  
(if (ssget (list (cons 0 "INSERT") 
;;;         (cons 2 "ШТАМП") ;_Имя блока штампа (раскомментировать)
         (cons 66 1))) 
(progn 
(setvar "attreq" 1) 
(vla-endundomark adoc) 
(vla-startundomark adoc) 
(initget 4) 
(setq num 1) ;_Начальный номер
(setq axss (vla-get-activeselectionset adoc)) 
(vlax-for a axss 
      (setq blk_list (cons a blk_list))) 
    
(initget "X Y") 
(setq opt (getkword "\n\t >> Сортировать блоки по [X оси/Y оси] < X > : ")) 
(if (not opt)(setq opt "X"))
(setq count 1)
(while (setq blk_obj (car blk_list))

  (setq buf nil)
  (setq buf1 nil)
  (setq pt (vlax-get blk_obj 'Insertionpoint))
  (if (= opt "X")(setq WHAT cadr)(setq WHAT car))
  (setq buf (vl-remove-if-not ;_Оставляем все что совпадает
	      (function
		(lambda (e1)
		  (equal (WHAT pt)(WHAT (vlax-get e1 'Insertionpoint)) fuzz)))
	      blk_list
	      ))
  (setq buf1 (vl-remove-if ;_Оставляем все что не совпадает
	       (function
		 (lambda (e1)
		   (equal (WHAT pt)(WHAT (vlax-get e1 'Insertionpoint)) fuzz)))
	      blk_list
	      ))
    (setq count (1+ count))
    (setq blk_list buf1)
    (setq sort_blk_list (append sort_blk_list (list buf)))
  );_while
(setq sort_blk_list
 (vl-sort sort_blk_list
    (function
      (lambda (e1 e2)
	(< (WHAT (vlax-get (car e1) 'Insertionpoint)) 
        (WHAT (vlax-get (car e2) 'Insertionpoint)))))))
(setq count 1)
  (setq blk_list nil)
  (foreach blk_list sort_blk_list
    
       (cond ((= opt "X") 
       (setq sort_list  (vl-sort blk_list 
      (function (lambda (e1 e2) 
             (< (car (vlax-get e1 'Insertionpoint)) 
            (car (vlax-get e2 'Insertionpoint)))))))) 
        ((= opt "Y") 
       (setq sort_list  (vl-sort blk_list 
      (function (lambda (e1 e2) 
             (< (cadr (vlax-get e1 'Insertionpoint)) 
            (cadr (vlax-get e2 'Insertionpoint)))))))) 
       (T (progn (princ "\nНеверная опция сортировки\n") 
       (exit) 
       (princ)))) 
(foreach blk_obj sort_list 
(if (and (vlax-property-available-p blk_obj 'Hasattributes) 
    (vlax-read-enabled-p blk_obj) 
    (vlax-write-enabled-p blk_obj)) 
      (progn 
  (setq att_list (vlax-invoke blk_obj 'Getattributes)) 
  (foreach at att_list 
    (if (eq (vla-get-tagstring at) "ЛИСТ") 
      (progn
   (if (= num 1)(setq blk1 blk_obj)) ;_Запоминаем 1-й штамп	
   (vla-put-textstring at (itoa num)) 
   (vla-update at) 
   (vla-update blk_obj)))))) 
  (setq num (1+ num)))
  (setq count (1+ count))  
);_foreach blk_list
(if (and blk1
    (vlax-property-available-p blk1 'Hasattributes) 
    (vlax-read-enabled-p blk1) 
    (vlax-write-enabled-p blk1)) 
      (progn 
        (setq att_list (vlax-invoke blk1 'Getattributes)) 
	  (foreach at att_list 
	    (if (eq (vla-get-tagstring at) "ЛИСТОВ") 
	      (progn
 	       (vla-put-textstring at (itoa (1- num))) 
	       (vla-update at) 
	       (vla-update blk1))))))
(vla-clear axss) 
(vla-delete axss) 
(vlax-release-object axss))) 
(vla-regen adoc acactiveviewport) 
(vla-endundomark adoc)
(princ) 
) 
(prompt "\nВ командной строке набери NLIST \n") 
(princ)
VVA вне форума  
 
Непрочитано 24.01.2006, 17:08
#6
pyatifan


 
Регистрация: 29.10.2005
Нижегородская обл.
Сообщений: 219
<phrase 1=


Я бы на твоём месте всётаки воспользовался подшивкой. Она для этого и предназначена
pyatifan вне форума  
 
Автор темы   Непрочитано 25.01.2006, 07:40
#7
Даниил


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


Спасибо за програмку, всё работает!!!

Можно сделать так чтоб не приходилось выбирать объекты, а сразу определялись блоки с атрибутом ЛИСТ и нумеровались по оси X или Y
Даниил вне форума  
 
Автор темы   Непрочитано 25.01.2006, 08:00
#8
Даниил


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


Как уйти от такой ситуации, у меня на первом листе блок с атрибутами ЛИСТ и ЛИСТОВ расположен выше по Y,а все остальные на одном уровне, можно чтоб по Y не имело значения какая координата, сортировалось только в зависимости от X !!!!

Заранее спасибо!!!
Даниил вне форума  
 
Автор темы   Непрочитано 25.01.2006, 08:03
#9
Даниил


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


Вот пример
[ATTACH]1138165402.dwg[/ATTACH]
Даниил вне форума  
 
Непрочитано 25.01.2006, 10:04
#10
VVA

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


Код:
[Выделить все]
(defun C:NLIST (/ adoc att_list axss blk_list num sort_blk_list blk_obj blk1 space) 
  (vl-load-com) 
  (setq   adoc (vla-get-activedocument 
          (vlax-get-acad-object) 
        ) 
  ) 
  (if (and 
   (= (getvar "tilemode") 0) 
   (= (getvar "cvport") 1) 
      )
    (setq acsp (vla-get-paperspace adoc) space (cons 410 (vla-get-name (vla-get-ActiveLayout adoc)))) 
    (setq acsp (vla-get-modelspace adoc) space (cons 410 "Model")) 
  )  
(if (ssget "_X" (list (cons 0 "INSERT")
         '(-4 . "<OR")		 
            (cons 2 "ЛИСТ ЛИСТОВ") ;_Имя блока штампа 
            (cons 2 "Лист") ;_Имя блока штампа 
	'(-4 . "OR>")
        space ;_Модель или лист
         (cons 66 1))) 
(progn 
;(setvar "attreq" 1) 
(vla-endundomark adoc) 
(vla-startundomark adoc) 
(initget 4) 
(setq num 1) ;_Начальный номер 
(setq axss (vla-get-activeselectionset adoc)) 
(vlax-for a axss 
      (setq blk_list (cons a blk_list))) 
    
(setq sort_blk_list 
 (vl-sort blk_list 
    (function 
      (lambda (e1 e2) 
   (< (car (vlax-get e1 'Insertionpoint)) 
        (car (vlax-get e2 'Insertionpoint)))))))
(foreach blk_obj sort_blk_list 
(if (and (vlax-property-available-p blk_obj 'Hasattributes) 
    (vlax-read-enabled-p blk_obj) 
    (vlax-write-enabled-p blk_obj)) 
      (progn 
  (setq att_list (vlax-invoke blk_obj 'Getattributes)) 
  (foreach at att_list
    (if (eq (strcase (vla-get-tagstring at)) "ЛИСТОВ")
      (setq blk1 blk_obj));_Запоминаем штамп с атрибутом листов
    (if (eq (strcase (vla-get-tagstring at)) "ЛИСТ") 
      (progn 
   (vla-put-textstring at (itoa num)) 
   (vla-update at) 
   (vla-update blk_obj)))))) 
  (setq num (1+ num)))
(if blk1 
      (progn 
        (setq att_list (vlax-invoke blk1 'Getattributes)) 
     (foreach at att_list 
       (if (eq (vla-get-tagstring at) "ЛИСТОВ") 
         (progn 
           (vla-put-textstring at (itoa (1- num))) 
          (vla-update at) 
          (vla-update blk1)))))) 
(vla-clear axss) 
(vla-delete axss) 
(vlax-release-object axss))) 
(vla-regen adoc acactiveviewport) 
(vla-endundomark adoc)
(prompt (strcat "\nНумерация завершена. Всего "(itoa (1- num)) " элементов в пространстве " (cdr space)))
(princ) 
) 
(prompt "\nВ командной строке набери NLIST \n") 
(princ)
VVA вне форума  
 
Автор темы   Непрочитано 25.01.2006, 10:27
#11
Даниил


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


Огромное спасибо, то что надо

А почему не нумеруется, если слой в котором находятся блоки заблокирован, это можно исправить?
Даниил вне форума  
 
Непрочитано 25.01.2006, 14:56
#12
VVA

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


Код:
[Выделить все]
(defun C:NLIST (/ adoc att_list axss blk_list num sort_blk_list blk_obj blk1 space lays lay lock) 
  (vl-load-com) 
  (setq   adoc (vla-get-activedocument 
          (vlax-get-acad-object) 
        ) 
  ) 
  (if (and 
   (= (getvar "tilemode") 0) 
   (= (getvar "cvport") 1) 
      ) 
    (setq acsp (vla-get-paperspace adoc) space (cons 410 (vla-get-name (vla-get-ActiveLayout adoc)))) 
    (setq acsp (vla-get-modelspace adoc) space (cons 410 "Model")) 
  )  
(if (ssget "_X" (list (cons 0 "INSERT") 
         '(-4 . "<OR")       
            (cons 2 "ЛИСТ ЛИСТОВ") ;_Имя блока штампа 
            (cons 2 "Лист") ;_Имя блока штампа 
   '(-4 . "OR>") 
        space ;_Модель или лист 
         (cons 66 1))) 
(progn 
;(setvar "attreq" 1) 
(vla-endundomark adoc) 
(vla-startundomark adoc) 
(initget 4) 
(setq num 1) ;_Начальный номер
(setq lays (vla-get-layers adoc))
(setq axss (vla-get-activeselectionset adoc)) 
(vlax-for a axss 
      (setq blk_list (cons a blk_list))) 
    
(setq sort_blk_list 
 (vl-sort blk_list 
    (function 
      (lambda (e1 e2) 
   (< (car (vlax-get e1 'Insertionpoint)) 
        (car (vlax-get e2 'Insertionpoint))))))) 
(foreach blk_obj sort_blk_list
 (setq lay (vla-item lays (vla-get-layer blk_obj)))
 (if (= (vla-get-lock lay) :vlax-true)
   (progn (vla-put-lock lay :vlax-false) (setq lock (cons lay lock))))
(if (and (vlax-property-available-p blk_obj 'Hasattributes) 
    (vlax-read-enabled-p blk_obj) 
    (vlax-write-enabled-p blk_obj)) 
      (progn 
  (setq att_list (vlax-invoke blk_obj 'Getattributes)) 
  (foreach at att_list 
    (if (eq (strcase (vla-get-tagstring at)) "ЛИСТОВ") 
      (setq blk1 blk_obj));_Запоминаем штамп с атрибутом листов 
    (if (eq (strcase (vla-get-tagstring at)) "ЛИСТ") 
      (progn
	 (setq AAT at)
	 (setq lay (vla-item lays (vla-get-layer at)))
         (if (= (vla-get-lock lay) :vlax-true)
	   (progn (vla-put-lock lay :vlax-false) (setq lock (cons lay lock))))
   (vla-put-textstring at (itoa num)) 
   (vla-update at) 
   (vla-update blk_obj)))))) 
  (setq num (1+ num))) 
(if blk1 
      (progn 
        (setq att_list (vlax-invoke blk1 'Getattributes)) 
     (foreach at att_list 
       (if (eq (vla-get-tagstring at) "ЛИСТОВ") 
         (progn
	 (setq lay (vla-item lays (vla-get-layer at)))
         (if (= (vla-get-lock lay) :vlax-true)
	   (progn (vla-put-lock lay :vlax-false) (setq lock (cons lay lock))))
           (vla-put-textstring at (itoa (1- num))) 
          (vla-update at) 
          (vla-update blk1))))))
(if lock (foreach x lock (vla-put-lock x :vlax-true)))
(vla-clear axss) 
(vla-delete axss) 
(vlax-release-object axss))) 
(vla-regen adoc acactiveviewport) 
(vla-endundomark adoc) 
(prompt (strcat "\nНумерация завершена. Всего "(itoa (1- num)) " элементов в пространстве " (cdr space))) 
(princ) 
) 
(prompt "\nВ командной строке набери NLIST \n")
VVA вне форума  
 
Автор темы   Непрочитано 26.01.2006, 07:44
#13
Даниил


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


Спасибо!!!!!
Даниил вне форума  
 
Непрочитано 29.04.2008, 21:30
#14
Red Nova

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


Вот нашел ваш форум, другого про нумеруцию листов нету. А если чертеж не в модели а на листах находится, и при этом:
Допустим имеем 10 листов, с похожими наименованиями, и поочередными номерами страниц. При это не обязательно чтобы первый лист начинался с 1, он может и с другой цифры начаться, ведь часть проекта может быть и в другом файле. Чтобы не переименовывать все листы по очереди (если есть нужда), было бы удобно заполнить название только первого листа, отметить все листы подлежащие перенумернацие, и получить в итоге похожие названия листов, разнумерованные по очереди. При этом перенумернацие подлежат только выделенные листы (ведь в файле могут быть листы которые не надо трогать).
Листы обычно у меня именуются так:
“1” “2” “3”
или
“К-1” “К-2” “К-3”
или
“КМ 1” “КМ 2” “КМ 3”

Как быть?

Модератору. Прсти что повторяюсь, но ты сам говорил ищи про нумерацию листов, вот я и нашел.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 29.04.2008, 22:10
#15
asys

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


эх, вешал бы свои листы в sheet set, закладывая в штампик поле и не изобретал велосипед
asys вне форума  
 
Непрочитано 29.04.2008, 22:42
#16
Red Nova

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


В штампике уже поле, а в шитсет пока не хочется лезть, хотя не исключаю на будущее
P.S. Дай свой файл пожалста. Посмотреть хочу как у тебя.
__________________
Блог

Последний раз редактировалось Red Nova, 29.04.2008 в 22:49.
Red Nova вне форума  
 
Непрочитано 30.04.2008, 09:21
#17
asys

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


файлик не дам, извини А рассказать могу - в текст номера листа вставляй поле завязанное на номер sheet-а в подшивке, оно называется current Sheet number останется только в менеджере подшивок (sheet set manager) пронумеровать листы.
Миниатюры
Нажмите на изображение для увеличения
Название: Untitled-2.jpg
Просмотров: 404
Размер:	61.5 Кб
ID:	5944  
asys вне форума  
 
Непрочитано 30.04.2008, 14:06
#18
Red Nova

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


Цитата:
файлик не дам, извини
А понял, у тебя там сверх секретный проект. Мог бы хотя это все добро стереть, потом спургенить весь файл нафиг и только шитсет с полями оставить. Хотя и так понятно. Спасибо.
Я еще хотел узнать ты как ведомость чертежей делаешь. Тоже в шитсете? Ею можешь поделиться?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 30.04.2008, 15:33
#19
asys

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


Цитата:
Сообщение от Red Nova Посмотреть сообщение
Мог бы хотя это все добро стереть, потом спургенить весь файл нафиг и только шитсет с полями оставить.
мне было лень а с ведомостями попрошу подождать до 4-го числа, сижу на чемоданах, собрался уехать
asys вне форума  
 
Непрочитано 30.04.2008, 16:17
#20
Red Nova

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


Доброго пути.
__________________
Блог
Red Nova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Нужно пронумеровать листы

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

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