Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В чем дело? 
:(
    Опции темы
Lexaxa
Дата 8.9.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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)
     
  )

   )

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.