Kenter 发表于 2022-7-6 10:37:35

做我自己的选择。

****代码需要一个名为note的层,该层已经生成****
 
我要做的是以AutoCAD使用其自己的comman选项的方式显示选项,例如在text命令中:
 

 
可以做类似的事情。优点是用户可以看到选项,从而减少了错误。是否也可以设置助记符快捷方式(如上述本机命令中的大写字母、A、F、C、M、R等),并且用户可以通过键入(仅)助记符字符来指示选择。任何提示都会有帮助。提前谢谢。
 
这是我的程序,我希望它做的是,而不是键入什么材料将被使用,用户可以选择,它将自动输入,而不是键入。
 
例如:
 
命令:tef
..布料
[黄铜/钢/冷冲压…等]
(注意:如果您选择Brass,它将在“material=”旁边放置“BR-60-40-Muntz”)
 
肯特
TEF良好。lsp

alanjt 发表于 2022-7-6 10:41:25

如。
(initget 0 "Pizza Burger fiSh")
(getkword "\nWhat would you like? : ")

Tharwat 发表于 2022-7-6 10:46:35

 
检查
选项关键字无效。无支票:哭泣:

Tharwat 发表于 2022-7-6 10:47:41

 
你忘了在Lisp中重新设置旧的OSMODE和CLAYER。

(setq cl (getvar "CLAYER"))
   (setvar "CLAYER" "NOTE")
   (setq cs (GETVAR "OSMODE"))
   (setvar "OSMODE" 0)
....... your codes running...
.........

(setvar "osmode" cs)
(setvar "clayer" cl)


 
我认为艾伦所说的话足以让你更新密码。。。。。。
 
当做
 
塔瓦特

Tharwat 发表于 2022-7-6 10:51:18

这里有一个完整的例子来回答你的问题。。。。。。必须满足


   (initget 0 "Brass Steel ColdRolled")
(setq a (getkword "\n Specify the Material : "))
(command "text" "J" "C" pause "0.187" "0" (strcat "Material =" a))


 
当做
 
塔瓦特

Lee Mac 发表于 2022-7-6 10:54:27

这可能是我编写您的程序的方式:
 

(defun c:tef ( / *error* LM:lst->str LM:Text mLst )
;; © Lee Mac 2010

(defun *error* ( msg )
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
   (princ)
)

(defun LM:lst->str ( lst del )
   (if (cdr lst)
   (strcat (car lst) del (LM:lst->str (cdr lst) del))
   (car lst)
   )
)

(defun LM:Text ( pt hgt str lay )
   (entmakex
   (list
       (cons 0 "TEXT")
       (cons 8lay)
       (cons 10pt)
       (cons 40 hgt)
       (cons 1str)
       (cons 7 (getvar 'TEXTSTYLE))
       (cons 71 0)
       (cons 72 1)
       (cons 11pt)
   )
   )
)

(setq mLst '(("Brass"      . "BR-60-40-Muntz")
            ("Steel"      . "ST-60-40-Muntz")
            ("Coldrolled" . "CR-60-40-Muntz")))

(
   (lambda ( i / p )
   (while (setq p (getpoint "\nSpecify Point <Exit> : "))
       (setq p (trans p 1 0))
      
       (mapcar
         (function
         (lambda ( string offset )
             (if (not (eq "" string))
               (LM:Text (list (car p) (- (cadr p) offset)) 0.187 string "NOTE")
             )
         )
         )
         (list
         (strcat "Quantity="
             (itoa
               (setq *qty*
               (cond
                   (
                     (progn (initget 4)               
                     (getint
                         (strcat "\nSpecify Quantity <"
                           (itoa
                           (setq *qty*
                               (cond ( *qty* ) ( 1 ))
                           )
                           )
                           "> : "
                         )
                     )
                     )
                   )
                   ( *qty* )
               )
               )
             )
         )
         (strcat "Material="
             (cdr
               (assoc
               (setq *mat*
                   (cond
                     (
                     (progn (initget (LM:lst->str (mapcar 'car mLst) " "))
                         (getkword
                           (strcat "\nSpecify Material [" (LM:lst->str (mapcar 'car mLst) "/") "] <"
                           (setq *mat*
                               (cond ( *mat* ) ( (caar mLst) ))
                           )
                           "> : "
                           )
                         )
                     )
                     )
                     ( *mat* )
                   )
               )
               mLst
               )
             )
         )
         (strcat "Thickness="
             (rtos
               (setq *thk*
               (cond
                   (
                     (progn (initget 6)
                     (getdist
                         (strcat "\nSpecify Thickness <"
                           (rtos
                           (setq *thk*
                               (cond ( *thk* ) ( 1.0 ))
                           )
                           )
                           "> : "
                         )
                     )
                     )
                   )
                   ( *thk* )
               )
               )
             )
         )
         (strcat "NAME=" (getstring "\nSpecify Name: ") (itoa (setq i (1+ i))))
         "MACHINE=Trumpf L2530 PLUS"
         )
      '(1.0 1.3 1.6 1.9 2.2)
       )
   )
   )
   0
)

(princ)
)

alanjt 发表于 2022-7-6 10:57:07

 
 
我喜欢它。你告诉我我错了,然后告诉OP我是对的,然后使用我在另一个例子中建议的方法。

Tharwat 发表于 2022-7-6 11:00:52

你搞错了,
 
 
我没有告诉你你错了,那只是一个小笑话。
 
 
这是批准。
 
 
当然,我和其他人仍在学习,必须得到专家的建议,直到能够给出我们的建议。
 
就这样。。。。。。请随意
 
顺致敬意,
 
 
塔瓦特

alanjt 发表于 2022-7-6 11:04:03

 
你不这么说:眨眼:
 

Lee Mac 发表于 2022-7-6 11:07:59

我认为这是一个笑话,说你没有把“鸡”作为一个选项。。。
页: [1] 2
查看完整版本: 做我自己的选择。