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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > "В точке ... создана линия нулевой длины" помогите разобраться

"В точке ... создана линия нулевой длины" помогите разобраться

Ответ
Поиск в этой теме
Непрочитано 24.11.2008, 18:59 #1
"В точке ... создана линия нулевой длины" помогите разобраться
Mozgunov
 
Начинающий проектировщик
 
Санкт-Петербург
Регистрация: 07.02.2008
Сообщений: 443

Уважаемые программисты! Решил написать небольшую программку, ну что-то не клеется! Отдельно функция работет замечательно, а когда я пытаюсь вызвать её другой функцией и передаю ей произвольные аргументы выдает ошибку. Помогите разобраться в чём дело. Листинг привожу ниже. Спасибо!


Код:
[Выделить все]
//glCNTR главный вид центр отверстия
//glVL главный вид отверстия верхний левый узел
//glVP
//glNP
//glNL
//glgip гипотенуза главного отверстия

///////////////////////////////////////
//vertCNTR главный вид центр отверстия
//vertVL главный вид отверстия верхний левый узел
//vertVP
//vertNP
//vertNL
//vertgip гипотенуза главного отверстия
////////////////////////////////////////

(defun otv (glCNTR shirinaot visotaot tolshinasten otstup )  

(setvar "cmdecho" 0) 

(setvar "ORTHOMODE" 1)


//////////////////////////////////////////////////////////////////////////////
//Сбор данных для прорисовки главного вида отверстия

//Расчёт длины гипотенузы
(setq glgip (/ (sqrt (+ (* shirinaot shirinaot) (* visotaot visotaot))) 2) )

//расчёт угла наклона гипотенузы к оси х
(setq glugol (/ (* (atan (/ visotaot shirinaot)) 180) pi) )

//Получаем координаты углов отверстия
(setq glVL (POLAR glCNTR (/ (* pi (- 180 glugol)) 180) glgip))
(setq glVP (POLAR glCNTR (/ (* pi glugol) 180) glgip))
(setq glNP (POLAR glCNTR (/ (* pi (- 360 glugol)) 180) glgip))
(setq glNL (POLAR glCNTR (/ (* pi (+ 180 glugol)) 180) glgip))

//Прорисовка главного вида
(command "_.LINE" glVL glVP glNP glNL glVL "" )
///////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
//Сбор данных для прорисовки вертикального разреза отверстия

//Расчёт центра вертикального отверстия
(setq vertCNTR (list (+ (car glCNTR) otstup)  (cadr glCNTR) (caddr glCNTR) ))

//Расчёт длины гипотенузы
(setq vertgip (/ (sqrt (+ (* tolshinasten tolshinasten) (* visotaot visotaot))) 2) )

//расчёт угла наклона гипотенузы к оси х
(setq vertugol (/ (* (atan (/ visotaot tolshinasten)) 180) pi) )

//Получаем координаты углов отверстия
(setq vertVL (POLAR vertCNTR (/ (* pi (- 180 vertugol)) 180) vertgip))
(setq vertVP (POLAR vertCNTR (/ (* pi vertugol) 180) vertgip))
(setq vertNP (POLAR vertCNTR (/ (* pi (- 360 vertugol)) 180) vertgip))
(setq vertNL (POLAR vertCNTR (/ (* pi (+ 180 vertugol)) 180) vertgip))

//Прорисовка вертикального разреза
(command "_.LINE" vertVL vertVP vertNP vertNL vertVL "" )
///////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
//Сбор данных для прорисовки горизонтального разреза отверстия

//Расчёт центра горизонтального отверстия
(setq gorizCNTR (list  (car glCNTR) (- (cadr glCNTR) otstup) (caddr glCNTR) ))

//Расчёт длины гипотенузы
(setq gorizgip (/ (sqrt (+ (* tolshinasten tolshinasten) (* shirinaot shirinaot))) 2) 

)

//расчёт угла наклона гипотенузы к оси х
(setq gorizugol (/ (* (atan (/ tolshinasten shirinaot)) 180) pi) )

//Получаем координаты углов отверстия
(setq gorizVL (POLAR gorizCNTR (/ (* pi (- 180 gorizugol)) 180) gorizgip))
(setq gorizVP (POLAR gorizCNTR (/ (* pi gorizugol) 180) gorizgip))
(setq gorizNP (POLAR gorizCNTR (/ (* pi (- 360 gorizugol)) 180) gorizgip))
(setq gorizNL (POLAR gorizCNTR (/ (* pi (+ 180 gorizugol)) 180) gorizgip))

//Прорисовка вертикального разреза
(command "_.LINE" gorizVL gorizVP gorizNP gorizNL gorizVL "" )
///////////////////////////////////////////////////////////////////////////////

(setvar "ORTHOMODE" 1) 

)




(defun C:qwe()

(setq tochka (getpoint "\nУкажите точку: "))

(otv tochka 500 400 300 5000)

)
__________________
dmtools.ru
Просмотров: 7675
 
Непрочитано 24.11.2008, 19:03
#2
Кулик Алексей aka kpblc
Moderator

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


А osmode снимал?
P.S. Код не анализировал пока. Некогда
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.11.2008, 19:13
#3
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А osmode снимал?
P.S. Код не анализировал пока. Некогда
Нет не пробовал. Сейчас попробуем. Может поможет ). Спасибо!
__________________
dmtools.ru
Mozgunov вне форума  
 
Непрочитано 24.11.2008, 20:38
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Mozgunov, Поможет, не сомневайся.
http://forum.dwg.ru/showpost.php?p=271367&postcount=181
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=13261et
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 24.11.2008, 20:57
#5
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Отключаю привязку в том же месте программы где у меня отключается "Орто" так (setvar "OSMODE" 0). Не помогает . Я так понимаю старое значение при помощи oldOmode в моем случае необязательно запоминать?
__________________
dmtools.ru
Mozgunov вне форума  
 
Автор темы   Непрочитано 24.11.2008, 21:02
#6
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Причём если фукцию "otv" вызвать через Сtv то всё работает .
__________________
dmtools.ru
Mozgunov вне форума  
 
Автор темы   Непрочитано 24.11.2008, 21:05
#7
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Смайлик прорисовался автозаменой наверное Я не стеснялся. Вот что я имел ввиду. Так всё работает.
Код:
[Выделить все]
//glCNTR главный вид центр отверстия
//glVL главный вид отверстия верхний левый узел
//glVP
//glNP
//glNL
//glgip гипотенуза главного отверстия

///////////////////////////////////////
//vertCNTR главный вид центр отверстия
//vertVL главный вид отверстия верхний левый узел
//vertVP
//vertNP
//vertNL
//vertgip гипотенуза главного отверстия
////////////////////////////////////////

(defun C:otv ()  

(setvar "cmdecho" 0) 

(setvar "ORTHOMODE" 1)

(setq glCNTR (getpoint "\nУкажите точку центра отверстия главного вида: "))
(setq shirinaot (getdist "\nУкажите ширину отверстия: "))
(setq visotaot (getdist "\nУкажите высоту отверстия: "))
(setq tolshinasten (getdist "\nУкажите толщину стены: "))
(setq otstup (getdist "\nУкажите отступ между разрезом и видом: "))


//////////////////////////////////////////////////////////////////////////////
//Сбор данных для прорисовки главного вида отверстия

//Расчёт длины гипотенузы
(setq glgip (/ (sqrt (+ (* shirinaot shirinaot) (* visotaot visotaot))) 2) )

//расчёт угла наклона гипотенузы к оси х
(setq glugol (/ (* (atan (/ visotaot shirinaot)) 180) pi) )

//Получаем координаты углов отверстия
(setq glVL (POLAR glCNTR (/ (* pi (- 180 glugol)) 180) glgip))
(setq glVP (POLAR glCNTR (/ (* pi glugol) 180) glgip))
(setq glNP (POLAR glCNTR (/ (* pi (- 360 glugol)) 180) glgip))
(setq glNL (POLAR glCNTR (/ (* pi (+ 180 glugol)) 180) glgip))

//Прорисовка главного вида
(command "_.LINE" glVL glVP glNP glNL glVL "" )
///////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
//Сбор данных для прорисовки вертикального разреза отверстия

//Расчёт центра вертикального отверстия
(setq vertCNTR (list (+ (car glCNTR) otstup)  (cadr glCNTR) (caddr glCNTR) ))

//Расчёт длины гипотенузы
(setq vertgip (/ (sqrt (+ (* tolshinasten tolshinasten) (* visotaot visotaot))) 2) )

//расчёт угла наклона гипотенузы к оси х
(setq vertugol (/ (* (atan (/ visotaot tolshinasten)) 180) pi) )

//Получаем координаты углов отверстия
(setq vertVL (POLAR vertCNTR (/ (* pi (- 180 vertugol)) 180) vertgip))
(setq vertVP (POLAR vertCNTR (/ (* pi vertugol) 180) vertgip))
(setq vertNP (POLAR vertCNTR (/ (* pi (- 360 vertugol)) 180) vertgip))
(setq vertNL (POLAR vertCNTR (/ (* pi (+ 180 vertugol)) 180) vertgip))

//Прорисовка вертикального разреза
(command "_.LINE" vertVL vertVP vertNP vertNL vertVL "" )
///////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
//Сбор данных для прорисовки горизонтального разреза отверстия

//Расчёт центра горизонтального отверстия
(setq gorizCNTR (list  (car glCNTR) (- (cadr glCNTR) otstup) (caddr glCNTR) ))

//Расчёт длины гипотенузы
(setq gorizgip (/ (sqrt (+ (* tolshinasten tolshinasten) (* shirinaot shirinaot))) 2) )

//расчёт угла наклона гипотенузы к оси х
(setq gorizugol (/ (* (atan (/ tolshinasten shirinaot)) 180) pi) )

//Получаем координаты углов отверстия
(setq gorizVL (POLAR gorizCNTR (/ (* pi (- 180 gorizugol)) 180) gorizgip))
(setq gorizVP (POLAR gorizCNTR (/ (* pi gorizugol) 180) gorizgip))
(setq gorizNP (POLAR gorizCNTR (/ (* pi (- 360 gorizugol)) 180) gorizgip))
(setq gorizNL (POLAR gorizCNTR (/ (* pi (+ 180 gorizugol)) 180) gorizgip))

//Прорисовка вертикального разреза
(command "_.LINE" gorizVL gorizVP gorizNP gorizNL gorizVL "" )
///////////////////////////////////////////////////////////////////////////////

(setvar "ORTHOMODE" 1) 

)
__________________
dmtools.ru

Последний раз редактировалось Mozgunov, 24.11.2008 в 21:18.
Mozgunov вне форума  
 
Непрочитано 24.11.2008, 22:31
#8
Кулик Алексей aka kpblc
Moderator

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


Вообще-то я имел в виду немного иное Измененные куски выделены цветом.
Offtop: Странное какое-то у тебя форматирование...
Код:
[Выделить все]
;;glCNTR главный вид центр отверстия
;;glVL главный вид отверстия верхний левый узел
;;glVP
;;glNP
;;glNL
;;glgip гипотенуза главного отверстия

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;vertCNTR главный вид центр отверстия
;;vertVL главный вид отверстия верхний левый узел
;;vertVP
;;vertNP
;;vertNL
;;vertgip гипотенуза главного отверстия
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:otv ()

  (setvar "cmdecho" 0)

  (setvar "ORTHOMODE" 1)

  (setq glcntr (getpoint "\nУкажите точку центра отверстия главного вида: "))
  (setq shirinaot (getdist "\nУкажите ширину отверстия: "))
  (setq visotaot (getdist "\nУкажите высоту отверстия: "))
  (setq tolshinasten (getdist "\nУкажите толщину стены: "))
  (setq otstup (getdist "\nУкажите отступ между разрезом и видом: "))


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;Сбор данных для прорисовки главного вида отверстия

  ;;Расчёт длины гипотенузы
  (setq glgip (/ (sqrt (+ (* shirinaot shirinaot) (* visotaot visotaot))) 2))

  ;;расчёт угла наклона гипотенузы к оси х
  (setq glugol (/ (* (atan (/ visotaot shirinaot)) 180) pi))

  ;;Получаем координаты углов отверстия
  (setq glvl (polar glcntr (/ (* pi (- 180 glugol)) 180) glgip))
  (setq glvp (polar glcntr (/ (* pi glugol) 180) glgip))
  (setq glnp (polar glcntr (/ (* pi (- 360 glugol)) 180) glgip))
  (setq glnl (polar glcntr (/ (* pi (+ 180 glugol)) 180) glgip))

  ;;Прорисовка главного вида
  (command "_.LINE" glvl glvp glnp glnl glvl "")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;Сбор данных для прорисовки вертикального разреза отверстия

  ;;Расчёт центра вертикального отверстия
  (setq vertcntr (list (+ (car glcntr) otstup) (cadr glcntr) (caddr glcntr)))

  ;;Расчёт длины гипотенузы
  (setq vertgip
         (/ (sqrt (+ (* tolshinasten tolshinasten) (* visotaot visotaot))) 2)
        ) ;_ end of setq

  ;;расчёт угла наклона гипотенузы к оси х
  (setq vertugol (/ (* (atan (/ visotaot tolshinasten)) 180) pi))

  ;;Получаем координаты углов отверстия
  (setq vertvl (polar vertcntr (/ (* pi (- 180 vertugol)) 180) vertgip))
  (setq vertvp (polar vertcntr (/ (* pi vertugol) 180) vertgip))
  (setq vertnp (polar vertcntr (/ (* pi (- 360 vertugol)) 180) vertgip))
  (setq vertnl (polar vertcntr (/ (* pi (+ 180 vertugol)) 180) vertgip))

  ;;Прорисовка вертикального разреза
  (command "_.LINE"   "_none"    vertvl     "_none"    vertvp     "_none"
           vertnp     "_none"    vertnl     "_none"    vertvl     ""
           ) ;_ end of command
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;Сбор данных для прорисовки горизонтального разреза отверстия

  ;;Расчёт центра горизонтального отверстия
  (setq gorizcntr (list (car glcntr) (- (cadr glcntr) otstup) (caddr glcntr)))

  ;;Расчёт длины гипотенузы
  (setq gorizgip
         (/ (sqrt (+ (* tolshinasten tolshinasten) (* shirinaot shirinaot)))
            2
            ) ;_ end of /
        ) ;_ end of setq

  ;;расчёт угла наклона гипотенузы к оси х
  (setq gorizugol (/ (* (atan (/ tolshinasten shirinaot)) 180) pi))

  ;;Получаем координаты углов отверстия
  (setq gorizvl (polar gorizcntr (/ (* pi (- 180 gorizugol)) 180) gorizgip))
  (setq gorizvp (polar gorizcntr (/ (* pi gorizugol) 180) gorizgip))
  (setq goriznp (polar gorizcntr (/ (* pi (- 360 gorizugol)) 180) gorizgip))
  (setq goriznl (polar gorizcntr (/ (* pi (+ 180 gorizugol)) 180) gorizgip))

  ;;Прорисовка вертикального разреза
  (command "_.LINE"   "_none"    gorizvl    "_none"    gorizvp    "_none"
           goriznp    "_none"    goriznl    "_none"    gorizvl    ""
           ) ;_ end of command
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/

  (setvar "ORTHOMODE" 1)

  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.11.2008, 22:42
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Mozgunov, Коментарии от C++ взял?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 24.11.2008, 22:46
#10
Кулик Алексей aka kpblc
Moderator

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


VVA, похоже на то. Или от C# )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.11.2008, 23:01
#11
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


коментарии из Delphi .
__________________
dmtools.ru
Mozgunov вне форума  
 
Автор темы   Непрочитано 24.11.2008, 23:05
#12
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Кулик Алексей aka kpblc огромное спасибо за подсветку кода и исправления ошибок. Я недавно стал только разбираться. Если это можно назвать разбираться ). Но почему-то опять не работает? Я подсветил фрагменты кода которые изменил.

Код:
[Выделить все]
;;glCNTR главный вид центр отверстия
;;glVL главный вид отверстия верхний левый узел
;;glVP
;;glNP
;;glNL
;;glgip гипотенуза главного отверстия

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;vertCNTR главный вид центр отверстия
;;vertVL главный вид отверстия верхний левый узел
;;vertVP
;;vertNP
;;vertNL
;;vertgip гипотенуза главного отверстия
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun otv (glcntr shirinaot visotaot tolshinasten otstup)

  (setvar "cmdecho" 0)

  (setvar "ORTHOMODE" 1)



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;Сбор данных для прорисовки главного вида отверстия

  ;;Расчёт длины гипотенузы
  (setq glgip (/ (sqrt (+ (* shirinaot shirinaot) (* visotaot visotaot))) 2))

  ;;расчёт угла наклона гипотенузы к оси х
  (setq glugol (/ (* (atan (/ visotaot shirinaot)) 180) pi))

  ;;Получаем координаты углов отверстия
  (setq glvl (polar glcntr (/ (* pi (- 180 glugol)) 180) glgip))
  (setq glvp (polar glcntr (/ (* pi glugol) 180) glgip))
  (setq glnp (polar glcntr (/ (* pi (- 360 glugol)) 180) glgip))
  (setq glnl (polar glcntr (/ (* pi (+ 180 glugol)) 180) glgip))

  ;;Прорисовка главного вида
  (command "_.LINE" glvl glvp glnp glnl glvl "")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;Сбор данных для прорисовки вертикального разреза отверстия

  ;;Расчёт центра вертикального отверстия
  (setq vertcntr (list (+ (car glcntr) otstup) (cadr glcntr) (caddr glcntr)))

  ;;Расчёт длины гипотенузы
  (setq vertgip
         (/ (sqrt (+ (* tolshinasten tolshinasten) (* visotaot visotaot))) 2)
        ) ;_ end of setq

  ;;расчёт угла наклона гипотенузы к оси х
  (setq vertugol (/ (* (atan (/ visotaot tolshinasten)) 180) pi))

  ;;Получаем координаты углов отверстия
  (setq vertvl (polar vertcntr (/ (* pi (- 180 vertugol)) 180) vertgip))
  (setq vertvp (polar vertcntr (/ (* pi vertugol) 180) vertgip))
  (setq vertnp (polar vertcntr (/ (* pi (- 360 vertugol)) 180) vertgip))
  (setq vertnl (polar vertcntr (/ (* pi (+ 180 vertugol)) 180) vertgip))

  ;;Прорисовка вертикального разреза
  (command "_.LINE"   "_none"    vertvl     "_none"    vertvp     "_none"
           vertnp     "_none"    vertnl     "_none"    vertvl     ""
           ) ;_ end of command
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;Сбор данных для прорисовки горизонтального разреза отверстия

  ;;Расчёт центра горизонтального отверстия
  (setq gorizcntr (list (car glcntr) (- (cadr glcntr) otstup) (caddr glcntr)))

  ;;Расчёт длины гипотенузы
  (setq gorizgip
         (/ (sqrt (+ (* tolshinasten tolshinasten) (* shirinaot shirinaot)))
            2
            ) ;_ end of /
        ) ;_ end of setq

  ;;расчёт угла наклона гипотенузы к оси х
  (setq gorizugol (/ (* (atan (/ tolshinasten shirinaot)) 180) pi))

  ;;Получаем координаты углов отверстия
  (setq gorizvl (polar gorizcntr (/ (* pi (- 180 gorizugol)) 180) gorizgip))
  (setq gorizvp (polar gorizcntr (/ (* pi gorizugol) 180) gorizgip))
  (setq goriznp (polar gorizcntr (/ (* pi (- 360 gorizugol)) 180) gorizgip))
  (setq goriznl (polar gorizcntr (/ (* pi (+ 180 gorizugol)) 180) gorizgip))

  ;;Прорисовка вертикального разреза
  (command "_.LINE"   "_none"    gorizvl    "_none"    gorizvp    "_none"
           goriznp    "_none"    goriznl    "_none"    gorizvl    ""
           ) ;_ end of command
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/

  (setvar "ORTHOMODE" 1)

  ) ;_ end of defun



(defun С:qwe()

  (setq tochka (getpoint "\nУкажите точку центра отверстия главного вида: "))
(otv tochka 500 400 300 5000)

 ) ;_ end of defun
__________________
dmtools.ru
Mozgunov вне форума  
 
Непрочитано 25.11.2008, 01:20
#13
Кулик Алексей aka kpblc
Moderator

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


Измени вызов основной функции на
Код:
[Выделить все]
(defun c:qwe ()
  (setq tochka (getpoint "\nУкажите точку центра отверстия главного вида: "))
  (otv tochka 500. 400. 300. 5000.)
  ) ;_ end of defun
Да и вообще, везде в коде вместо целых попробуй использовать дробные. Например, вместо
Код:
[Выделить все]
(setq gorizugol (/ (* (atan (/ tolshinasten shirinaot)) 180) pi))
ставь
Код:
[Выделить все]
(setq gorizugol (/ (* (atan (/ tolshinasten shirinaot)) 180.) pi))
Ну и так далее.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.11.2008, 18:57
#14
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Кулик Алексей aka kpblc, VVA Большое спасибо! Всё работает. А объсните пожалуйста зачем нужна эта конструкция ;_ end of defun ?
__________________
dmtools.ru
Mozgunov вне форума  
 
Непрочитано 25.11.2008, 18:59
#15
Кулик Алексей aka kpblc
Moderator

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


Да это просто комментарий.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.11.2008, 19:09
#16
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Ребят ещё один вопрос. Сегодня бился с этой проблемой, но в упор не вижу где ошибка. Функция работает. Внутренне отверстие прорисовывается нормально, а вот с внешним такое дело:

Вся беда в этоих строчках

Код:
[Выделить все]
;;расчёт угла наклона виртуальной гипотенузы главный вид к оси х
(setq glugolvirt (/ (* (atan (/ glvirtvisota glvirtshir)) 180.) pi) )
После выполнения скрипта проверяю значения !glvirtvisota=3500 !glvirtshir=4000 а возвращаемый угол в градусах !glugolvirt=45. Не может же быть в прямоугольном треугольнике с катетами 3500 и 4000 угол при основании 45градусов

Причём при прорисовки внутреннего отверстия работает та же самая конструкция и всё прорисовывается замечательно.




Код:
[Выделить все]
(defun otverstie ()

(setq shirina 500)
(setq visotaotv 1000)
(setq tolshinasten  200)
(setq centrglav (getpoint "\nУкажите точку центра отверстия главного вида: "))
(setq obrvertdlinank 500)
(setq obrgorizdlinank 500)
(setq scobagorizdlin 400)
(setq scobavertdlin   500)
(setq otstc 500)
(setq otstcc 500)



;; Отключаем привязки и орто

(setvar "ORTHOMODE" 0)
(setvar "OSMODE"0)

;;Расчитываем отступ между отверстием и виртуальным вертикальным обрывом
;;Предварительно определив что длиннее скоба или стержень из горизонтальных 

(if (>= scobagorizdlin obrgorizdlinank) (setq naibolshdlingoriz scobagorizdlin) (setq naibolshdlingoriz obrgorizdlinank) ) 
(setq gorizotstup (+ naibolshdlingoriz otstc otstcc) )


;;Расчитываем отступ между отверстием и виртуальным горизонтальным обрывом
;;Предварительно определив что длиннее скоба или стержень из вертикальных 

(if (>= scobavertdlin obrvertdlinank) (setq naibolshdlinvert scobavertdlin) (setq naibolshdlinvert obrvertdlinank) ) 
(setq vertotstup (+ naibolshdlinvert otstc otstcc) )


;; Из полученных данных получаем виртуальную ширину и высоту отверстия главного вида

(setq glvirtshir (+ gorizotstup gorizotstup shirina) )
(setq glvirtvisota (+ vertotstup vertotstup visotaotv) )


;;Расчёт длины гипотенузы на главном виде
(setq glgip (/ (sqrt (+ (* shirina shirina) (* visotaotv  visotaotv ))) 2) )

;;Расчёт длины виртуальной гипотенузы на главном виде
(setq glgipvirt (/ (sqrt (+ (* glvirtshir glvirtshir) (* glvirtvisota glvirtvisota))) 2) )


;;расчёт угла наклона гипотенузы главный вид к оси х
(setq glugol (/ (* (atan (/ visotaotv shirina)) 180.) pi) )

;;расчёт угла наклона виртуальной гипотенузы главный вид к оси х
(setq glugolvirt (/ (* (atan (/ glvirtvisota glvirtshir)) 180.) pi) )


;;Получаем координаты углов отверстия главный вид
(setq glvl (POLAR centrglav  (/ (* pi (- 180. glugol)) 180.) glgip))
(setq glvp (POLAR centrglav  (/ (* pi glugol) 180.) glgip))
(setq glnp (POLAR centrglav  (/ (* pi (- 360. glugol)) 180.) glgip))
(setq glnl (POLAR centrglav  (/ (* pi (+ 180. glugol)) 180.) glgip))

;;Получаем координаты углов виртуального отверстия главный вид
(setq glvlvirt (POLAR centrglav  (/ (* pi (- 180. glugolvirt)) 180.) glgipvirt))
(setq glvpvirt (POLAR centrglav  (/ (* pi glugolvirt) 180.) glgipvirt))
(setq glnpvirt (POLAR centrglav  (/ (* pi (- 360. glugolvirt)) 180.) glgipvirt))
(setq glnlvirt (POLAR centrglav  (/ (* pi (+ 180. glugolvirt)) 180.) glgipvirt))

;; Прорисовываем внутреннее отверстие

(command "_.PLINE"  glvl glvp glnp glnl glvl "" )

;; Прорисовываем линии обрыва
(command "_.spbreak_linear"  glvlvirt glvpvirt glvpvirt)
(command "_.spbreak_linear"  glvpvirt glnpvirt glnpvirt)
(command "_.spbreak_linear"  glnpvirt glnlvirt glnlvirt)
(command "_.spbreak_linear"  glnlvirt glvlvirt glvlvirt)



);;Конец функции
__________________
dmtools.ru
Mozgunov вне форума  
 
Автор темы   Непрочитано 25.11.2008, 19:10
#17
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Да это просто комментарий.
Я думал, что для коментариев нужна двойная точка с запятой . Спасибо!
__________________
dmtools.ru
Mozgunov вне форума  
 
Непрочитано 26.11.2008, 00:27
#18
Кулик Алексей aka kpblc
Moderator

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


Если бы был образец, в котором показано "что должно получиться", эффекту, может быть, было бы больше...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.11.2008, 01:14
#19
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Кулик Алексей aka kpblc Хотел скрипт написать для армирования отверстий
Как напишу, будет образец. Только корявый очень. Ну пользователю не видно что там внутри
__________________
dmtools.ru
Mozgunov вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > "В точке ... создана линия нулевой длины" помогите разобраться

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью vba начертить линию vasyavip Программирование 77 09.10.2008 23:17
ANSYS 10 Помогите разобраться. Aндрeй ANSYS 6 12.12.2007 00:03