乐筑天下

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

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

[复制链接]

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:39:53 | 显示全部楼层 |阅读模式
你好
 
我为dcl制作的autolisp有问题/困难。我对autolisp知之甚少,我不知道如何通过autolisp实现我想要的,并且可能需要代码方面的帮助。
 
lisp dcl需要执行以下操作:
1.使用lisp打开dcl时,需要自动导入自定义特性的值(请参见dwg中的dwgprops custom tap或dwg中的图片)。起初,值可以为空。
2、在对话框中填充或更改值。
3.在dwgprop中按OK更新值
 
任何帮助都很好
作为附件:项目。dcl,项目。lsp和Pdata。图纸
 
Ps;我使用字段,因此de lisp可能不会完全删除和替换自定义属性
所以不是名称,只有(更新)值。否则,字段可能会更改为####
Pdata。图纸
项目DCL
项目lsp
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 18:45:27 | 显示全部楼层
我对绘图属性没有任何经验,但可以快速搜索:
 
 
http://adndevblog.typepad.com/autocad/2012/12/visual-lisp-example-for-controlling-drawing-properties-with-vla-setcustombyindex-and-similar-methods.html
 
 
http://adndevblog.typepad.com/autocad/2012/08/lisp-example-for-setting-and-getting-drawing-properties.html
 
 
 
 
http://www.cadtutor.net/forum/showthread.php?87345-使用LISP填充图形特性字段
 
 
也许你可以找到一些可以学习的方法。
 
 
gr.Rlx
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:49:59 | 显示全部楼层
看到那些脚印。仍然不知道如何使用dcl作为用户界面使lisp工作。
最好是有人可以修改lisp代码,以便将2个自定义道具的值导入/导出到dcl。
(或使用dcl对此主题更为具体的示例代码)
 
实际dcl更大,编辑框、弹出列表等更多。随着前两个自定义道具的工作,我可能会与其余的管理。
 
在此期间,我仍将尝试自己做这件事。如果我成功了,我会立即发帖。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 18:52:31 | 显示全部楼层
这里有一个关于dcl的非常好的链接
 
 
http://web2.airmail.net/terrycad/Tutorials/MyDialogs.htm
 
 
祝你的应用好运
 
 
gr.Rlx
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:56:05 | 显示全部楼层
这就是按键添加值所需的全部内容:
 
  1. (defun _add:custom:value (key val)
  2. ;; Tharwat 31.08.2015  ;;
  3. (vla-setcustombykey (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) key val)
  4. (princ)
  5. )

 
用法:
 
  1. (_add:custom:value "Project" "1")

 
对于多个键和值:
 
  1. (mapcar '_add:custom:value '("Project" "Status") '("1" "2nd Draft"))

 
请注意正确写入密钥名称,以避免函数发出错误消息。
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:00:15 | 显示全部楼层
@塔尔瓦特:
 
值“1”或“2nd draft”是变量。也可以通过“233”和“第三稿”或“8540”和“最终稿”。因此,如果之前在对话框“1”或“2nd draft”中填写了您的代码,我会在对话框中将其更改为“233”和“3rd draft”或任何内容,它会自动更改dwgprops自定义选项卡中的值?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:02:53 | 显示全部楼层
 
如果是变量,则应如下所示,并且应为字符串:
 
  1. (mapcar '_add:custom:value (list key1 key2) (list variable1 variable2))
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:05:16 | 显示全部楼层
顺便说一句,我找到了这个代码。工作,但我如何添加这个在Lisp程序从第一篇文章。代码用作命令行界面。我需要它在dcl接口中。因此,如果我在文本框中调用dcl behind项目,就会得到来自custom prop选项卡的值。就像在命令行中一样
 
  1. (defun C:Getprop ()
  2. (setq  si (vla-Get-SummaryInfo (vla-Get-ActiveDocument (vlax-Get-Acad-Object))))
  3. (vla-GetCustomByKey si  "Project" 'pval)
  4. (princ pval)
  5. )

 
如果在对话框中我有机会需要这个?
  1. (vla-SetCustomByKey  si "Project" "New Value")

这样,新条目将作为customprops中的值导出回?
 
只是不知道如何把这一切放在一起
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:10:53 | 显示全部楼层
你找到的代码和我的相比有什么新的地方?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 19:13:24 | 显示全部楼层
试试这个快速程序。
 
  1. (defun c:test (/ id status _add:custom:value 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.      (defun _add:custom:value (key val)
  8.        (vla-setcustombykey
  9.          (vla-get-summaryinfo
  10.            (vla-get-activedocument (vlax-get-acad-object))
  11.          )
  12.          key
  13.          val
  14.        )
  15.        (princ)
  16.      )
  17.      (setq
  18.        Status (list "1st draft" "2nd draft" "3rd draft" "Final")
  19.      )
  20.      (start_list "Status")
  21.      (mapcar 'add_list Status)
  22.      (end_list)
  23.      (action_tile
  24.        "accept"
  25.        "(if (/= (setq v1 (get_tile "Project")) "") (_add:custom:value "Project" v1))
  26.                             (if (setq v2 (get_tile "Status")) (_add:custom:value "Status" (nth (atoi v2) Status)))
  27.                             (done_dialog)"
  28.      )
  29.      (action_tile "cancel" "(done_dialog)")
  30.      (start_dialog)
  31.      (unload_dialog id)
  32.    )
  33.    (if (< 0 id)
  34.      (unload_dialog id)
  35.    )
  36. )
  37. (princ)
  38. )(vl-load-com)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:13 , Processed in 1.009755 second(s), 72 queries .

© 2020-2025 乐筑天下

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