Тема: LISP. Нумерация в порядке возрастания

;******** numer.lsp - Программа нумерации по порядку.**********
;
;                     Разработал Громов В.В. Апрель 1994.
;
(defun C:NUMER ( / c hit htt ht tt nom1 nm1)
       (setvar "cmdecho" 0)
       (setq c (getvar "DIMSCALE"))
       (setq hit (rtos (/ (getvar "TEXTSIZE") c)))
       (initget 1)
       (if (null htt) (setq htt hit))
       (princ "\n Текущая высота текста (мм бумаги):  ")
       (princ (/ (getvar "TEXTSIZE") c))
       (prompt (strcat "\n РАЗМЕР (высота) цифры (мм бумаги)  <" htt ">: "))
       (setq ht (getstring))
       (if (= ht "") (setq ht (* (atof htt) c))
       (setq ht (* (atof ht) c)))
       (setq htt (rtos (/ ht c)))
       (setq tt 0)
   (while tt
       (setq tt (getpoint "\n Укажите ТОЧКУ (ENTER-Хватит): "))
     (if tt
       (progn
       (if (null nom1) (setq nom1 "1"))
       (prompt (strcat "\n НОМЕР <" nom1 ">: "))
       (setq nm1 (getstring))
       (if (= nm1 "") (setq nm1 nom1))
       (command "_TEXT" "_M" tt ht "0" nm1)
       (setq nom1 (itoa (1+ (atoi nm1))))
     ))
   )
       (princ "\n Конец. ")
       (princ)
)

Возможный макрос для кнопки или пункта меню:

^C^C^P(if (not C:NUMER (load "numer")) NUMER

Re: LISP. Нумерация в порядке возрастания

Я пользуюсь вот такой програмкой, може каряво наниса, но работает.

    ; ------ Num.LSP Программа по нумерации ------;
                    ;                                             ;
    ; ------                                ------;
(defun c:num (/ txt chsl pt txtim txtsp subtxt tpara)
  (setq    txt
     (getstring Введите текст:")
      chsl
     (getint "Введите начальный номер:")
  )
  (while
    (setq pt
       (getpoint "Укажите точку вставки:")
    )
     (command "_.text"
          pt
          7
          0
          (strcat txt
              (rtos chsl)
          )
     )
     (strcat txt
         (rtos chsl)
     )
     (setq txtim   (entlast)
       txtsp   (entget txtim)
       subtxt  (assoc 1 txtsp)
       tpara   (vl-list* 1
                 (strcat txt
                     (rtos chsl)
                 )
           )
       txtchsl (entmod
             (subst tpara subtxt txtsp)
           )
     )
     (setq chsl
        (1+ chsl)
     )
  )
)

Re: LISP. Нумерация в порядке возрастания

2 Владимир Громов. Что-то не работает. Повесил макрос на кнопку, жму - ничего не происходит. Даже ошибок не выдает.
Acad 2005 SP 1.

Re: LISP. Нумерация в порядке возрастания

> Демиан
Вот только сейчас скопировал код в командную строку AutoCAD'а, потом ввел numer и все работает. Именно в 2005, да это и не важно, эта программа будет работать и в R14. Если бы файл numer.lsp нельзя было бы найти, то обязательно выдалось бы сообщение о сбое функции "load". Что-то не понимаю. Можно попробовать загрузить программу через "Load application", а потом ввести numer. Если работает, то что-то с макросом.

Re: LISP. Нумерация в порядке возрастания

> Демиан
Какое имя у файла? Код надо сохранить в numer.lsp. В макросе (бывают глюки) желательно (имхо) использовать следующую конструкцию:

^C^C^P(if (not C:NUMER (load "numer.lsp"));NUMER;

Точки с запятыми можно заменить на пробелы.
---
ИМХО

Re: LISP. Нумерация в порядке возрастания

Вот ссылочка на ту же тему:
https://www.caduser.ru/forum/topic30684.html
Просьба сделать программку по моей заявке в той теме.
В NUMER не учтено ведь, что номера могут разделяться точкой (или даже запятой): 1.1, 1.2 и т.д.