foer123 发表于 2019-12-24 18:00:29

求助

下面的代码哪里出错,显示不了对话面板框框,高手可以帮忙修改一下
;=======================================DCL
dcl:dialog {
    label = "列表框示例" ;
    :list_box {
      height = 10 ;
      key = "klist" ;
      label = "词库选单" ;
      width = 30 ;
    }
    :edit_box {
      key = "wordstr" ;
      label = "词库" ;
    }
    spacer_1;
    ok_cancel;
}
;=============================================LSP
(defun c:dcl ()
    (setvar "cmdecho" 0)
    (setq word_list '("亚洲"
            "中国"
            "北京"
            "天津"
            "上海"
            "广州"
            "重庆"
            "四川"
            "河南"
            "郑州"
            "开封"
            "武汉"
            "河北"
            "江西"
            "甘肃"
             )
    )
    (dcl_dcl)
    (prin1)
)
(defun dcl_dcl ()
    (setq dcl_id (load_dialog "dcl"))
    (new_dialog "dcl" dcl_id)
    (start_list "klist")
    (mapcar 'add_list word_list)
    (end_list)
    (action_tile "klist" "(sub_klist $value)")
    (action_tile "accept" "(ok_dcl) (done_dialog 1)")
    (setq dd (start_dialog))
    (if    (= dd 1)
    (progn
      (setvar "cmdecho" 1)
      (command "text" pause 0 wordstr)
      (setvar "cmdecho" 0)
    )
    )
)
(defun sub_klist (vvs)
    (set_tile "wordstr" (nth (atoi vvs) word_list))
)
(defun ok_dcl    ()
    (setq wordstr (get_tile "wordstr"))
)

xyp1964 发表于 2019-12-24 23:31:21



再见熊猫衣服 发表于 2019-12-25 10:40:38

不显示面板,应该就是缺少dcl面板文件。

foer123 发表于 2019-12-25 10:52:22

再见熊猫衣服 发表于 2019-12-25 10:40
不显示面板,应该就是缺少dcl面板文件。

哦   你可以帮我修改一下吗    我的CAD 2007就不行   他们就可以

Kye 发表于 2019-12-25 20:31:10

foer123 发表于 2019-12-25 10:52
哦   你可以帮我修改一下吗    我的CAD 2007就不行   他们就可以

楼主提供的源代码,测试可以啊,院长的测试了吗?下面代码仅把dcl放到lsp中了,没有别的改动

(defun c:dcl()
    (setvar "cmdecho" 0)
    (setq word_list '("亚洲"
            "中国"
            "北京"
            "天津"
            "上海"
            "广州"
            "重庆"
            "四川"
            "河南"
            "郑州"
            "开封"
            "武汉"
            "河北"
            "江西"
            "甘肃"
             )
    )
    (dcl_dcl)
    (prin1)
)
(defun dcl_dcl (/ make-dcl)
;;;    (setq dcl_id (load_dialog "dcl"))
(defun make-dcl(/ lst_str str file f)
      (setq lst_str
       '(
       "dcl:dialog { "
       "    label = \"列表框示例\" ; "
       "    :list_box { "
       "      height = 10 ; "
       "      key = \"klist\" ; "
       "      label = \"词库选单\" ; "
       "      width = 30 ; "
       "    } "
       "    :edit_box { "
       "      key = \"wordstr\" ; "
       "      label = \"词库\" ; "
       "    } "
       "    spacer_1; "
       "    ok_cancel; "
       "}"
          )
      
      )
      (setq file (vl-filename-mktemp "DclTemp.dcl"))
      (setq f (open file "w"))
      (foreach str lst_str
      (princ "
" f)
      (princ str f)
      )
      (close f)
      file
    );_make-dcl

(setq dcl_id (load_dialog (setq dcl_file (make-dcl))))
(if(findfile dcl_file)(vl-file-delete dcl_file)) ;;;删除临时文件,加载完即可删除


   
    (new_dialog "dcl" dcl_id)
    (start_list "klist")
    (mapcar 'add_list word_list)
    (end_list)
    (action_tile "klist" "(sub_klist $value)")
    (action_tile "accept" "(ok_dcl) (done_dialog 1)")
    (setq dd (start_dialog))
    (if    (= dd 1)
    (progn
      (setvar "cmdecho" 1)
      (command "text" pause 0 wordstr)
      (setvar "cmdecho" 0)
    )
    )
)
(defun sub_klist (vvs)
    (set_tile "wordstr" (nth (atoi vvs) word_list))
)
(defun ok_dcl    ()
    (setq wordstr (get_tile "wordstr"))
)




foer123 发表于 2019-12-26 08:36:16

Kye 发表于 2019-12-25 20:31
楼主提供的源代码,测试可以啊,院长的测试了吗?下面代码仅把dcl放到lsp中了,没有别的改动




谢谢   我把你的和我的做一个对比看一下哪里没有做对
页: [1]
查看完整版本: 求助