flowerrobot 发表于 2022-7-6 14:22:49


(action_tile "Name_of_button"" (setq someflag 2)(done_dialouge)")


(cond
((someflag 2)
(setq blocknamestorage (car (entsel))
(place a link butto what open the dialogue boxthe first time))
)

ARGV 发表于 2022-7-6 14:27:16

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

flowerrobot 发表于 2022-7-6 14:30:34

对不起,这就是我为什么不是老师的原因,卡恩解释道。
 
因此,当您将其传递给dcl时,您已经有了一个块名称(BlkNam)。
 

(StartDcl) ; will start the dcl the ussual crap, (which sound liike you know)
(set_tile "Someeditbox" BlkNam)
(action_tile "SelectNewBlock" "(setq flager 2) (done_dialouge) ")
(action_tile "accept" "(setq flager 1)(getstuff such as needed ) (done_dialouge)")
(action_tile "cancel" (setq flager 0) (done_dialouge))

(enddcl) ;you know that with the unload_dilogue

(while (not (>= flager 1)
(cond
((= flager 3)
(setq BlkName (car (entsel))
)
);end cond
;With the new block name go back to
(startdcl)
);endwhile

 
 
 
 
 
 
真实生活示例

(defun beamdio ()
(setq dialo (load_dialog "MainDCL"))
(if (not (new_dialog "Pfcbox" dialo)) (exit))
(start_list "beamtype")   
   (mapcar 'add_list pfcsizes)   
(end_list)
(if (not sectiontype)

   (set_tile "beamtype" sectiontype)
)
(if (not sectionlength)
   (set_tile "length" sectionlength)
)
(if (not bendradius)
   (set_tile "rolled" bendradius)
)
(if (not roangle )
   (set_tile "angle" roangle)
)
(if toetoggle (set_tile "toetrim" (itoa toetoggle)))
;what to do settings
(action_tile "toetrim" "(if (= toetoggle 1)(setq toetoggle 0)(setq toetoggle 1))")
(action_tile "cancel" "(setq ok 0)(done_dialog)(exit)")
(action_tile "accept" "(setq ok 1)
   (setq sectiontype (strcase(get_tile \"beamtype\")))
   (setq sectionlength (strcase(get_tile \"length\")))
   (setq bendradius (strcase(get_tile \"rolled\")))
   (setq roangle (strcase(get_tile \"angle\")))   
   (done_dialog)"
)
(action_tile "lengthget" "(setq ok 4)
   (setq sectiontype (strcase(get_tile \"beamtype\")))
   (setq sectionlength (strcase(get_tile \"length\")))
   (setq bendradius (strcase(get_tile \"rolled\")))
   (setq roangle (strcase(get_tile \"angle\")))
   (done_dialog)"
)
(action_tile "rolledidget" "(setq ok 5)
   (setq sectiontype (strcase(get_tile \"beamtype\")))
   (setq sectionlength (strcase(get_tile \"length\")))
   (setq bendradius (strcase(get_tile \"rolled\")))
   (setq roangle (strcase(get_tile \"angle\")))
   (done_dialog)"
)
(action_tile "angleget" "(setq ok 6)
   (setq sectiontype (strcase(get_tile \"beamtype\")))
   (setq sectionlength (strcase(get_tile \"length\")))
   (setq bendradius (strcase(get_tile \"rolled\")))
   (setq roangle (strcase(get_tile \"angle\")))
   (done_dialog)"
)
(start_dialog)
(unload_dialog dialo)
)
(beamdio)
(while (not (or (= ok 0)(= ok 1)))
(cond
((= ok 4)
   (setq sectionlength (rtos(getdist "\nWhat is the Length")2 0)
    bendradius ""
    bendangle "")      
)
((= ok 5)
   (setq bendradius (rtos (getdist "\nWhat is the radius of in inside:")2 0)
    sectionlength (rtos(* pi (atof bendradius) 2)2 0)
    bendangle "")      

)
((= ok 6)
   (setq bendangle (anglefinder)
    sectionlength (rtos(* (atof sectionlength) (/ (atof bendangle) 360.00))2 0))
   (if (not (= bendangle 360))
    (setq rord "I/R"))

)
)
(beamdio)
)

 
感觉更好?

flowerrobot 发表于 2022-7-6 14:34:11

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

ARGV 发表于 2022-7-6 14:35:10

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

flowerrobot 发表于 2022-7-6 14:40:18

伙计,欢迎你。
你编码的时间比我长(去年12月)。
考虑过同样使用c看起来很不错,可以用它做更多的事情,但think会坚持使用lisp学习,而不是像他们说的那样,学习一个Laungue,你就可以全部学习
 
享受
 

ARGV 发表于 2022-7-6 14:43:12

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

flowerrobot 发表于 2022-7-6 14:45:02

你同一艘船,做得很好,但那不算数。我已经讨厌这个节目了;(
 
虽然我创造了一些节省时间的惯例,但老板不会承认我知道,因此机组人员在他背后使用它,我看起来像个浪费时间的人
 
嗯,数组的点,我还没有完全理解,虽然时间不允许我学习汗水语言

Lee Mac 发表于 2022-7-6 14:48:18

 
您不需要手动设置标志,只需为(done\u dialog)语句分配一个退出值:
 
然后您可以从(start_对话框)功能中收集该值:
 

(setq flag (start_dialog))

 
应分别使用1和0定义“接受”和“取消”磁贴。
 
代码的基本结构需要如下:
 

(setq dcTag (load_dialog "DCL-Example.dcl"))

;;Begin DCL Loop
(while (not (vl-position flag '(0 1)))

   ;; Load Dialog
   (or (new_dialog "DCL-Dialog" dcTag)
       (alert "Error Loading Dialog.")
       (exit))

   (action_tile "pick_blk""(done_dialog 2)") ; Set ending value
   (action_tile "accept"    "(done_dialog)")
   (action_tile "cancel"    "(done_dialog)")

   ;; Collect Flag
   (setq flag (start_dialog))

   (if (eq flag 2) (blk_pick))) ; Run program to pick block
   ;;End DCL Loop

   (unload_dialog dcTag) ;; Unload after loop finished

The Buzzard 发表于 2022-7-6 14:52:20

李,
 
我不确定我在这里是否做错了什么,但为了从实际角度使用您的示例,我使用了一个Afralisp函数来进行演示。我不得不更改一些东西的命名,因为编码中不允许使用虚线和DCL。
 
当我运行这个例子时,它运行得很好,但是当你第二次运行这个程序时,你只得到一个零。
 
就我个人而言,我不认为这样选择一个对象有什么意义,因为它可以在选择OK之后完成。也许我错过了什么。
 
以下是用于增加圆大小的示例。
 
DCL
EXAMPLE : dialog {
         label = "DCL-Example";
         : column {
         : button {
             label = "Select Object";
             key = "pick_blk";
             width = 20;
             fixed_width = true;
             alignment = centered;
         }
         ok_cancel;
         }
       }
 
LSP
11
 
可能有什么问题?
页: 1 [2]
查看完整版本: 使用、隐藏、使用DCL例程