首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCL Lisp坏参数类型错误

DCL Lisp坏参数类型错误
EN

Stack Overflow用户
提问于 2015-08-27 14:05:42
回答 1查看 439关注 0票数 0

我得到了一个错误类型:

代码语言:javascript
复制
error: bad argument type: (or stringp symbolp): 1`

有人知道为什么吗?我认为这是在最后一次if

代码语言:javascript
复制
  (defun C:girth ( / dcl_id gr_ded)

  (setq NAMES '("0.032 in" "0.050 in" "0.080 in" "1/8 in" "1/4 in" "16 GA" "18 GA" "20 GA"))
  (setq dcl_id (load_dialog "girth.dcl"))

  (if (not (new_dialog "girth" dcl_id))
    (exit)
  )

  (start_list "selections")
  (mapcar 'add_list NAMES)
  (end_list)

  (action_tile
    "cancel"
    "(done_dialog) (setq userclick nil)"
  );action_tile

  (action_tile
    "accept"
    (strcat
    "(progn
        (if (or (= \"selections\" \"0.032 in\") (= \"selections\" \"20 GA\"))
            (setq gr_ded 0)
            (if (or (= \"selections\" \"0.050 in\") (= \"selections\" \"18 GA\"))
                (setq gr_ded 0.0625)
                (if (or (= \"selections\" \"0.080 in\") (= \"selections\" \"16 GA\"))
                    (setq gr_ded 0.125)
                    (if (= \"selections\" \"1/8 in\")
                        (setq gr_ded 0.1875)
                        (if (= \"selections\" \"3/16 in\")
                            (setq gr_ded 0.3125)
                            (if (= \"selections\" \"1/4 in\")
                                (setq gr_ded 0.375)
                                (setq gr_ded 1)
                            )
                        )
                    )
                )
            )
        )

    (alert \"Value: \" (getvar gr_ded)))"
    );strcat

  );action tile

  (start_dialog)

  (unload_dialog dcl_id)
  (princ)
)

--这是“新”代码(仍然不起作用):

gr_ded现在是m_deductselectionsthk

代码语言:javascript
复制
(defun C:girth ( / dcl_id m_deduct mat_thk)

  (setq NAMES '("0.032 in" "0.050 in" "0.080 in" "1/8 in" "1/4 in" "16 GA" "18 GA" "20 GA"))
  (setq dcl_id (load_dialog "girth.dcl"))

  (if (not (new_dialog "girth" dcl_id))
    (exit)
  )

  (start_list "thk")
  (mapcar 'add_list NAMES)
  (end_list)

  (action_tile
    "cancel"
    "(done_dialog) (setq userclick nil)"
  );action_tile

  (action_tile
    "accept"
    (strcat "(progn (setq mat_thk (get_tile \"thk\"))"
      "(done_dialog) (setq UserClick T))"
    );strcat
  );action_tile

  (start_dialog)

  (unload_dialog dcl_id)

  (if (= UserClick T)
    (progn
         (cond ((or (= mat_thk "0.032 in") (= mat_thk "20 GA"))
                (setq m_deduct 0)
          )
          ((or (= mat_thk "0.050 in") (= mat_thk "18 GA"))
                (setq m_deduct 0.0625)
          )
          ((or (= mat_thk "0.080 in") (= mat_thk "16 GA"))
                (setq m_deduct 0.125)
          )
          ((= mat_thk "1/8 in")
                (setq m_deduct 0.1875)
          )
          ((= mat_thk "3/16 in")
                (setq m_deduct 0.3125)
          )
          ((= mat_thk "1/4 in")
                (setq m_deduct 0.375)
          )
          (t (setq m_deduct 1))
    );_cond

(alert (strcat "Value: " (rtos m_deduct 2 5)))
   );progn
   );if userclick

  (princ)
);defun

Girth.dcl

代码语言:javascript
复制
girth : dialog {
    label = "MyTitle";
    initial_focus = "ang1";

: boxed_radio_column {

    label = "Calc";

    : row {

    : popup_list {
            label = "Thick:";
            key = "thk";
            value = "1";
           }

    : text_part {
            label = "Option 1";
           }        
    }

    spacer;

    : row {

    : edit_box {
            label = "Angle 1:";
            edit_limit = 6;
            edit_width = 6;
            key = "ang1";
           }

    : edit_box {
            label = "Dim 1:";
            edit_limit = 7;
            edit_width = 7;
            key = "dim1";
           }

    }

    : row {

    : edit_box {
            label = "Angle 2:";
            edit_limit = 6;
            edit_width = 6;
            key = "ang2";
           }

    : edit_box {
            label = "Dim 2:";
            edit_limit = 7;
            edit_width = 7;
            key = "dim2";
           }

    }

    : row {

    : edit_box {
            label = "Angle 3:";
            edit_limit = 6;
            edit_width = 6;
            key = "ang3";
           }

    : edit_box {
            label = "Dim 3:";
            edit_limit = 7;
            edit_width = 7;
            key = "dim3";
           }

    }

    : row {

    : edit_box {
            label = "Angle 4:";
            edit_limit = 6;
            edit_width = 6;
            key = "ang4";
           }

    : edit_box {
            label = "Dim 4:";
            edit_limit = 7;
            edit_width = 7;
            key = "dim4";
           }

    }

    : row {

    : edit_box {
            label = "Angle 5:";
            edit_limit = 6;
            edit_width = 6;
            key = "ang5";
           }

    : edit_box {
            label = "Dim 5:";
            edit_limit = 7;
            edit_width = 7;
            key = "dim5";
           }

    }

    : row {

    : edit_box {
            label = "Angle 6:";
            edit_limit = 6;
            edit_width = 6;
            key = "ang6";
           }

    : edit_box {
            label = "Dim 6:";
            edit_limit = 7;
            edit_width = 7;
            key = "dim6";
           }

    }

    : row {

    : edit_box {
            label = "Angle 7:";
            edit_limit = 6;
            edit_width = 6;
            key = "ang7";
           }

    : edit_box {
            label = "Dim 7:";
            edit_limit = 7;
            edit_width = 7;
            key = "dim7";
           }

    }

    : row {
        spacer;
    }
}

: row {
    key = "det";
    : radio_button { label = "A"; value = "1"; }    
    : radio_button { label = "B"; }    
    : radio_button { label = "C"; } 
      }  

ok_cancel;

}
EN

回答 1

Stack Overflow用户

发布于 2015-08-28 08:44:16

我想它就在这个问题上:

代码语言:javascript
复制
(alert \"Value: \" (getvar gr_ded)))

试着用:

代码语言:javascript
复制
(alert (strcat \"Value: \" (rtos gr_ded)))

gr_ded不太确定。这似乎是一个数字,但你为什么用它打电话给getvar呢?

您应该使用cond而不是嵌套的if。

strcataction_tile的第二个论点是多余的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32251576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档