乐筑天下

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

[编程交流] 获取字符串(&S)

[复制链接]

4

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 15:47:26 | 显示全部楼层 |阅读模式
你好
 
我正试图编写一个lisp来帮助我更容易地编写立面引线和材质代码。
 
但似乎我没有理解一些函数。
 
我只想通过输入2位数字来设置物料代码,例如,“1”+“3”应返回WC03。但是现在!退料1!代码返回3。。。。。和物料代码返回物料代码。。。。。。
 
 
(setq材料(getstring“\n指定材料[1\u WC/2\u WD/3\u ST/]:”)
(setq代码(getstring“\n指定材料[1\u 01/2\u 02/3\u 03/4\u 04]:”)
(setq MaterialCode(strcat“Material”“Num”))
回复

使用道具 举报

4

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 15:54:39 | 显示全部楼层
嘿伙计们,
 
我只是想自救,我应该使用getkword,它应该如下所示
 
(setq Mat1(getkword“\n[bL/CP/GL/FA/FB/ML/P/PL/SP/ST/TL/WC/WD]:”)
(initget“01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 18 19 20”)
(setq Num1(getkword“\n[01/02/03/04/05/06/07/08/09/10/11/12/13/14/15/16/17/18/19/20]:”)
(setq Mat1Num1(strcat Mat1 Num1))
 
然后得到我想要的
但是为了使它更友好,在没有澄清窗口询问哪个数字是1的情况下,如何将类型1=01?
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:55:34 | 显示全部楼层
您好,请使用代码标签
 
 
此代码带有代码标记
  1. (defun [color="blue"]matNum[/color] (/ l i s mat1 Num1)
  2. (setq        i 1
  3. l '("BL" "CP" "GL" "FA"        "FB" "ML" "P" "PL" "SP"        "ST" "TL" "WC"
  4.     "WD")
  5. )
  6. (repeat (length l)
  7.    (setq s (cons (strcat (itoa i) "_" (nth (1- i) l) " / ") s))
  8.    (setq i (1+ i))
  9. )
  10. (initget 7)
  11. (if
  12.    (and
  13.      (setq i (getint (strcat "\nIndex number ["
  14.                       (apply 'strcat (reverse s))
  15.                       "]? : "
  16.               )
  17.       )
  18.      )
  19.      (<= i (length l))
  20.      (setq mat1 (nth (1- i) l))
  21.      (progn
  22. (initget 7)
  23. (setq i (getint "Enter number 1~20 ? : "))
  24. (setq Num1 (itoa i))
  25. (<= i 20)
  26.      )
  27.    )
  28. (princ (strcat Mat1
  29.          (if (< i 10)
  30.            (strcat "0" Num1)
  31.            Num1
  32.          )
  33. )
  34. )
  35. ([color="blue"]prompt[/color] "\nInvalid Input.. ")
  36. )
  37. [color="green"];(princ) ; removed[/color]
  38. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:59:14 | 显示全部楼层
韩,你好,
 
谢谢它工作得很好!
回复

使用道具 举报

4

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:06:01 | 显示全部楼层
 
我设置Mat1和Num1的原因是为了帮助在下一步中插入一个属性块,并根据刚刚输入的内容重命名该块,例如,通过运行lisp并输入“1”“1”,然后得到一个名为BL01的属性块。
 
有什么提示吗?非常感谢:)
回复

使用道具 举报

4

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:07:40 | 显示全部楼层
 
我在想命令Gatte,然后我把它写在我的lisp中
(命令“gatte”)并返回gatte未知命令“gatte”
回复

使用道具 举报

4

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:10:59 | 显示全部楼层
GATTE是一个全局属性编辑函数。
 
如果你想重命名块,我只需要“插入”常规块,并在ENTLAST上使用重命名函数?
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

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

铜币
390
发表于 2022-7-5 16:16:54 | 显示全部楼层
 
您好,我附上了一张图片来阐明我的想法:)
 

                               
登录/注册后可看大图

 
谢谢
狮子座
回复

使用道具 举报

4

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:20:28 | 显示全部楼层
 
步骤1已完成,卡在步骤2:(
回复

使用道具 举报

4

主题

18

帖子

14

银币

初来乍到

Rank: 1

铜币
20
发表于 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))
)
)
)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:06 , Processed in 0.738668 second(s), 75 queries .

© 2020-2025 乐筑天下

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