Тема: Порядковая нумерация

Объясните мне, простому ламеру, как быстро пронумеровать 25строк с 1й!!???
Искал Lisp, но то, что надо не нашел. Есть какие-то мудреные, которые не нужны.

Re: Порядковая нумерация

Какой вопрос, такой и ответ:
"С клавиатуры"

Re: Порядковая нумерация

> Lamer
Вы ламер или студент, которому это задали?
Если студент, то так надо и писать. Если ламер, то должны это знать.

Re: Порядковая нумерация

Ё-моё!!!
Вы не знаете, или прикалываетесь!!?
Был у меня такой Lisp но не могу найти.
Я - не студент!

Re: Порядковая нумерация

> Lamer
Тут всего два оператора надо. Мог и сам написать.
PS. Далее только для Lamer

(setq number 1
      shag   8.
      point  (getpoint "\nУкажите начальную точку --->")
) ;_ конец setq
(repeat    25
  (progn
    (command "_.TEXT" point "3.0" "0" (itoa number) )
    (setq number (1+ number)
      point     (polar point (/ pi -2.0) shag)
    ) ;_ конец setq
  ) ;_ конец progn
) ;_ конец repeat

Re: Порядковая нумерация

Ни то ни другое.
1. http://my.opera.com/kpblc/blog/show.dml/245772
2. Е-мое!!! Слово поиск блокируется фаерваллом?
3. Задачу поконкретнее. Блин, кто и как должен догадываться, что это за строки? Это отдельные однострочные тексты? отдельные многострочные тексты? один многострочный текст? отдельные блоки с атрибутами? Вперемешку? Как определяется порядок нумерации? По расположению элементов? Указывается руками (пнул на элемент - там номер появился)? Имеющиеся данные сохранять или нет? Если сохранять, как разделять номер и старые данные строки?
Ну как, задачка становится чуть менее элементарной, а?
Блин, скоро на подобные вопросы буду указывать только одно: http://my.opera.com/kpblc/blog/show.dml/371575 и все.

Re: Порядковая нумерация

> Alan
Сейчас окажется что это не то и не туда, я тебе практически гарантирую.

Re: Порядковая нумерация

Да, товарищи!
В програмировании я - ZERO!
Так, что сварганить сам ничего не могу.
А нумерация мне нужна такого плана:
типа,
1. задай начальное число
2. задай прирощение
3. задай растояние между цифрами
4. задай направление
5. задай начальную точку
и все это обычным текстом
Простая задача, но непосильная

Re: Порядковая нумерация

> Lamer
Например, такая программа:

(defun C:NUM_STR ( / n0 deltan dst ns napr pt)
(initget 6)
(setq n0 (getint "\ Начальный номер: "))
(initget 7)
(setq deltan (getint "\ Приращение номера: "))
(initget 3)
(setq dst (getreal "\n Расстояние между строками: "))
(initget 7)
(setq ns (getint "\n Количество строк: "))
(initget "вНиз Вверх")
(setq napr (getstring "\n Направление нумерации [вНиз/Вверх] <вНиз>: "))
(setq pt (getpoint "\n Укажите начальную точку: "))
(repeat ns
        (cond
        ((or (= napr "Н") (= napr ""))
        (command "_TEXT" pt "" "" n0)
        (setq pt (list (car pt) (- (cadr pt) dst)))
        (setq n0 (+ n0 deltan))
        )
        ((= napr "В")
        (command "_TEXT" pt "" "" n0)
        (setq pt (list (car pt) (+ (cadr pt) dst)))
        (setq n0 (+ n0 deltan))
        ))
)
(princ)
)

Текст отрисовывается текущим стилем, в котором высота текста не фиксирована (равна 0).

Re: Порядковая нумерация

Спасибо, но чуть не то.
во первых: нумерация в этом лиспе идет в три слоя, числа накладываються друг на друга.
во вторых: хотелось бы иметь возможность расстояние между цифрами указывать мышкой с привязкой к строкам

Re: Порядковая нумерация

> Lamer
Какие еще три слоя? О никаких слоях здесь не упоминается. Числа могут накладываться друг на друга в том случае, если неправильно задано расстояние между строками (меньше высоты текста). Про мышку ничего сказано не было, тем более с привязкой к существующим строкам, которые в принципе могут располагаться не регулярно по высоте. Формально я задачу выполнил. Развивать программу в соответствии с дополнительными условиями мне страшно лень - ну я и не буду этого делать:(

Re: Порядковая нумерация

> Lamer
Слушай, а не проще будет делать ручное указание точек вставки?

Re: Порядковая нумерация

> kpblc
Еще проще решение.
Команда: _DTEXT
Текущий текстовый стиль:  "russ"  Высота текста:  2.5
Начальная точка текста или [Выравнивание/Стиль]:
Высота <2.5>:""
Угол поворота текста <0>:""
Введите текст: 1
Введите текст: 2
Введите текст: 3
Введите текст: 4
.......
Введите текст:
И перенести тему из "Программирование: Готовые программы" в ...

Re: Порядковая нумерация

> Владимир Громов
В том лиспе, что Вы мне дали цифры 1,2,3 имеют одинаковые координаты. 5,6,7 тоже
8,9,10 тоже и так до ...
Но.. между тройками цифр, дейтвительно нужное растояние
?????????
я уже сам заебался.
Звыняйтэ

Re: Порядковая нумерация

> Lamer
Что за чертовщина? Если привязки отключены, задано реальное расстояние между строками, то ничего накладываться не должно. Проверьте в новом рисунке. У меня AutoCAD 2005.

Re: Порядковая нумерация

> Lamer

(defun c:autonum (/          adoc       pt_start   pt_angle   dist
                  num_start  num_dif    num_rep    pt_cur     text_height
                  counter
                  )
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark adoc)
  (if
    (and (setq pt_start (getpoint "\nУкажи точку начала <Нафиг!> : "))
         (setq pt_angle
                (getpoint pt_start "\nА теперь куды направляемся <Нафиг!> : ")
               ) ;_ end of setq
         (setq dist (getdist pt_start "\nИ скоко делать между? <Надоело> : "))
         ) ;_ end of and
     (progn
       (setq num_start (cond ((getreal "\nНачальное значение <1> : "))
                             (t 1)
                             ) ;_ end of cond
             num_dif   (cond ((getreal "\nНаращивание (не ногтей) <1> : "))
                             (t 1)
                             ) ;_ end of cond
             num_rep   (cond ((getreal "\nСкоко раз повторять <25> : "))
                             (t 25)
                             ) ;_ end of cond
             ) ;_ end of setq
       (setq text_height
              (cdr
                (assoc
                  40
                  (entget (tblobjname "style" (getvar "textstyle")))
                  ) ;_ end of assoc
                ) ;_ end of cdr
             ) ;_ end of setq
       (if (equal text_height 0.000 0.001)
         (progn
           (initget 1)
           (setq text_height
                  (getreal "\nУкажите высоту создаваемого текста : ")
                 ) ;_ end of setq
           ) ;_ end of progn
         ) ;_ end of if
       (repeat num_rep
         (setq pt_cur (if (not pt_cur)
                        pt_start
                        (polar pt_cur (angle pt_start pt_angle) dist)
                        ) ;_ end of if
               ) ;_ end of setq
         (setq ent (list
                     (cons 0 "TEXT")
                     (cons 100 "AcDbEntity")
                     (cons 100 "AcDbText")
                     (cons 10 pt_cur)
                     (cons 40 text_height)
                     (cons 1
                           (itoa (if (not counter)
                                   (setq counter num_start)
                                   (setq counter (+ counter num_dif))
                                   ) ;_ end of if
                                 ) ;_ end of atoi
                           ) ;_ end of cons
                     ) ;_ end of list
               ) ;_ end of setq
         (entmake ent)
         ) ;_ end of repeat
       ) ;_ end of progn
     ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun

И дальше сам.

Re: Порядковая нумерация

А так?

(defun c:autonum (/          adoc       pt_start   pt_angle   dist
                  num_start  num_dif    num_rep    pt_cur     text_height
                  counter
                  )
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark adoc)
  (if
    (and (setq pt_start (getpoint "\nУкажи точку начала <Нафиг!> : "))
         (setq pt_angle
                (getpoint pt_start "\nА теперь куды направляемся <Нафиг!> : ")
               ) ;_ end of setq
         (setq dist (getdist pt_start "\nИ скоко делать между? <Надоело> : "))
         ) ;_ end of and
     (progn
       (setq num_start (cond ((getreal "\nНачальное значение <1> : "))
                             (t 1)
                             ) ;_ end of cond
             num_dif   (cond ((getreal "\nНаращивание (не ногтей) <1> : "))
                             (t 1)
                             ) ;_ end of cond
             num_rep   (cond ((getint "\nСкоко раз повторять <25> : "))
                             (t 25)
                             ) ;_ end of cond
             ) ;_ end of setq
       (setq text_height
              (cdr
                (assoc
                  40
                  (entget (tblobjname "style" (getvar "textstyle")))
                  ) ;_ end of assoc
                ) ;_ end of cdr
             ) ;_ end of setq
       (if (equal text_height 0.000 0.001)
         (progn
           (initget 1)
           (setq text_height
                  (getreal "\nУкажите высоту создаваемого текста : ")
                 ) ;_ end of setq
           ) ;_ end of progn
         ) ;_ end of if
       (repeat num_rep
         (setq pt_cur (if (not pt_cur)
                        pt_start
                        (polar pt_cur (angle pt_start pt_angle) dist)
                        ) ;_ end of if
               ) ;_ end of setq
         (setq ent (list
                     (cons 0 "TEXT")
                     (cons 100 "AcDbEntity")
                     (cons 100 "AcDbText")
                     (cons 10 pt_cur)
                     (cons 40 text_height)
                     (cons 1
                           (rtos (if (not counter)
                                   (setq counter num_start)
                                   (setq counter (+ counter num_dif))
                                   ) ;_ end of if
                                 ) ;_ end of atoi
                           ) ;_ end of cons
                     ) ;_ end of list
               ) ;_ end of setq
         (entmake ent)
         ) ;_ end of repeat
       ) ;_ end of progn
     ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun

Re: Порядковая нумерация

> Кулик Алексей aka kpblc
С юмором у вас все в порядке. И программа тоже работает довольно сносно. Но у меня, например, часто возникает проблема со спецификациями: В спецификации есть раздел: 1. Оборудование до 1000В. там подпункты 1.1 ВРУ 1.2 Щиты и т.п. И тут вдруг появляется раздел "оборудование свыше 1000В", который становится №1. И тогда в бывшем 1м разделе приходится вручную все цифры 1 переделывать на 2. Это надоедает. (не знаю, доступно ли объяснил).
И хочется программу, которая делает так:
1) Задаешь 1ю цифру. (например, "2")
2) Задаешь начальную 2ю цифру (например, "1").
3) Просто мышкой щелкаешь по очереди по цифрам, которые надо изменить. (т.е. щелкаю по цифрам "1.1", "1.2" и т.д. а они заменяются на "2.1", "2.2" и т.д.
  Надеюсь, меня поймут и не отправят куда-нибудь по ссылкам...

Re: Порядковая нумерация

> [Re:] Владимир Ключников

(defun test (/ x txt_1 txt_2)
  (setq txt_1 (getstring "\nПервая цифра: ")
        txt_2 (getint "\nВторая цифра: ")
  ) ;_ end of setq
  (while (setq x (car (entsel "\nВыберите текст: ")))
    (entmod
      (subst
        (cons 1 (strcat txt_1 "." (vl-princ-to-string txt_2)))
        (assoc 1 (entget x))
        (entget x)
      ) ;_ end of subst
    ) ;_ end of entmod
    (setq txt_2 (1+ txt_2))
  ) ;_ end of while
  (princ)
) ;_ end of defun

Re: Порядковая нумерация

> Владимир Ключников
А команда _find, чем не устраивает?

Re: Порядковая нумерация

> CB
Спасибо! Это именно то что мне нужно!

> Евгений Елпанов
Что-то я о _find не подумал... Вы правы, в описанном мною случае она прекрасно подходит, но чаще бывает еще такая ситуация: Я из разных спецификаций в текущую копирую все что мне нужно и естественно позиции, которые идут подряд могут быть под совершенно разными номерами: (например: 2.5; 4.2; 1.1 и т.д.) Тут-то мне очень пригодится утилитка, написанная СВ! Всем рекомендую!

Re: Порядковая нумерация

SmartPurger 2.7 by JTB WORLD_подскажите как работать сней эфективно???????