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

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

от 1 до 830 на LISP

Ответ
Поиск в этой теме
Непрочитано 25.01.2008, 16:59 #1
от 1 до 830 на LISP
RaceRunner
 
Инженер
 
Орёл
Регистрация: 25.01.2008
Сообщений: 7

Уважаемые ГУРУ LISP я верю что для вас эта задачи не потребует и усилия более чем на одну минуту, но для меня она спасёт много времени...

Задача проста до безобразия, мне нужно сгенерировать числа от 1 до 830 в поле чертежа, причём каждое число это отдельный TEXT

Заранее спасибо
Просмотров: 1644
 
Непрочитано 25.01.2008, 17:13
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450


Искренне надеясь, что числа не надо располагать случайно, и точки вставки задает пользователь А также: вставка текущим стилем; высота по "textsize", в текущем слое, с текущими типом, весом и цветом линий ну и тому подобное:
Код:
[Выделить все]
(defun c:settext (/ *error* adoc count pt)
  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq count 0
          adoc  (vla-get-activedocument (vlax-get-acad-object))
          ) ;_ end of setq
    ) ;_ end of vla-StartUndoMark
  (repeat 830
    (if
      (= (type (setq pt (vl-catch-all-apply
                          '(lambda () (getpoint "\nТочка вставки <Пропустить> : "))
                          ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'list
         ) ;_ end of =
       (entmakex (list (cons 0 "TEXT")
                       (cons 10 pt)
                       (cons 1 (itoa (setq count (1+ count))))
                       (cons 7 (getvar "textstyle"))
                       (cons 40 (getvar "textsize"))
                       ) ;_ end of list
                 ) ;_ end of entmakex
       ) ;_ end of if
    ) ;_ end of repeat
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.01.2008, 17:21
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от RaceRunner Посмотреть сообщение
но для меня она спасёт много времени...
Что-то меня одолевают сомнения насчет "много времени" Это ж 830 раз тыкать...
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 25.01.2008, 17:21
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Неуспел - но не выкидывать же:
(defun c:nadrug ( / i tmp)
(setq i 1
tmp (getvar "osmode"))
(setvar "osmode" 0)
(while (< i 831)
(command "_text" (list (* 10 i) 0) 3 0 (itoa i))
(setq i (+ 1 i))
)
(setvar "osmode" tmp)
)

P.S. за Крысом -то попробуй успей.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 25.01.2008, 20:21
#5
RaceRunner

Инженер
 
Регистрация: 25.01.2008
Орёл
Сообщений: 7


Цитата:
Сообщение от VVA Посмотреть сообщение
Что-то меня одолевают сомнения насчет "много времени" Это ж 830 раз тыкать...
Хм... А что не так то? Мне не улыбается набирать числа от 1 до 830 на клаве, и тем паче не 830 раз тыкать а в три раза больше, три знака в числе...
RaceRunner вне форума  
 
Непрочитано 26.01.2008, 10:58
#6
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


С заданием начального и конечного числа (для случая когда надоест "тыкать" мышкой в экран, но потом захочется продолжить начатое...).
Код:
[Выделить все]
(defun test (i n)
  (if (>= n i)
    (progn
      (entmakex
        (list (cons 0 "TEXT")
              (cons 10 (progn (initget 1) (getpoint (strcat "\nТочка:" (itoa i)))))
              (cons 1 (itoa i))
              (cons 40 (getvar "textsize"))
        ) ;_ end of list
      ) ;_ end of entmakex
      (test (1+ i) n)
    ) ;_ end of progn
  ) ;_ end of if
  (princ)
) ;_ end of defun
;;;Вызов -> (test 825 830)

Последний раз редактировалось CB, 26.01.2008 в 12:10.
CB вне форума  
 
Автор темы   Непрочитано 26.01.2008, 19:43
#7
RaceRunner

Инженер
 
Регистрация: 25.01.2008
Орёл
Сообщений: 7


Цитата:
Сообщение от CB Посмотреть сообщение
С заданием начального и конечного числа (для случая когда надоест "тыкать" мышкой в экран, но потом захочется продолжить начатое...).
Эх... а вот еслиб последнее введённое число сохранялось гденить в жертеже, и продолжая тыкать не нужно было помнить последнее установленное число, а иначе сбиться очень легко...

Хотя... возможность начать с произвольного числа очень замечательная, если касяк какой всегда можно будет немного откатиться...
RaceRunner вне форума  
 
Непрочитано 27.01.2008, 13:01
#8
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Самое простое - это ввести глобальную переменную, однако она будет действовать только в текущем сеансе чертежа, да и вообще это не правильно, когда после работы функции в чертеже остаются переменные ...
Во всяком случае пробуй такое (здесь в глобальной переменной var хранится последнее вводимое число) :
Код:
[Выделить все]
(defun C:TEST (/ test)
  (defun test (i n)
    (if (>= n i)
      (progn
        (entmakex
          (list
            (cons 0 "TEXT")
            (cons 10 (getpoint (strcat "\rВводимое число: " (itoa i))))
            (cons 1 (itoa i))
            (cons 40 (getvar "textsize"))
          ) ;_ end of list
        ) ;_ end of entmakex
        (setq var (1+ i))
        (test (1+ i) n)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
  (vl-catch-all-apply
    '(lambda ()
       (test
         (if var
           ((lambda (temp_var)
              (if temp_var temp_var var)
            ) ;_ end of lambda
             (getint (strcat "\nНачальное число <" (itoa var) "> :"))
           )
           (progn (initget 1) (getint "\nНачальное число <> :"))
         ) ;_ end of if
         (progn (initget 1) (getint "\nКонечное число: "))
       ) ;_ end of test
     ) ;_ end of lambda
  ) ;_ end of vl-catch-all-apply
  (princ)
) ;_ end of defun
;;;Вызов -> test
CB вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > от 1 до 830 на LISP

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ламерские вопросы по LISP и DCL TheBuTeK LISP 7 03.07.2016 22:15
Подскажите, существуют ли практические руководства по Lisp? vn LISP 261 26.11.2015 13:27
LISP на _purge Малюк LISP 12 23.12.2007 18:15
Библиотека доступа к содержимому растров из LISP - существуе kp+ LISP 6 16.10.2007 21:45
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19