![]() |
|
![]() ![]() ![]() |
|
Lexaxa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
Написал программу которая должна определять длину перпендикуляра проведенного из указанной точки к прямой. Всё работает нормально пока прямая и точка находяться в зоне видимости, но если при выборе точки прямой видно не будет, то программа начинает работать неправильно. Думаю что сам код написан правильно, но вот его исполнение почему-то зависит от видимости объектов. подскажите в чем может быть проблема? вот код в кратце - думаю именно в этой части есть ошибка (setq oc (nth 1(entsel "\n выберите прямую"))) (setq t0 (getpoint "\n выберите точку: ")) (setvar "osmode" 0) (setq lin (command "_line" t0 (osnap oc "_per") "" ) ) - таким образом провожу перпендикуляр от точки к прямой. (setq r0 (cdr (assoc 10 lin))) (setq r1 (cdr (assoc 11 lin))) выделяю координаты начала и конца проведенного перпендикуляра(setq dist (distance r0 r1)) и вычисляю его длину ------------------------------------- Вот полный код программы (defun C:q () (setq pr (getvar "osmode")) (setvar "osmode" 0) (setq tablica_t0 (getpoint "\n âûáåðèòå òî÷êó äëÿ ñîñòàâëåíèÿ òàáëèöû: ") ) (setq x (nth 0 tablica_t0)) (setq y (nth 1 tablica_t0)) (setq x+ (+ x 50)) (setq y+ (- y 5)) (setq tablica_t1 (list x+ y+)) (print tablica_t1) (setq oc (nth 1(entsel "\n Âûáåðåòå ÏÊ: ")));âûáèðàåì îáúåêò ñ ýêðàíà, (setq pk (getreal "\n ââåäèòå çíà÷åíèå ÏÊ:")) ;îïðåäåëÿåì óñëîâèå âûõîäà/ïðîäîëæåíèÿ ðàáîòû (setq kvst 1) (while (/= kvst ) (setq tablica_t0 (list x y) );äëÿ êàæäîãî íîâîãî çíà÷åíèÿ òî÷êè âñòàâêè áóäóò èçìåíÿòüñÿ (setq tablica_t1 (list x+ y+) ) (setvar "osmode" 2) (setq kvst (getreal "\n ââåäèòå íîìåð ñòðåë. ïåðåâîäà:")) (setq t0 (getpoint "\n âûáåðèòå öåíòð ñòðåëî÷íîãî ïåðåâîäà: ")) (print t0) (setvar "osmode" 0) (setq lin (command "_line" t0 (osnap oc "_per") "" ) ) (setq r0 (cdr (assoc 10 lin))) (setq r1 (cdr (assoc 11 lin))) ;(setq r0 (cdr (nth 10 b) )) ;(setq r1 (cdr (nth 11 b) )) (print r0) (print r1) (setq dist (distance r0 r1));îïðåäåëÿåì äëèíó ïåðåïåíäèêóëÿðà (print dist) (setq pkstr (+ pk dist)); âû÷èñëÿåì ïèêåò ñòðåëî÷íîãî ïåðåâîäà (print pkstr) (setq dannie (list kvst pkstr) );ñîçäàåì ñïèñîê äàííûõ äëÿ òàáëèöû (command "_mtext" tablica_t0 tablica_t1 dannie "") (setq y (- y 5)) (setq y+ (- y 5)) (setq dannie 0) ) ) |
|||
|
||||
![]() ![]() ![]() |
Правила форума LISP | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | LISP | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |