Error: too many arguments - AutoLISP

Узнай цену своей работы

Формулировка задачи:

При отладке показывает на кусок кода:
 (IF (= J 1)
    (SETQ TT1 BT            ; координаты первого угла офиса
          TT2 T1            ; координаты второго угла офиса
          TT3 T2            ; координаты третьего угла офиса
          TT4 T3            ; координаты четвертого угла офиса
    )
    
                    ; определение координат точек для ввода текста
    (SETQ BTT (POLAR BT (+ UR (/ PI 2.7)) (/ H 2))
          BTX (POLAR BT (+ UR (/ PI 3.7)) (/ H 1.7))
          H1  (ITOA H)
          D1  (ITOA D)
          TTT " "
          TTT (IF (> J 2)
            (STRCAT D1 "*" H1)
          )
          J   (+ J 1)
    )
                    ; введение текстовой информации в прямоугольник
    (COMMAND "TEXT"
         "C"
         BTT
         (/ D 5)
         (+ 90 UG)
         TXT
         "TEXT"
         "C"
         BTX
         " "
         " "
         TTT
    )
      )
Вот вся запись
 (DEUN BOX
      (X Y D H TXT UG)
                    ; определение координат вершин прямоугольника
      (SETQ BT (LIST X Y)       ; базовая точка офиса (мебели)
        UR (* PI (/ UG 180.0))  ; преобразование градусов  в радианы
        T1 (POLAR BT (+ UR (/ PI 2)) H)
        T2 (POLAR T1 UR D)
        T3 (POLAR BT UR D)
      )
                    ; создание изображения прямоугольника
      (COMMAND "LINE" BT T1 T2 T3 BT " ")
      (IF (= J 1)
    (SETQ TT1 BT            ; координаты первого угла офиса
          TT2 T1            ; координаты второго угла офиса
          TT3 T2            ; координаты третьего угла офиса
          TT4 T3            ; координаты четвертого угла офиса
    )
    
                    ; определение координат точек для ввода текста
    (SETQ BTT (POLAR BT (+ UR (/ PI 2.7)) (/ H 2))
          BTX (POLAR BT (+ UR (/ PI 3.7)) (/ H 1.7))
          H1  (ITOA H)
          D1  (ITOA D)
          TTT " "
          TTT (IF (> J 2)
            (STRCAT D1 "*" H1)
          )
          J   (+ J 1)
    )
                    ; введение текстовой информации в прямоугольник
    (COMMAND "TEXT"
         "C"
         BTT
         (/ D 5)
         (+ 90 UG)
         TXT
         "TEXT"
         "C"
         BTX
         " "
         " "
         TTT
    )
      )
      (DEFUN OFFICE (X Y LDD LD)    ; создание плана офиса
    (SETVAR "CMDECHO" 0)        ; отключение эха команд
    (SETVAR "BLIPMODE" 0)       ; отключение изображения маркера
    (COMMAND "LIMITS" "0,0" "192,168" "ZOOM" "A")
    (SETQ N  (NTH 0 LDD)        ; номер угла отсчета двери
          D2 (NTH 1 LDD)        ; расстояние от двери до угла
          HD (NTH 2 LDD)
    )               ; ширина двери
    (SETQ J 1)
                    ; цикл изображения плана офиса и мебели в нем
    (FOREACH EL LD
      (SETQ X   (NTH 0 EL)      ; координаты по оси X
        Y   (NTH 1 EL)      ; координаты по оси Y
        D   (NTH 2 EL)      ; длина офиса (мебели)
        H   (NTH 3 EL)      ; ширина офиса (мебели)
        TXT (NTH 4 EL)      ; название мебели
        U   (NTH 5 EL)
      )             ; угол установки мебели, градусы
      (IF (EQ J 1)
        (SETQ X1 X)
      )
      (IF (EQ J 2)
        (SETQ H0 (- X X1))
      )             ; толщина стены офиса
      (BOX X Y D TXT U)     ; изображение офиса (мебели)
    )
                    ; определение координат расположения точек двери
    (COND ((= N 1)
           (SETQ TR1 (POLAR TT1 (/ PI 2) D2)
             TR2 (POLAR TR1 (/ PI 2) HD)
             TP1 (POLAR TR1 0 HO)
             TP2 (POLAR TR2 0 HO)
           )
          )
          ((= N 2)
           (SETQ TR1 (POLAR TT2 0 D2)
             TR2 (POLAR TR1 0 HD)
             TP1 (POLAR TR1 (* (/ 3 2.0) PI) HO)
             TP2 (POLAR TR2 (* (/ 3 2.0) PI) HO)
           )
          )
          ((= N 3)
           (SETQ TR1 (POLAR TT3 (* (/ 3 2.0) PI) D2)
             TR2 (POLAR TR1 (* (/ 3 2.0) PI) HD)
             TP1 (POLAR TR1 PI HO)
             TP2 (POLAR TR2 PI HO)
           )
          )
          ((= N 4)
           (SETQ TR1 (POLAR TT4 PI D2)
             TR2 (POLAR TR1 PI HD)
             TP1 (POLAR TR1 (/ PI 2) HO)
             TP2 (POLAR TR2 (/ PI 2) HO)
           )
          )
          (SETQ TR3 (POLAR TP1 (- (/ PI 4) (* (/ PI2) (- N1))) HD))
                    ; изображение двери
          (COMMAND       "BREAK"       TR1    TR2
                    ; удаление части стенки офиса
           "BREAK"       TP1    TP2 ; удаление части стенки офиса
           "LINE" TP1    TR1    ""  ; соединение кончиков стен офиса
           "LINE" TP2    TR2    ""  ; соединение кончиков стен офиса
           "LINE" TP1    TR3    ""  ; изображение открытой двери
           "ARC"  TR3    "END"  TP2    TR2
                    ; изображение следа двери
          )
          (OFFICE
           24
           24
           '(3 10 30)
           '((24 24 144 120 " " 0)
         (28 28 136 112 " " 0)
         (29 29 24 60 "Стол" 0)
         (80 29 30 60 "Доска" 0)
         (145 29 18 36 "Шкаф" 0)
         (56 48 24 "Кресло" 0)
         (132 100 12 18 "Стул" 206)
         (140 56 16 24 "Кресло" 162)
        )
          )

    )
     )
)

Решение задачи: «Error: too many arguments»

textual
Листинг программы
(defun box

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы