leong1221 发表于 2022-7-5 15:47:26

获取字符串(&S)

你好
 
我正试图编写一个lisp来帮助我更容易地编写立面引线和材质代码。
 
但似乎我没有理解一些函数。
 
我只想通过输入2位数字来设置物料代码,例如,“1”+“3”应返回WC03。但是现在!退料1!代码返回3。。。。。和物料代码返回物料代码。。。。。。
 
 
(setq材料(getstring“\n指定材料:”)
(setq代码(getstring“\n指定材料:”)
(setq MaterialCode(strcat“Material”“Num”))

leong1221 发表于 2022-7-5 15:54:39

嘿伙计们,
 
我只是想自救,我应该使用getkword,它应该如下所示
 
(setq Mat1(getkword“\n:”)
(initget“01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 18 19 20”)
(setq Num1(getkword“\n:”)
(setq Mat1Num1(strcat Mat1 Num1))
 
然后得到我想要的
但是为了使它更友好,在没有澄清窗口询问哪个数字是1的情况下,如何将类型1=01?

hanhphuc 发表于 2022-7-5 15:55:34

您好,请使用代码标签
 
 
此代码带有代码标记


(defun matNum (/ l i s mat1 Num1)
(setq        i 1
l '("BL" "CP" "GL" "FA"        "FB" "ML" "P" "PL" "SP"        "ST" "TL" "WC"
    "WD")
)
(repeat (length l)
   (setq s (cons (strcat (itoa i) "_" (nth (1- i) l) " / ") s))
   (setq i (1+ i))
)

(initget 7)
(if
   (and
   (setq i (getint (strcat "\nIndex number ["
                      (apply 'strcat (reverse s))
                      "]? : "
              )
      )
   )
   (<= i (length l))

   (setq mat1 (nth (1- i) l))


   (progn
(initget 7)
(setq i (getint "Enter number 1~20 ? : "))
(setq Num1 (itoa i))
(<= i 20)
   )
   )

(princ (strcat Mat1
       (if (< i 10)
           (strcat "0" Num1)
           Num1
       )
)
)
(prompt "\nInvalid Input.. ")
)
;(princ) ; removed
)

BIGAL 发表于 2022-7-5 15:59:14

韩,你好,
 
谢谢它工作得很好!

leong1221 发表于 2022-7-5 16:06:01

 
我设置Mat1和Num1的原因是为了帮助在下一步中插入一个属性块,并根据刚刚输入的内容重命名该块,例如,通过运行lisp并输入“1”“1”,然后得到一个名为BL01的属性块。
 
有什么提示吗?非常感谢:)

leong1221 发表于 2022-7-5 16:07:40

 
我在想命令Gatte,然后我把它写在我的lisp中
(命令“gatte”)并返回gatte未知命令“gatte”

leong1221 发表于 2022-7-5 16:10:59

GATTE是一个全局属性编辑函数。
 
如果你想重命名块,我只需要“插入”常规块,并在ENTLAST上使用重命名函数?

Aftertouch 发表于 2022-7-5 16:16:54

 
您好,我附上了一张图片来阐明我的想法:)
 
https://image.ibb.co/mdytoG/a123.png
 
谢谢
狮子座

leong1221 发表于 2022-7-5 16:20:28

 
步骤1已完成,卡在步骤2:(

leong1221 发表于 2022-7-5 16:22:59

我在下面找到了SMadsen的lisp,这是我关闭的,只是它在所有块中更改了标记
 
信贷:SMadsen
https://www.theswamp.org/index.php?topic=5917.0
 
(defun changeAttribValue(ent atttag oldval newval/entl)
(while(and ent(/=“sequend”(cdr(assoc 0(setq entl(entget ent 107;)а))))))
(和(=atttag(cdr(assoc 2 entl)))
(=oldval(cdr(assoc 1 entl)));
(entmod(subst(cons 1 newval)(assoc 1 entl)entl))
(entupd ent)
(mapcar’princ(list“\n”oldval“->”newval))
)
(setq ent(entnext ent))
)
)
 
(定义C:CHATTRIB(/ss a attag bname oldval newval)
(和(/=“”(setq bname(getstring“\n块名:”))
(/=“”(setq attag(getstring T“\n标记:”))
(/=“”(setq oldval(getstring T“\n旧值:”))
(/=“”(setq newval(getstring T“\n新值:”))
(setq a 0
ss(ssget“X”(list)(0。“INSERT”)'(66.1)(cons 2 bname)))
)
(重复(sslength ss)
(changeAttribValue(ssname ss a)attag oldval newval)
(setq a(1+a))
)
)
)
页: [1] 2
查看完整版本: 获取字符串(&S)