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

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

Автоматическое присваивание значения атрибуту

Ответ
Поиск в этой теме
Непрочитано 02.02.2022, 14:25 #1
Автоматическое присваивание значения атрибуту
aafeoktistov
 
Регистрация: 26.02.2019
Сообщений: 49

Здравствуйте! Собственно к сути проблемы.
Есть блок "Лист" с атрибутом "Номер". Так вот можно ли как то после задания нумерации через атрибут "Номер" (к примеру через Numinc.lsp), при удалении одной из страниц обновить результат таким образом чтобы нумерация продолжилась с удаленного атрибута.

Заранее спасибо!
Просмотров: 3719
 
Непрочитано 02.02.2022, 15:34
#2
Сергей812


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


для этого надо сохранять еще порядок следования листов - например, в скрытом атрибуте.
Сергей812 вне форума  
 
Автор темы   Непрочитано 02.02.2022, 15:44
#3
aafeoktistov


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


Upd. Речь идет о пространстве листа. Т.е мы делаем нумерацию каждого листа блоком с атрибутом. Потом удаляем один из листов, а атрибуты под это подстраиваются.

----- добавлено через 53 сек. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
для этого надо сохранять еще порядок следования листов - например, в скрытом атрибуте.
А не подскажите как он называется?
aafeoktistov вне форума  
 
Непрочитано 02.02.2022, 15:58
#4
Maksim7enov


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


Делал для себя, чтобы изменять номера сквозной нумерации. Нужно поменять "НОМЕР_СКВОЗНОЙ" на имя своего атрибута в блоке. Такое подходит?
Код:
[Выделить все]
 
(defun fun_change_page-attrib-number
       (start-num name-attrib / ss1 layout_lst n ss obj)
       ;| ********************************************
Функция для измнения сквозных номеров на листах
*	start-num - стартовый номер листов
*	name-attrib - тег атрибута в нужном блоке
(fun_change_page-attrib-number 11333 "НОМЕР_СКВОЗНОЙ")
(entget ss1)
***********************************************|;
  (while (not
	   (setq ss1 (car (entsel "\nВыберите блок с атрибутом: ")))
	 )
    (princ "\nMiss!")
  )
  (setq
    layout_lst
     (mapcar
       'car
       (vl-sort
	 (mapcar
	   '(lambda (x)
	      (cons x
		    (vla-get-taborder
		      (vla-item
			(vla-get-layouts
			  (vla-get-activedocument (vlax-get-acad-object)) ;_ vla-get-activedocument 
			) ;_ vla-get-layouts 
			x
		      ) ;_ vla-item 
		    ) ;_ vla-get-taborder 
	      ) ;_ cons 
	    ) ;_ lambda 
	   (layoutlist)
	 ) ;_ mapcar 
	 '(lambda (a1 a2) (< (cdr a1) (cdr a2)))
       ) ;_ vl-sort 
     ) ;_ mapcar 
  ) ;_ end_of_setq
  (setq n 1)
  (foreach layout layout_lst
    (if	(setq ss
	       (ssget "_X"
		      (list '(0 . "INSERT")
			    '(66 . 1)
			    (cons 410 (nth (- n 1) layout_lst)) ;_ cons
			    (cons 2
				  (vla-get-Name (vlax-ename->vla-object ss1))
			    ) ;_ end_of_cons
		      ) ;_ list 
	       ) ;_ ssget 
	) ;_ setq 
      (foreach ent (vl-remove-if
		     '(lambda (a) (listp a))
		     (mapcar 'cadr (ssnamex ss))
		   ) ;_ vl-remove-if 
	(while (setq ent (entnext ent))
	  (if
	    (= (cdr (assoc 2 (entget ent))) name-attrib)

	     (progn (setq obj (vlax-ename->vla-object ent))
		    (vla-put-textstring obj (itoa (+ (- n 1) start-num)))
					;start-num
		    (vlax-release-object obj)
	     ) ;_ progn 
	  ) ;_ if 
	) ;_ while 
      ) ;_ foreach 
    ) ;_ if 
    (setq n (1+ n))
  ) ;_ end_of_foreach
  (vla-regen (vla-get-activedocument (vlax-get-acad-object))
	     acactiveviewport
  )
) ;_ end_of_defun

Maksim7enov вне форума  
 
Автор темы   Непрочитано 02.02.2022, 16:25
#5
aafeoktistov


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


Цитата:
Сообщение от Maksim7enov Посмотреть сообщение
Делал для себя, чтобы изменять номера сквозной нумерации. Нужно поменять "НОМЕР_СКВОЗНОЙ" на имя своего атрибута в блоке. Такое подходит?
Код:
[Выделить все]
 
(defun fun_change_page-attrib-number
       (start-num name-attrib / ss1 layout_lst n ss obj)
       ;| ********************************************
Функция для измнения сквозных номеров на листах
*	start-num - стартовый номер листов
*	name-attrib - тег атрибута в нужном блоке
(fun_change_page-attrib-number 11333 "НОМЕР_СКВОЗНОЙ")
(entget ss1)
***********************************************|;
  (while (not
	   (setq ss1 (car (entsel "\nВыберите блок с атрибутом: ")))
	 )
    (princ "\nMiss!")
  )
  (setq
    layout_lst
     (mapcar
       'car
       (vl-sort
	 (mapcar
	   '(lambda (x)
	      (cons x
		    (vla-get-taborder
		      (vla-item
			(vla-get-layouts
			  (vla-get-activedocument (vlax-get-acad-object)) ;_ vla-get-activedocument 
			) ;_ vla-get-layouts 
			x
		      ) ;_ vla-item 
		    ) ;_ vla-get-taborder 
	      ) ;_ cons 
	    ) ;_ lambda 
	   (layoutlist)
	 ) ;_ mapcar 
	 '(lambda (a1 a2) (< (cdr a1) (cdr a2)))
       ) ;_ vl-sort 
     ) ;_ mapcar 
  ) ;_ end_of_setq
  (setq n 1)
  (foreach layout layout_lst
    (if	(setq ss
	       (ssget "_X"
		      (list '(0 . "INSERT")
			    '(66 . 1)
			    (cons 410 (nth (- n 1) layout_lst)) ;_ cons
			    (cons 2
				  (vla-get-Name (vlax-ename->vla-object ss1))
			    ) ;_ end_of_cons
		      ) ;_ list 
	       ) ;_ ssget 
	) ;_ setq 
      (foreach ent (vl-remove-if
		     '(lambda (a) (listp a))
		     (mapcar 'cadr (ssnamex ss))
		   ) ;_ vl-remove-if 
	(while (setq ent (entnext ent))
	  (if
	    (= (cdr (assoc 2 (entget ent))) name-attrib)

	     (progn (setq obj (vlax-ename->vla-object ent))
		    (vla-put-textstring obj (itoa (+ (- n 1) start-num)))
					;start-num
		    (vlax-release-object obj)
	     ) ;_ progn 
	  ) ;_ if 
	) ;_ while 
      ) ;_ foreach 
    ) ;_ if 
    (setq n (1+ n))
  ) ;_ end_of_foreach
  (vla-regen (vla-get-activedocument (vlax-get-acad-object))
	     acactiveviewport
  )
) ;_ end_of_defun

Спасибо! очень хочется проверить, но не подскажите принцип работы? Атрибут то я поменял но как вызвать выбор блока?
aafeoktistov вне форума  
 
Непрочитано 02.02.2022, 16:31
#6
Maksim7enov


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


Цитата:
Сообщение от aafeoktistov Посмотреть сообщение
как вызвать выбор блока
(fun_change_page-attrib-number start-num name-attrib)
меняем
start-num на стартовый номер страницы (будет нумеровать с 1 листа)
name-attrib на тег атрибута в нужном блоке

пример
(fun_change_page-attrib-number 1 "НОМЕР_СКВОЗНОЙ") вот это вставляем в командную строку
Maksim7enov вне форума  
 
Автор темы   Непрочитано 02.02.2022, 16:48
#7
aafeoktistov


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


Цитата:
Сообщение от Maksim7enov Посмотреть сообщение
(fun_change_page-attrib-number start-num name-attrib)
меняем
start-num на стартовый номер страницы (будет нумеровать с 1 листа)
name-attrib на тег атрибута в нужном блоке

пример
(fun_change_page-attrib-number 1 "НОМЕР_СКВОЗНОЙ") вот это вставляем в командную строку
Я правильно понимаю? Я пронумеровал листы, допустим вручную с 1 по 10 (у каждого атрибут "НОМЕР_СКВОЗНОЙ") потом удалил лист 2. ввел команду (fun_change_page-attrib-number 1 "НОМЕР_СКВОЗНОЙ") и они должны обновиться?
aafeoktistov вне форума  
 
Непрочитано 02.02.2022, 16:53
#8
Maksim7enov


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


нумерует все листы в файле. Начинает с первого, далее по порядку расположения листов в файле.
Maksim7enov вне форума  
 
Автор темы   Непрочитано 02.02.2022, 21:43
#9
aafeoktistov


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


Извиняюсь за возможно тупые вопросы, но. Блок надо расставить со значением атрибута 1 везде на всех листах? он же пустым не может быть?
aafeoktistov вне форума  
 
Непрочитано 02.02.2022, 21:46
#10
Maksim7enov


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


может быть пустым, но не блок а значение атрибута.
стоит попробовать и все станет понятно!
Maksim7enov вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Автоматическое присваивание значения атрибуту

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При копировании с листа на лист не теряется значения поля Haelgi AutoCAD 6 01.09.2021 15:30
Как понять фразу: При совмещенном освещении общественных зданий нормируемые значения КЕО должны составлять от нормированных значений КЕО при естественном освещении LenaArch Прочее. Архитектура и строительство 0 21.10.2020 12:32
Выгрузка данных SQL server в значения атрибутов блоков Autocad Cosmosila Прочее. Программное обеспечение 14 05.03.2013 13:04
AutoCAD Civil 3D 2012 Rus. Значение пользовательских свойств сбрасываются в значения по умолчанию. TararykovDG Вертикальные решения на базе AutoCAD 11 13.02.2013 16:39
Автоматическое редактирование блоков из Excel superkot007 AutoCAD 4 16.01.2010 00:54