乐筑天下

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

[编程交流] 使用、隐藏、使用DCL例程

[复制链接]

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:22:49 | 显示全部楼层
  1. (action_tile "Name_of_button"" (setq someflag 2)(done_dialouge)")
  1. (cond
  2. ((someflag 2)
  3. (setq blocknamestorage (car (entsel))
  4. (place a link but  to what open the dialogue box  the first time))
  5. )
回复

使用道具 举报

8

主题

31

帖子

22

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 14:27:16 | 显示全部楼层
 
也许我应该更清楚一点。
 
我正在做一个例程,在其中选择一个要重命名的块。一旦你选择了块,DCL就会出现块名,所以你只需更改几个字符,点击ok,它就会重新命名。但是假设你想将这个块重命名为类似于图形中的另一个块,所以我放了一个按钮,上面写着“Like…”这个按钮应该隐藏对话框,让用户选择一个具有相似名称(或者甚至不同,没关系)的块,然后打开对话框,在文本框中只有新拾取的块名,而不是原始拾取的块名,然后你可以从那里修改名称。
 
谢谢
 
ArgV
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:30:34 | 显示全部楼层
对不起,这就是我为什么不是老师的原因,卡恩解释道。
 
因此,当您将其传递给dcl时,您已经有了一个块名称(BlkNam)。
 
  1. (StartDcl) ; will start the dcl the ussual crap, (which sound liike you know)
  2. (set_tile "Someeditbox" BlkNam)
  3. (action_tile "SelectNewBlock" "(setq flager 2) (done_dialouge) ")
  4. (action_tile "accept" "(setq flager 1)(getstuff such as needed ) (done_dialouge)")
  5. (action_tile "cancel" (setq flager 0) (done_dialouge))
  6. (enddcl) ;you know that with the unload_dilogue
  7. (while (not (>= flager 1)
  8. (cond
  9. ((= flager 3)
  10. (setq BlkName (car (entsel))
  11. )
  12. );end cond
  13. ;With the new block name go back to
  14. (startdcl)
  15. );endwhile

 
 
 
 
 
 
真实生活示例
  1. (defun beamdio ()
  2.   (setq dialo (load_dialog "MainDCL"))
  3.   (if (not (new_dialog "Pfcbox" dialo)) (exit))
  4.   (start_list "beamtype")   
  5.    (mapcar 'add_list pfcsizes)   
  6.   (end_list)
  7.   (if (not sectiontype)
  8.    (set_tile "beamtype" sectiontype)
  9.   )
  10.   (if (not sectionlength)
  11.    (set_tile "length" sectionlength)
  12.   )
  13.   (if (not bendradius)
  14.    (set_tile "rolled" bendradius)
  15.   )
  16.   (if (not roangle )
  17.    (set_tile "angle" roangle)
  18.   )
  19.   (if toetoggle (set_tile "toetrim" (itoa toetoggle)))
  20.   ;what to do settings
  21.   (action_tile "toetrim" "(if (= toetoggle 1)(setq toetoggle 0)(setq toetoggle 1))")
  22.   (action_tile "cancel" "(setq ok 0)(done_dialog)(exit)")
  23.   (action_tile "accept" "(setq ok 1)
  24.    (setq sectiontype (strcase(get_tile "beamtype")))
  25.    (setq sectionlength (strcase(get_tile "length")))
  26.    (setq bendradius (strcase(get_tile "rolled")))
  27.    (setq roangle (strcase(get_tile "angle")))     
  28.    (done_dialog)"
  29.   )
  30.   (action_tile "lengthget" "(setq ok 4)
  31.    (setq sectiontype (strcase(get_tile "beamtype")))
  32.    (setq sectionlength (strcase(get_tile "length")))
  33.    (setq bendradius (strcase(get_tile "rolled")))
  34.    (setq roangle (strcase(get_tile "angle")))
  35.    (done_dialog)"
  36.   )
  37.   (action_tile "rolledidget" "(setq ok 5)
  38.    (setq sectiontype (strcase(get_tile "beamtype")))
  39.    (setq sectionlength (strcase(get_tile "length")))
  40.    (setq bendradius (strcase(get_tile "rolled")))
  41.    (setq roangle (strcase(get_tile "angle")))
  42.    (done_dialog)"
  43.   )
  44.   (action_tile "angleget" "(setq ok 6)
  45.    (setq sectiontype (strcase(get_tile "beamtype")))
  46.    (setq sectionlength (strcase(get_tile "length")))
  47.    (setq bendradius (strcase(get_tile "rolled")))
  48.    (setq roangle (strcase(get_tile "angle")))
  49.    (done_dialog)"
  50.   )
  51.   (start_dialog)
  52.   (unload_dialog dialo)
  53. )
  54. (beamdio)
  55. (while (not (or (= ok 0)(= ok 1)))
  56. (cond
  57.   ((= ok 4)
  58.    (setq sectionlength (rtos  (getdist "\nWhat is the Length")2 0)
  59.     bendradius ""
  60.     bendangle "")      
  61.   )
  62.   ((= ok 5)
  63.    (setq bendradius (rtos (getdist "\nWhat is the radius of in inside:")2 0)
  64.     sectionlength (rtos  (* pi (atof bendradius) 2)2 0)
  65.     bendangle "")      
  66.   )
  67.   ((= ok 6)
  68.    (setq bendangle (anglefinder)
  69.     sectionlength (rtos  (* (atof sectionlength) (/ (atof bendangle) 360.00))2 0))
  70.    (if (not (= bendangle 360))
  71.     (setq rord "I/R"))
  72. )
  73. )
  74.   (beamdio)  
  75. )

 
感觉更好?
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:34:11 | 显示全部楼层
嗯,胡特?
我甚至不知道你想冒犯什么
 
1、它不是针对你的,
2、我现在就这条帖子向你们发表了评论。
 
这是针对李的,米尔灵解释了我为什么说我所说的话。
 
也就是说,如果用户发布了dcl的编程。
这将是更容易标记(比喜欢只是把一个循环和标志),他会更好地理解,因为他熟悉他的代码。
比我发布的内容更有意义,因为他不熟悉我的代码&我是如何做事的。
但是,至少我相信,大多数时候,这是最简单的方法,尤其是当一个例子最能解释事情的时候。然而,当然我们可以用out来回答它,我们确实这样做了,我认为这确实引起了一些困惑,但我再次没有很好地解释事情很多次。
 
 
回复

使用道具 举报

8

主题

31

帖子

22

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 14:35:10 | 显示全部楼层
 
你们都很好。我从这个帖子中得到的比我预期的要多,这就是为什么我喜欢这个论坛。很多时候,我在编写代码时会问一个问题,因此,如果我想不出来,我会回来找一个比我了解更多的人(或一些人)来回答我的问题。
 
我对整个LISP语言相对来说比较陌生,断断续续只使用了大约1.5年,但现在比以往任何时候都要频繁。我上了一些C课程,将来还会上更多,但现在我只是想从那些“去过那里,做过那件事”的人那里得到很多帮助。。
 
我非常感谢大家的贡献,并阅读了所有帖子。让人们用不同的方式解释事情是很好的,因为这是我们了解其他人和他们学习风格的方式。
 
-ArgV
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:40:18 | 显示全部楼层
伙计,欢迎你。
你编码的时间比我长(去年12月)。
考虑过同样使用c看起来很不错,可以用它做更多的事情,但think会坚持使用lisp学习,而不是像他们说的那样,学习一个Laungue,你就可以全部学习
 
享受
 
回复

使用道具 举报

8

主题

31

帖子

22

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-6 14:43:12 | 显示全部楼层
 
事实上,两年前我甚至从未接触过autocad,现在我为我的工作编写了一大堆例程和菜单系统,这让我获得了一个非常好的位置。
 
 
C是一种很棒的语言,因为它很小,很快,很有意义。是的,一旦你学会了编程语言的基础知识。。循环、变量、数据类型、对象、方法、属性等,剩下的只是学习每种语言的语法。由于某种原因,LISP对我来说比其他语言更难。唯一真正的区别是在LISP中使用列表而不是数组。(当然,您可以使用VLISP和阵列)。
 
干杯,谢谢。
 
-ArgV
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 14:45:02 | 显示全部楼层
你同一艘船,做得很好,但那不算数。我已经讨厌这个节目了;(
 
虽然我创造了一些节省时间的惯例,但老板不会承认我知道,因此机组人员在他背后使用它,我看起来像个浪费时间的人
 
嗯,数组的点,我还没有完全理解,虽然时间不允许我学习汗水语言
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:48:18 | 显示全部楼层
 
您不需要手动设置标志,只需为(done\u dialog)语句分配一个退出值:
 
然后您可以从(start_对话框)功能中收集该值:
 
  1. (setq flag (start_dialog))

 
应分别使用1和0定义“接受”和“取消”磁贴。
 
代码的基本结构需要如下:
 
  1. (setq dcTag (load_dialog "DCL-Example.dcl"))
  2. ;;  Begin DCL Loop
  3. (while (not (vl-position flag '(0 1)))
  4.    ;; Load Dialog
  5.    (or (new_dialog "DCL-Dialog" dcTag)
  6.        (alert "Error Loading Dialog.")
  7.        (exit))
  8.    (action_tile "pick_blk"  "(done_dialog 2)") ; Set ending value
  9.    (action_tile "accept"    "(done_dialog)")
  10.    (action_tile "cancel"    "(done_dialog)")
  11.    ;; Collect Flag
  12.    (setq flag (start_dialog))
  13.    (if (eq flag 2) (blk_pick))) ; Run program to pick block
  14.    ;;  End DCL Loop
  15.    (unload_dialog dcTag) ;; Unload after loop finished
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:52:20 | 显示全部楼层
李,
 
我不确定我在这里是否做错了什么,但为了从实际角度使用您的示例,我使用了一个Afralisp函数来进行演示。我不得不更改一些东西的命名,因为编码中不允许使用虚线和DCL。
 
当我运行这个例子时,它运行得很好,但是当你第二次运行这个程序时,你只得到一个零。
 
就我个人而言,我不认为这样选择一个对象有什么意义,因为它可以在选择OK之后完成。也许我错过了什么。
 
以下是用于增加圆大小的示例。
 
DCL
  1. EXAMPLE : dialog {
  2.          label = "DCL-Example";
  3.          : column {
  4.            : button {
  5.              label = "Select Object";
  6.              key = "pick_blk";
  7.              width = 20;
  8.              fixed_width = true;
  9.              alignment = centered;
  10.            }
  11.            ok_cancel;
  12.          }
  13.        }

 
LSP
  1. 11

 
可能有什么问题?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 03:20 , Processed in 1.112059 second(s), 70 queries .

© 2020-2025 乐筑天下

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