乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: dcokken

[编程交流] 更改自定义的对话框

[复制链接]

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:17:54 | 显示全部楼层
@塔瓦特
 
现在这是很好的编码。。。。。它完全有效!!!非常感谢你。我自己也做不到
 
只剩下一个问题:
 
第一次打开对话框时,它会以默认值打开(项目=空,状态=第一草稿)。如果我现在填写不同的数据,它会传输到自定义道具。效果完美。
如果我再次打开对话框,它将返回默认值。可以修改代码以便从自定义道具中抓回最后一个条目吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 19:19:55 | 显示全部楼层
不客气
 
 
 
试试这个:
  1. (defun c:test (/ id status in l st v1 v2)
  2. ;; Tharwat 01.09.2015        ;;
  3. (if (and (< 0 (setq id (load_dialog "Project.dcl")))
  4.           (new_dialog "Project" id)
  5.      )
  6.    (progn
  7.      (setq in     (vla-get-summaryinfo
  8.                     (vla-get-activedocument (vlax-get-acad-object))
  9.                   )
  10.            Status (list "1st draft" "2nd draft" "3rd draft" "Final")
  11.      )
  12.      (mapcar '(lambda (k)
  13.                 (vla-getcustombykey in k 'st)
  14.                 (setq l (append l (list st)))
  15.               )
  16.              '("Project" "Status")
  17.      )
  18.      (start_list "Status")
  19.      (mapcar 'add_list Status)
  20.      (end_list)
  21.      (set_tile "Project" (car l))
  22.      (set_tile "Status"
  23.                (if (member (cadr l) status)
  24.                  (itoa (vl-position (cadr l) Status))
  25.                  "0"
  26.                )
  27.      )
  28.      (action_tile
  29.        "accept"
  30.        "(if (/= (setq v1 (get_tile "Project")) "") (vla-setcustombykey in "Project" v1))
  31.         (if (setq v2 (get_tile "Status")) (vla-setcustombykey in "Status" (nth (atoi v2) Status)))
  32.                             (done_dialog)"
  33.      )
  34.      (action_tile "cancel" "(done_dialog)")
  35.      (start_dialog)
  36.      (unload_dialog id)
  37.    )
  38.    (if (< 0 id)
  39.      (unload_dialog id)
  40.    )
  41. )
  42. (princ)
  43. )(vl-load-com)
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:24:50 | 显示全部楼层
Tha****,
 
工作起来像个魔法师!!!thanx。没有你就做不到。
 
我现在开始将代码修改为更大的dcl。我正在添加一个备用列表。
一切都很好,但我不能让Lisp程序记住第二个列表的最后一个条目。(总共需要4个列表)你能看看代码并告诉我我做错了什么吗?
 
  1. (defun c:dprop (/ id STA PRO_DEL in l st v1 v2 v3)
  2. ;; Tharwat 01.09.2015        ;;
  3. (if (and (< 0 (setq id (load_dialog "dprop2.dcl")))
  4.           (new_dialog "dprop2" id)
  5.      )
  6.    (progn
  7.      (setq in     (vla-get-summaryinfo
  8.                     (vla-get-activedocument (vlax-get-acad-object))
  9.                   )
  10.            STA (list "" "Ontwerp" "Voorlopig" "Definitief" "Productie")
  11.     PRO_DEL (list "" "Alleen leveren" "Montage Derden" "Montage Basis" "Montage Compleet")
  12.      )
  13.      (mapcar '(lambda (k)
  14.                 (vla-getcustombykey in k 'st)
  15.                 (setq l (append l (list st)))
  16.               )
  17.              '("PRO_NU" "STA" "PRO_DEL")
  18.      )
  19.      (start_list "STA")
  20.      (mapcar 'add_list STA)
  21.      (end_list)
  22.      (start_list "PRO_DEL")
  23.      (mapcar 'add_list PRO_DEL)
  24.      (end_list)
  25.      
  26.      (set_tile "PRO_NU" (car l))
  27.      (set_tile "STA"
  28.                (if (member (cadr l) STA)
  29.                  (itoa (vl-position (cadr l) STA))
  30.                  "0"
  31.                )
  32.      )
  33.            (set_tile "PRO_DEL"
  34.                (if (member (cadr l) PRO_DEL)
  35.                  (itoa (vl-position (cadr l) PRO_DEL))
  36.                  "0"
  37.                )
  38.      )
  39.      (action_tile
  40.        "accept"
  41.        "(if (/= (setq v1 (get_tile "PRO_NU")) "") (vla-setcustombykey in "PRO_NU" v1))
  42.         (if (setq v2 (get_tile "STA")) (vla-setcustombykey in "STA" (nth (atoi v2) STA)))
  43.         (if (setq v3 (get_tile "PRO_DEL")) (vla-setcustombykey in "PRO_DEL" (nth (atoi v3) PRO_DEL)))
  44.                             (done_dialog)"
  45.      )
  46.      (action_tile "cancel" "(done_dialog)")
  47.      (start_dialog)
  48.      (unload_dialog id)
  49.    )
  50.    (if (< 0 id)
  51.      (unload_dialog id)
  52.    )
  53. )
  54. (princ)
  55. )(vl-load-com)
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:29:14 | 显示全部楼层
更大的dcl也有更多的编辑框
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 19:32:13 | 显示全部楼层
我花了很长时间为你写了前两个贴出的程序,你甚至没有花不到一秒钟的时间来正确甚至完整地写下我的名字?
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:35:35 | 显示全部楼层
我真诚地向塔尔瓦特道歉。你绝对是赖特
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:39:42 | 显示全部楼层
周四晚上我一直在尝试修改代码,但几乎没有成功。可能完全错了。。。。。。。。请帮忙!
 
v1 2 3 4 5 6 7和24(v7,v24=dcl popup_list)非常适合将它们设置为自定义道具。但popup_list V27没有。不知何故,popup_list v24中的一个值被放置在这里作为自定义值。在dcl中为popup_list v29选择的值根本没有设置。
 
第二次打开对话框时,需要抓取(获取)以前的条目。但只有v1在对话框中设置,但在v2 v4 v5 v6中也设置。
v7(“STA”)不执行任何操作,与v24 v27和v29相同
 
我仍然需要添加到v43。这些都是编辑框。有没有一种简单的方法可以让代码为上面的v工作(获取和设置值),并且易于修改,这样我就可以添加所有其他值。
 
键=v
PRO NU=v1,标准杆数NU=v2,CLI=v3,CON=v4,PRO MA=v5,DRA=v6,STA=v7,PRO DEL=v24,FSC\U T=v27,CAL\U CON=v29
 
 
如果需要dcl和dwg(在自定义道具选项卡中输入键),请告诉我。
 
  1. ;; ORGINAL BY Tharwat 01.09.2015;;
  2. ;; see below for variables/values that i still need to enter in code.
  3. ;; v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23
  4. ;; v25 v26 v28 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43
  5. ;; these v's are all editboxes
  6. (defun c:dprop (/ id STA PRO_DEL FSC_T CAL_CON in l st v1 v2 v3 v4 v5 v6 v7 v24 v27 v29 )
  7. (if (and (< 0 (setq id (load_dialog "dprop2.dcl")))
  8.           (new_dialog "dprop2" id)
  9.      )
  10.    (progn
  11.      (setq in     (vla-get-summaryinfo
  12.                     (vla-get-activedocument (vlax-get-acad-object))
  13.                   )
  14.           STA (list "A" "A1" "A2" "A3" "A4");;v7
  15.           PRO_DEL (list "B" "B1" "B2" "B3" "B4");;v24
  16. FSC_T (list "C" "C1" "C2 C3" "C4");;v27
  17.         CAL_CON (list "D" "D1" "D2" "D3");;v29
  18.      )
  19.      (mapcar '(lambda (k)
  20.                 (vla-getcustombykey in k 'st)
  21.                 (setq l (append l (list st)))
  22.               )
  23.              '("PRO_NU" "PAR_NU" "CLI" "CON" "PRO_MA" "DRA" "STA" "PRO_DEL" "FSC_T" "CAL_CON")
  24.      )
  25.      (set_tile "PRO_NU" (car l))        ;;v1
  26.      (set_tile "PAR_NU" (car l))        ;;v2
  27.      (set_tile "CLI" (car l))                ;;v3
  28.      (set_tile "CON" (car l))                ;;v4
  29.      (set_tile "PRO_MA" (car l))        ;;v5
  30.      (set_tile "DRA" (car l))                ;;v6
  31.      
  32.      (start_list "STA")                ;;v7
  33.      (mapcar 'add_list STA)
  34.      (end_list)
  35.                      (set_tile "STA"
  36.                        (if (member (cadr l) STA)
  37.                                  (itoa (vl-position (cadr l) STA))
  38.                                          "0"))
  39.      
  40.      (start_list "PRO_DEL")                ;;v24
  41.      (mapcar 'add_list PRO_DEL)
  42.      (end_list)
  43.                    (set_tile "PRO_DEL"
  44.                        (if (member (cadr l) PRO_DEL)
  45.                                  (itoa (vl-position (cadr l) PRO_DEL))
  46.                                          "0"))
  47.      
  48.      (start_list "FSC_T")                ;;v27
  49.      (mapcar 'add_list FSC_T)
  50.      (end_list)
  51.                    (set_tile "FSC_T"
  52.                        (if (member (cadr l) FSC_T)
  53.                                  (itoa (vl-position (cadr l) FSC_T))
  54.                                          "0"))
  55.      
  56.      (start_list "CAL_CON")                ;;v29
  57.      (mapcar 'add_list CAL_CON)
  58.      (end_list)
  59.                    (set_tile "CAL_CON"
  60.                        (if (member (cadr l) CAL_CON)
  61.                                  (itoa (vl-position (cadr l) CAL_CON))
  62.                                          "0"))
  63.      (action_tile
  64.        "accept"
  65.        "(if (/= (setq v1 (get_tile "PRO_NU")) "") (vla-setcustombykey in "PRO_NU" v1))
  66.         (if (/= (setq v2 (get_tile "PAR_NU")) "") (vla-setcustombykey in "PAR_NU" v2))
  67.         (if (/= (setq v3 (get_tile "CLI")) "") (vla-setcustombykey in "CLI" v3))
  68.         (if (/= (setq v4 (get_tile "CON")) "") (vla-setcustombykey in "CON" v4))
  69.         (if (/= (setq v5 (get_tile "PRO_MA")) "") (vla-setcustombykey in "PRO_MA" v5))
  70.         (if (/= (setq v6 (get_tile "DRA")) "") (vla-setcustombykey in "DRA" v6))
  71.         (if (setq v7 (get_tile "STA")) (vla-setcustombykey in "STA" (nth (atoi v7) STA)))
  72.         (if (setq v24 (get_tile "PRO_DEL")) (vla-setcustombykey in "PRO_DEL" (nth (atoi v24) PRO_DEL)))
  73.         (if (setq v27 (get_tile "FSC_T")) (vla-setcustombykey in "FSC_T" (nth (atoi v27) PRO_DEL)))
  74.         (if (setq v29 (get_tile "CON_CAL")) (vla-setcustombykey in "CAL_CON" (nth (atoi v29) CAL_CON)))
  75.                             (done_dialog)"
  76.      )
  77.      (action_tile "cancel" "(done_dialog)")
  78.      (start_dialog)
  79.      (unload_dialog id)
  80.    )
  81.    (if (< 0 id)
  82.      (unload_dialog id)
  83.    )
  84. )
  85. (princ)
  86. )(vl-load-com)
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:43:07 | 显示全部楼层
我自己的代码仍然没有进展。
见上文9月2日的帖子。。。有人能帮忙吗?塔尔瓦特?
 
 
更新:
(几个小时后)
 
我想我明白了。。。。。。请稍等
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 13:41 , Processed in 1.053176 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表