| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
программу. Теперь мы проверим функцию ввода данных и убедимся, что она
работает. Вызовите функцию, набрав:
Command: (gpuser)
/Kоманда: (gpuser)/
Введите на запросы следующее:
Start point of path: 2,2
End point of path: 9,8
Half width of path: 2
Radius of tiles: .2
Spacing between tiles: .1
/Hачальная точка дорожки: 2,2
Kонечная точка дорожки: 9,8
Полуширина дорожки: 2
Радиус плитки: .2
Расстояние между плитками: .1/
Функция GPUSER воспользуется Вашими ответами для вычисления
необходимых ей дополнительных переменных и высветит на экране дисплея
результат последнего вычисления (в данном случае -0.862169 - значение
ANGM90 в радианах). Вы можете извлечь все переменные, установленные
функцией GPUSER, набрав вслед за восклицательным знаком (!) их имена.
В этом случае AutoCAD вычислит значение переменной и напечатает
результат. Если Вы введете следующие команды, Вы получите результаты,
показанные ниже:
Command: !sp
(2.000000 2.000000)
Command: !ep
(9.000000 8.000000)
Command: !hwidth
2.000000
Command: !width
4.000000
Command: !trad
0.200000
Command: !tspac
0.100000
Command: !pangle
0.708626
Command: !plength
9.219544
Command: !angp90
2.279423
Command: !angm90
-0.862169
Заметим, что PANGLE, ANGP90 и ANGM90 выражены в радианах. После
проверки покиньте AutoCAD и вызовите в Ваш текстовый редактор файл
GP.LSP.
- 15 -
Руководство пользователя по АВТОЛИСПу
3.5 Сориентируем Дорожку
Теперь, когда мы запросили у пользователя местоположение дорожки,
мы можем нарисовать ее контур. Добавьте отмеченные строки в Ваш файл
GP.LSP.
; Convert angle in degrees to radians
(defun dtr (a)
(* pi (/ a 180.0))
)
; Acquire information for garden path
(defun gpuser ()
(setq sp (getpoint "\nStart point of path: "))
(setq ep (getpoint "\nEnd point of path: "))
(setq hwidth (getdist "\nHalf width of path: " sp))
(setq trad (getdist "\nRadius of tiles: " sp))
(setq tspac (getdist "\nSpacing between tiles: " sp))
(setq pangle (angle sp ep))
(setq plength (distance sp ep))
(setq width (* 2 hwidth))
(setq angp90 (+ pangle (dtr 90))) ;Path angle + 90 deg
(setq angm90 (- pangle (dtr 90))) ;Path angle - 90 deg
)
| ; Draw outline of path
|
| (defun drawout ()
| (command "pline"
| (setq p (polar sp angm90 hwidth))
| (setq p (polar p pangle plength))
| (setq p (polar p angp90 width))
| (polar p (+ pangle (dtr 180)) plength)
| "close"
| )
| )
В добавленом тексте определена функция с именем DRAWOUT. Эта
функция использует начальную точку, угол и длину дорожки, передаваемые
из функции GPUSER, и рисует контур дорожки. Kонтур рисуется
полилинией. Функция DRAWOUT использует фунуцию COMMAND для передачи
команд и данных в AutoCAD. Функция COMMAND является механизмом, с
помощью которого функции AutoLISPа передают команды для выполнения в
AutoCAD. Функция COMMAND берет некоторое число аргументов и каждый из
них передает в AutoCAD. Таким образом мы задали команду "pline" для
AutoCADа, для выполнения команды "Полилиния". Далее мы задали четыре
угла дорожки. Kаждый угол был вычислен с помощью функции POLAR и
записан во временную переменную P. Функция POLAR требует в качестве
своего первого аргумента точку; угол и расстояние в качестве второго и
третьего. Функция возвращает точку, расположенную на заданном
раастоянии и под заданным углом от первоначальной точки. Таким образом
мы вычислили четыре точки на границах дорожки, используя в качестве
- 16 -
Руководство пользователя по АВТОЛИСПу
исходного данного начальную точку дорожки. Мы завершили команду PLINE
строкой "close". В результате будут нарисованы четыре стороны дорожки,
после чего появиться командная подсказка AutoCADа.
Для проверки работы функции, запишите обновленный файл GP.LSP на
диск, войдите в AutoCAD, начните новый рисунок и загрузите LISP-файл
так же, как Вы делали это раньше. Вызовите функцию ввода данных:
Command: (gpuser)
и эадайте переменным те же значения, что и раньше. Теперь проверим
созданную функцию DRAWOUT, вызвав ее:
Command: (drawout)
Вы увидите, что Ваша функция обращается к командам AutoCADа, чтобы
отрисовать контур дорожки, который появляется на экране. После
проверки покиньте AutoCAD.
3.6 Рисуем Плитки
Теперь, после того, как мы сконструировали и проверили функции
ввода данных и отрисовки контура, все готово для заполнения дорожки
круглыми плитками. Для этого вспомним геометрию. Вызовите Ваш
текстовый редактор и добавьте отмеченные строки в программу:
; Convert angle in degrees to radians
(defun dtr (a)
(* pi (/ a 180.0))
)
; Acquire information for garden path
(defun gpuser ()
(setq sp (getpoint "\nStart point of path: "))
(setq ep (getpoint "\nEnd point of path: "))
(setq hwidth (getdist "\nHalf width of path: " sp))
(setq trad (getdist "\nRadius of tiles: " sp))
(setq tspac (getdist "\nSpacing between tiles: " sp))
(setq pangle (angle sp ep))
(setq plength (distance sp ep))
(setq width (* 2 hwidth))
(setq angp90 (+ pangle (dtr 90))) ;Path angle + 90 deg
(setq angm90 (- pangle (dtr 90))) ;Path angle - 90 deg
)
; Draw outline of path
(defun drawout ()
(command "pline"
(setq p (polar sp angm90 hwidth))
(setq p (polar p pangle plength))
(setq p (polar p angp90 width))
(polar p (+ pangle (dtr 180)) plength)
- 17 -
Руководство пользователя по АВТОЛИСПу
"close"
)
)
| ; Place one row of tiles given distance along path
| ; and possibly offset it
|
| (defun drow (pd offset)
|
adfun.ru
|
|
|
|