nanoCAD 20 ИНЖЕНЕРНАЯ ЭКОСИСТЕМА
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

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

Два задания не могу найти ошибку...подскажите..

Ответ
Поиск в этой теме
Непрочитано 01.08.2011, 13:54 #1
Два задания не могу найти ошибку...подскажите..
Kashtan$$$
 
Регистрация: 31.07.2011
Сообщений: 3

Идет построение параметрического изображения стрелы экскаватора при загрузке файла выдает таку ю ошибку ; error: bad argument type: numberp: nil
воот собственно сам код
Код:
[Выделить все]
 ; HSI1 - ширина нижнего колена стрелы у изгиба
; LVS - длина верхнего колена стрелы
; HSI2 - ширина верхней части стрелы у изгиба
; HSR - ширина верхней части стрелы у рукояти
; LSI1 - длина изогнутой части нижнего колена стрелы
; LSI2 - длина изогнутой части верхнего колена стрелы
; US1 - угол между верхней и нижней частями стрелы
; US - угол наклона нижней части стрелы
; *****************************************************************************************
(DEFUN STRELA (HS LHS LCS LCR HCR HSI1 LVS HSI2 HSR LSI1 LSI2 US1 US)
  (SETQ BC (POLAR BS US LCS)
        T1 (POLAR BS (+ US (/ PI 2)) (/ HS 2))
        T8 (POLAR BS (+ US (* 1.5 PI)) (/ HS 2))
        BS1 (POLAR BS US LHS)
        T2 (POLAR BS1 (+ US (/ PI 2)) (/ HSI1 2))
        T7 (POLAR BS1 (+ US (* 1.5 PI)) (/ HSI1 2))
        BS2 (POLAR BS1 US LSI1)
        US2 (- (+ US US1) PI)
        BS3 (POLAR BS2 US2 LSI2)
        T3 (POLAR BS3 (+ US2 (/ PI 2)) (/ HSI2 2))
        T6 (POLAR BS3 (+ US2 (* 1.5 PI)) (/ HSI2 2))
        BSR (POLAR BS3 US2 LVS)
        T4 (POLAR BSR (+ US2 (/ PI 2)) (/ HSR 2))
        T5 (POLAR BSR (= US2 (* 1.5 PI)) (* 0.5 HSR))
        )
  (SETQ T9 (POLAR BS US LCR)
        BCR (POLAR T9 (+ US (/ PI 2)) HCR)
        )
  (COMMAND "PLINE" T1 "W" 0.1 0.1 T2 "ARC" T3 "LINE" T4
           "ARC" T5 "LINE" T6 "ARC" T7 "LINE" T8 "ARC" T1 " "
           "CIRCLE" BS (* 0.2 HS) "CIRCLE" BSR (* 0.2 HSR)
           )
  )
(SETQ BS'(30 30))    ; УСТАНОВКА БАЗОВОЙ ТОЧКИ СТРЕЛЫ
(STRELA 15 100 110 130 5 30 100 30 10 10 10 2.5 0.6);ВЫЗОВ ФУНКЦИИ
(COMMAND "ZOOM" "A")
 
Во втором задании идет построение параметрического изображения модели 2 д тоже выдает ошибку следуещего содержания Выберите объекты: all
*Неверный выбор*
Требуется точка или
Рамка/Последний/Секрамка/БОКС/Все/Линия/РМн-угол/СМн-угол/Группа/Добавить/Исключ
ить/Несколько/Текущий/Отменить/Авто/Единственный
; error: Function cancelled
вот собственно сам код
Код:
[Выделить все]
 (defun mod2d (/ d1 d2 d3 w1 w2 w3 r1 r2 r3)
(command "erase" "all" "")
(command "ortho" "on")
(setvar "cmdecho" 1)
(command "limits" "0,0" "210,297")
(command "grid" "10")
(command "snap" "1")
(command "osnap" "off")
(command "layer" "m" "osn" "l" "continuous" "osn" "lw" "0.3" "osn" "")
(command "layer" "m" "osev" "l" "center" "osev" "lw" "0.05" "osev" "")
(command "layer" "m" "vsp" "l" "continuous" "vsp" "lw" "0.05" "vsp" "")
(command "_. regen")
(command "view" "t")
(setvar "lwdisplay" 1)
(command "layer" "s" "osn" "")
(setq d1 0)
(while (or (< d1 35) (> d1 45))
(initget 6)
(setq d1 (getreal "Введите наибольший диаметр детали <40>"))
(if (= d1 nil) (setq d1 40)))
(setq d2 0)
(while (or (< d2 26) (> d2 37))
(initget 6)
(setq d2 (getreal " Введите средний диаметр детали <32>"))
(if (= d2 nil) (setq d2 32)))
(setq d3 0)
(while (or (< d3 15) (> d3 25))
(initget 6)
(setq d3 (getreal " Введите наименьший диаметр детали <20>"))
(if (= d3 nil) (setq d3 20)))
(setq w1 0)
(while (or (< w1 17) (> w1 27))
(initget 6)
(setq w1 (getreal " Введите максимальную ширину детали <22>"))
(if (= w1 nil) (setq w1 22)))
(setq w2 0)
(while (or (< w2 10) (> w2 20))
(initget 6)
(setq w2 (getreal " Введите расстояние от верха детали до конца среднего кольца <15> "))
(if (= w2 nil) (setq w2 15)))
(setq w3 0)
(while (or (< w3 5) (> w3 15))
(initget 6)
(setq w3 (getreal " Введите высоту верхнего кольца детали <10>"))
(if (= w3 nil) (setq w3 10)))
(setq r1 0)
(while (or (< r1 65) (> r1 75))
(initget 6)
(setq r1 (getreal "Введите диаметр, проходящий через центр фигуры и центр отверстий <70>"))
(if (= r1 nil) (setq r1 70)))
(setq r2 0)
(while (or (< r2 2) (> r2 12))
(initget 6)
(setq r2 (getreal " Введите диаметр маленьких отверстий детали <7>"))
(if (= r2 nil) (setq r2 7)))
(setq r3 0)
(while (or (< r3 3) (> r3 13))
(initget 6)
(setq r3 (getreal " Введите радиус сопряжения детали <8>"))
(if (= r3 nil) (setq r3 8)))
(setq x (list 150 150))
(command "layer" "s" "osev" "")
(setvar "ltscale" 4)
(setq h (+ (/ r1 2) (/ d1 2) r3 r3))
(setq c1 (/ d1 2))
(setq c2 (/ d2 2))
(setq c3 (/ d3 2))
(setq os1 (list ( - 150 c1 3) 150)
os2 (list (+ 150 c1 3) 150)
os3 (list ( - 150 (/ h 2) 33 w1) 150)
os4 (list ( - 150 (/ h 2) 27) 150)
os5 (list 150 (+ 150 (/ r1 2) r3 3))
os7 (list 150 ( - 150 c1 r3 3)))
(command "line" os1 os2 "")
(command "line" os3 os4 "")
(command "line" os5 x "")
(setq l1 (entlast))
(command "line" x os7 "")
(setq n1 (entlast))
(command "layer" "s" "osn" "")
(command "circle" x c1)
(command "circle" x c2)
(command "circle" x c3)
(command "layer" "s" "osev" "")
(command "circle" x (/ r1 2))
(command "layer" "s" "osn" "")
(setq b1 (list 150 (+ 150 (/ r1 2))))
(command "circle" b1 (/ r2 2))
(setq kr1 (entlast))
(command "circle" b1 r3)
(setq kr2 (entlast))
(command "array" l1 kr1 kr2 "" "P" x "2" "-120" "")
(setq mas2 (entlast))
(command "array" l1 kr1 kr2 "" "P" x "2" "120" "")
(setq mas (entlast))
(command "osnap" "tan")
(setq t1 (list ( - 150 r3) (cadr b1)))
(setq t2 (list ( - 150 (/ r1 2) (/ r3 2)) ( - 150 c2)))
(command "line" t1 t2 "")
(setq l2 (entlast))
(setq t3 (list (car t2) ( - (cadr t2) r2)))
(setq t4 (list (+ 150 (/ r1 2) (/ r3 2)) (cadr t3)))
(command "line" t3 t4 "")
(setq l3 (entlast))
(setq t5 (list (+ 150 r3) (cadr b1)))
(setq t6 (list (car t4) (cadr t2)))
(command "line" t5 t6 "")
(setq l4 (entlast))
(command "trim" l2 l3 l4 "" kr2 mas2 mas "")
(command "erase" mas "" "")
(command "fillet" "r" "8")
(command "fillet" l2 l3 "")
(setq arc1 (entlast))
(command "trim" l3 "" n1 "")
(command "lengthen" "de" "3" n1 "")
(command "lengthen" "de" (+ 40 h) l3 "")
(command "osnap" "int")
(setq ss (list (car t3) ( - (cadr t3) 2)))
(setq os8 (list (car os4) (cadr b1)))
(setq os9 (list ( - (car os8) 6 ( - w1 w2)) (cadr b1)))
(command "layer" "s" "osev" "")
(command "line" os8 os9 "")
(command "layer" "s" "osn" "")
(setq k1 (list ( - (car os8) 3) (+ 150 ( - (/ r1 2) (/ r2 2)))))
(setq k2 (list ( - (car k1) ( - w1 w2)) (cadr k1)))
(command "line" k1 k2 "")
(setq k3 (list (car k1) (+ 150 (/ r1 2) (/ r2 2))))
(setq k4 (list (car k2) (cadr k3)))
(command "line" k3 k4 "")
(setq k5 (list (car k1) (+ 150 c3)))
(setq k6 (list ( - (car k1) w1) (cadr k5)))
(command "line" k5 k6 "")
(setq k7 (list (car k1) ( - 150 c3)))
(setq k8 (list (car k6) (cadr k7)))
(command "line" k7 k8 "")
(setq a1 (list (car k1) ( - 150 (/ r1 2))))
(setq a2 (list (car k2) (cadr a1)))
(setq a3 (list (car k2) ( - 150 c1)))
(setq a4 (list ( - (car k1) ( - w1 w3)) (cadr a3)))
(setq a5 (list (car a4) (cadr t2)))
(setq a6 (list (car k6) (cadr t2)))
(setq a7 (list (car k6) (+ 150 c2)))
(setq a8 (list (car a4) (cadr a7)))
(setq a9 (list (car a4) (+ 150 c1)))
(setq a10 (list (car k2) (cadr a9)))
(setq a11 (list (car k2) ( - (cadr os5) 3)))
(setq a12 (list (car k1) (cadr a11)))
(command "line" a1 a2 "")
(setq l5 (entlast))
(command "line" a2 a3 "")
(setq l6 (entlast))
(command "line" a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 "")
(command "line" a12 a1 "")
(setq l7 (entlast))
(command "trim" l7 l6 arc1 "" l3 "")
(command "trim" l7 l3 "" l7 l6"")
(command "erase" l5 "" "")
(command "trim" arc1 l7 "" ss "")
(setq m1 (list ( - (car os4) 4) (+ (cadr k1) 1)))
(setq m2 (list (car m1) (+ (cadr k3) 1)))
(setq m3 (list (car m1) ( - (cadr k7) 1)))
(command "layer" "s" "vsp" "")
(command "bhatch" "p" "ansi31" "0.5" "0" m1 "")
(command "bhatch" "p" "ansi31" "0.5" "0" m2 "")
(command "bhatch" "p" "ansi31" "0.5" "0" m3 "")
(command "style" "Марьяна" "isocpeur" "2.5" "1" "15" "n" "n" "y")
(setvar "dimtxsty" "Марьяна")
(command "dimstyle" "s" "Марьяна" "y")
(command "dimstyle" "r" "Марьяна")
(setq raz1 (list ( - 150 (/ h 2) w1 40) 150))
(setq raz2 (list ( - (car raz1) 7) 150))
(setq raz3 (list ( - (car raz1) 14) 150))
(setq raz4 (list (+ (car raz1) 10) ( - (cadr raz1) c2 10)))
(setq raz5 (list ( - 150 (/ h 2) ( - w1 w2) 40) ( - 150 c2 17)))
(setq raz6 (list (car raz4) ( - (cadr raz5) 7)))
(setq raz7 (list 150 ( - (cadr a11) r3)))
(setq raz8 (list (+ 150 c3) (cadr k5)))
(setq raz9 (list 145 (+ (cadr raz7) r3)))
(setq raz10 (list ( - 150 c3) (cadr a11)))
(setq raz11 (list 150 (+ 150 (/ r1 3))))
(setq raz12 (list (car t3) (cadr t3)))
(setq raz13 (list ( - 150 (/ r1 2) r3 10) 150))
(setq raz14 (list 150 (+ (cadr b1) (/ r2 2))))
(setq raz15 (list (car raz8) (+ (cadr b1) r3)))
(command "dimlinear" k7 k5 "m" "%%c<>" raz1)
(setq p_raz9 (osnap raz9 "nea"))
(setq p_raz14 (osnap raz14 "tan"))
(command "dimlinear" a5 a8 "m" "%%c<>" raz2)
(command "dimlinear" a3 a10 "m" "%%c<>" raz3)
(command "dimlinear" a5 k8 raz4)
(command "dimlinear" a3 k8 raz5)
(command "dimlinear" k7 k8 raz6)
(command "dimdiameter" raz7 raz8)
(command "dimradius" p_raz9 raz10)
(command "dimangular" raz11 raz12 raz13)
(command "dimradius" p_raz14 raz15)
(command "line" "20,5" "205,5" "")
(command "line" "205,5" "205,292" "")
(command "line" "205,292" "20,292" "")
(command "line" "20,292" "20,5" "")
(command "line" "20,60" "205,60" "")
(command "_. zoom" "e")
)
Автокад 2006

Последний раз редактировалось Kashtan$$$, 01.08.2011 в 13:56. Причина: Плохая память)))
Просмотров: 3655
 
Непрочитано 01.08.2011, 15:52
#2
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Kashtan$$$, открой "Редактор VisualLisp" (в ком. строке ACAD'a набери _.vlide) открой lsp-файл с кодом и в пошаговом режиме F8 просмотри свой код, в первом примере ошибка выделена красным цветом, какая разберешься сам
Код:
[Выделить все]
 ; HSI1 - ширина нижнего колена стрелы у изгиба
; LVS - длина верхнего колена стрелы
; HSI2 - ширина верхней части стрелы у изгиба
; HSR - ширина верхней части стрелы у рукояти
; LSI1 - длина изогнутой части нижнего колена стрелы
; LSI2 - длина изогнутой части верхнего колена стрелы
; US1 - угол между верхней и нижней частями стрелы
; US - угол наклона нижней части стрелы
; *****************************************************************************************
(DEFUN STRELA (HS LHS LCS LCR HCR HSI1 LVS HSI2 HSR LSI1 LSI2 US1 US)
  (SETQ BC (POLAR BS US LCS)
        T1 (POLAR BS (+ US (/ PI 2)) (/ HS 2))
        T8 (POLAR BS (+ US (* 1.5 PI)) (/ HS 2))
        BS1 (POLAR BS US LHS)
        T2 (POLAR BS1 (+ US (/ PI 2)) (/ HSI1 2))
        T7 (POLAR BS1 (+ US (* 1.5 PI)) (/ HSI1 2))
        BS2 (POLAR BS1 US LSI1)
        US2 (- (+ US US1) PI)
        BS3 (POLAR BS2 US2 LSI2)
        T3 (POLAR BS3 (+ US2 (/ PI 2)) (/ HSI2 2))
        T6 (POLAR BS3 (+ US2 (* 1.5 PI)) (/ HSI2 2))
        BSR (POLAR BS3 US2 LVS)
        T4 (POLAR BSR (+ US2 (/ PI 2)) (/ HSR 2))
        T5 (POLAR BSR (= US2 (* 1.5 PI)) (* 0.5 HSR))
        )
  (SETQ T9 (POLAR BS US LCR)
        BCR (POLAR T9 (+ US (/ PI 2)) HCR)
        )
  (COMMAND "PLINE" T1 "W" 0.1 0.1 T2 "ARC" T3 "LINE" T4
           "ARC" T5 "LINE" T6 "ARC" T7 "LINE" T8 "ARC" T1 " "
           "CIRCLE" BS (* 0.2 HS) "CIRCLE" BSR (* 0.2 HSR)
           )
  )
(SETQ BS'(30 30))    ; УСТАНОВКА БАЗОВОЙ ТОЧКИ СТРЕЛЫ
(STRELA 15 100 110 130 5 30 100 30 10 10 10 2.5 0.6);ВЫЗОВ ФУНКЦИИ
(COMMAND "ZOOM" "A")
Во втором ищи сам описанным выше способом.
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 01.08.2011, 16:20
#3
Kashtan$$$


 
Регистрация: 31.07.2011
Сообщений: 3


ООО эт моя невнимательность спасибо....но чет на F8 не хотит у меня проверять....
Kashtan$$$ вне форума  
 
Непрочитано 01.08.2011, 16:45
#4
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Открываем в Реакторе VisualLisp второй код, ставим курсор на начало строки (command "erase" "all" ""), ставим точку прерывания (F9). Запускаем код (см. рисунок), выполнение остановиться на точке прерывания, далее жмем (F8) и в пошаговом режиме отслеживаем выполнение каждой операции. Находим место ошибки и выясняеи ее причину.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 122
Размер:	11.0 Кб
ID:	63784  
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 01.08.2011, 17:57
#5
Кулик Алексей aka kpblc
Moderator

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


http://autolisp.ru/2009/09/10/vlide-misc-01/ + http://autolisp.ru/2009/09/12/vlide-misc-02/ )))
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.08.2011, 09:34
#6
Kashtan$$$


 
Регистрация: 31.07.2011
Сообщений: 3


с первым разобрался...а вот со вторым загвоздочка при проверке выдает характерный звук ошибки и в консоли лиспа выдает следуещее ; 1 form loaded from #<editor "C:/Program Files/AutoCAD 2006/kr5.LSP">
_$
и ошибка прежняя помогите а может я что и не так делаю...уже запарился просто
Kashtan$$$ вне форума  
 
Непрочитано 05.08.2011, 14:03
#7
Oliver_88

"ценный кадр"
 
Регистрация: 02.12.2010
Сообщений: 115
<phrase 1=


Во втором примере строчку:
Код:
[Выделить все]
 (command "erase" "all" "")
Заменить на:
Код:
[Выделить все]
 (if (ssget "_X")(command "erase" "all" ""))
Oliver_88 вне форума  
 
Непрочитано 07.08.2011, 21:28
#8
Li6-D


 
Регистрация: 03.05.2009
Сообщений: 112


Oliver_88, команда "erase" не должна выдавать ошибку в случае, когда нет выбранных объектов.
А чтобы не было сюрпризов в работе, лучше писать так:
Код:
[Выделить все]
(command "_.erase" "_all" "")
Миниатюры
Нажмите на изображение для увеличения
Название: написание кода с командами.jpg
Просмотров: 81
Размер:	76.6 Кб
ID:	64129  

Последний раз редактировалось Li6-D, 07.08.2011 в 22:02.
Li6-D вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Два задания не могу найти ошибку...подскажите..

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, гуру! Можно ли в разделенном на 2 части окне автокада открыть два разных чертежа? Или это возможно только в 2 запущенных копиях АВТОКАДА? Ridder AutoCAD 5 22.07.2010 06:02
Подскажите где можно найти теорию и расчет режущих апаратов двух опорного резания. DmitriyS Поиск литературы, чертежей, моделей и прочих материалов 4 13.02.2009 20:15
Не могу найти уроки по AUTOCAD skalder AutoCAD 8 13.12.2003 21:40
Не могу найти коды DXF для selectionset в VBA... ssn Программирование 4 06.12.2003 17:19