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

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

Как дать лиспу число?

Ответ
Поиск в этой теме
Непрочитано 14.04.2005, 09:21 #1
Как дать лиспу число?
Димас
 
джедай
 
Магадан
Регистрация: 31.01.2005
Сообщений: 460

Как дать возможность пользователю вводить число в командной строке?
Или просто указать мышкой на текст в чертеже (чтоб лисп число из этого текста взял)?
Просмотров: 3325
 
Непрочитано 14.04.2005, 09:30
#2
ZZZ

электрик
 
Регистрация: 11.03.2005
Киев
Сообщений: 157


1.
Код:
[Выделить все]
(setq my_input_real(getreal "Input real"))
2.
Код:
[Выделить все]
(setq my_input_real(atof(cdr(assoc 1 (entget(car(nentsel)))))))
Это нужно будет подкоректировать иначе выдаст ошибки при указании не текстовых объектов или промазывания.
__________________
Когда под рукой нет ничего кроме молотка - всё вокруг кажется гвоздями...
Выбор правильного инструмента - залог успеха в любом деле.
ZZZ вне форума  
 
Автор темы   Непрочитано 14.04.2005, 10:43
#3
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


Спасибо, буду пробовать
Димас вне форума  
 
Непрочитано 14.04.2005, 10:51
#4
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Это смотря какое число...

(setq myReal(getreal "Введите вещественное число: ")) - вещественное число
(setq myInt(getint "Введите целое число)) - целое чило
(setq myDist(getdist "Укажите расстояние :") - расстояние, можно указывать в командной строке а можно две точки на экране.
(setq myAng(getangle "Укажите угол)) - угол в осью X
{Smirnoff} вне форума  
 
Непрочитано 14.04.2005, 11:26
#5
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Код:
[Выделить все]
(setq numer(cond
	 (
	 (getreal "\n select real:")
	  )
	 
	 (
	   (setq numer (car(entsel "\n select text:")))
	   (if
	     (equal (cdr (assoc 0 (entget numer))) "TEXT")
	     (distof(cdr (assoc 1 (entget numer))))
	     nil)
	   )
	 ))
Эдуард вне форума  
 
Автор темы   Непрочитано 15.04.2005, 02:04
#6
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


Ага, спасибо

А не подскажете как сделать чтоб
(setq myDist(getdist "Укажите расстояние :"))
выдавало число в "нормальном" формате (т.е. 4.0 или 8.70)
а не 2.94364e+007 или что-то в этом роде

И что можно использовать для округления чисел?
Fixed как я понял не округляет, а просто отбрасывает числа после заятой.
Димас вне форума  
 
Непрочитано 15.04.2005, 09:41
#7
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,186
<phrase 1=


Цитата:
Сообщение от Димас
И что можно использовать для округления чисел?
Fixed как я понял не округляет, а просто отбрасывает числа после заятой.
недавно проскакивало тут http://dwg.ru/forum/viewtopic.php?p=...ghlight=#28543
Apelsinov вне форума  
 
Непрочитано 15.04.2005, 10:34
#8
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Во первых число в форме Scientific вы получили по причине того что переменная LUNITS которая отвечает за формат единиц (соответствует выпадающему меню Type в группе Length диалогового окна Drawing Units) у вас 5. Поставьте 2 и форма числа станет десятичной (Decimal).

Вопрос для чего нужно округление? Обычно округление делается при выводе результатов вычислений, но не в самих вычислениях. Если нужно округлить число представив его в одном из форматов в виде строки:

Command: (rtos 2.94364e+007 2 2)
"29436400.00"

Command: (rtos 3.14159 2 3)
"3.142"

Первый аргумент после числа это формат единиц соответствующий переменной LUNITS а второй количество знаков после запятой.

А если теперь все таки нужно получить округленное число используйте функцию DISTOF:

Command: (distof (rtos 3.14159 2 3)2)
3.142

Command: (distof "563.84625343" 2)
563.846

Двойка это также формат единиц, а точность определяется переменной LUPREC определяющей количество знаков после запятой.

Кстати обратите внимание на функцию Эдуарда. Она позволяет "дать" число путем выбора на экране текста который возможно преобразовать в вещественное число. Выражение "дать лиспу число" не в полне понятно.
{Smirnoff} вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как дать лиспу число?

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

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