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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Программа для автоматической нумерарации (индексации).

LISP. Программа для автоматической нумерарации (индексации).

Ответ
Поиск в этой теме
Непрочитано 30.11.2015, 18:01 #1
DmitriyBastr
 
Регистрация: 06.03.2015
Сообщений: 5

Доброго времени...
Кто сможет помочь разобраться в коде?
Этот выложенный ЛИСП может автоматически проставлять нумерацию цифрами или буквами для выбранного диапазона объектов.
Тип объектов, в соответствии с кодом - ТЕКСТ.
Можно перекодировать и сделать МТЕКСТ.
Но очень хочется, чтобы этот ЛИСП и с атрибутами блоков и мультивыносок работал.

Вот этот же самый код. Просто не во вложении:
Код:
[Выделить все]
[lisp][/(defun c:Next ( / _sort data  x f opt i order)
(vl-load-com)
(defun _sort (m1 m2 ls) (vl-sort ls
	      '(lambda (a b) (m1 (m2 a) (m2 b)))))
(defun _valid (str)
  (vl-some '(lambda (y)
              (if (eval (Car y)) (cadr y)))
           '(((wcmatch str "@") "A")
             ((eq (type (read str)) 'INT) "N"))))
(if (setq data nil ss (ssget '((0 . "TEXT"))))
  	(progn
	(while (not
                 (progn 
                   	(setq Start (getstring "\nStart Number/Letter: "))
	                   (if (setq tp (_valid start)) Tp (prompt "\nInvalid Value"))
                             	
	            )
	       )
	)
        (initget "LTR TTB RTL BTT")
	(setq start (strcase start) opt (cond ( (getkword "\nChoose option [LTR/TTB/RTL/BTT]: <LTR>") ) ( "LTR" )))
	 (setq f (assoc opt 
          	(list '("LTR" (_sort < caadr  data))
	  	      '("TTB" (_sort > cadadr data))
		      '("RTL" (_sort > caadr  data))
		      '("BTT" (_sort < cadadr data)))))
        	  
		(repeat (setq i (sslength ss))
                  		(setq data (cons 
                  		(mapcar 'cdr (vl-remove-if-not '(lambda (l)
                                                     (member (car l) '(-1 10 )))
                                  		(entget (ssname ss (setq i (1- i)))))) data))
                  )
		(setq order (eval (cadr f))
                      next  (cadr (Assoc tp '(("N" (itoa (1+ (atoi start))))
                                        ("A" (chr (1+ (ascii start))))))))
  		(foreach itm (mapcar 'car order)
		  	(vla-put-textstring (vlax-ename->vla-object itm)
			  	 start)
                  	(setq start (eval next))
		  	
  		
                      )
	  )
  )
  (princ)
  )LISP]

Вложения
Тип файла: rar Next (буквенная автонумерация ТЕКСТа).rar (879 байт, 38 просмотров)


Последний раз редактировалось Кулик Алексей aka kpblc, 03.12.2015 в 12:19.
Просмотров: 1584
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Программа для автоматической нумерарации (индексации).

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для автоматической печати, есть? B_W AutoCAD 16 11.02.2010 08:30
Программа считывания экрана и перевода в LISP faust999 LISP 11 10.06.2009 11:48
Подскажите есть ли программа для автоматической распечатки А1 на А4 из AutoCADa rusya2085 AutoCAD 18 11.01.2009 09:07
Фундамент с динамическими нагрузками в Scad Tlelaxu SCAD 9 31.08.2007 10:44