rwsice9 发表于 2022-7-6 09:50:05

帮助制作字符串

大家好。我在构造字符串时有点麻烦。我的代码运行得很好,除了一件小事。我希望字符串的中间部分是一个变量,由用户在代码的前面设置,或者读取另一个用户变量。
 
以下是我目前的代码:

(defun C:titld (/ strRevv )
;'(vl-load-com)
(SETQ RV (GETVAR "USERI5"))
(IF (= RV 0)(setVAR "USERI5" (getint "\nEnter Current Revision Number: ")))
(setq pt (getpoint "\Select Insertion Point: "))
(setq strRevv (getvar "useri5"))
(setq date (strcat "%<\\AcSm SheetSet.REV " "04" " DATE \\f \"%tc1\">%"))
(setq desc (strcat "%<\\AcSm SheetSet.REV " "04" " DESCRIPTION \\f \"%tc1\">%"))
(setq initial (strcat "%<\\AcSm SheetSet.REV " "04" " INITIALS \\f \"%tc1\">%"))

;(setq date (strcat "rev " strrevv " INITIALS"))
(COMMAND "-insert" "rev1t40-d" pt "" "" "" strrevv date desc initial)()
)

 
请注意,在每个日期、描述、初始行中都有“04”。我希望能够使用存储在strRevv变量中的值,并从该数字中生成字符串。这可能吗?
 
提前感谢您的时间!

SOliver 发表于 2022-7-6 10:31:27

对于这个字符串部分,您可以替换为
 

(getint ...... )

 
具有
 

(getstring ......)

 
除非您要求它是整数,在这种情况下,您可以使用
 

(rtos <integer value> 2 0)

 
至于setvar;你不能用SETQ代替SETVAR吗?存储变量。如果在调用此函数之前设置,则始终可以使用全局变量。
 
希望这有帮助,
索利弗

rwsice9 发表于 2022-7-6 10:57:11

感谢您的超快回复!事实上,我在发布这篇文章后大约10秒就找到了答案。至于SETVAR,我需要使用它,因为我对其他命令也使用相同的值。
 
我试图将一个整数粘贴到字符串中,但autocad不喜欢它,所以我在其中添加了一行(itoa),以及一个IF来检查数字,如果数字小于10,则以零作为前缀。
 
非常感谢您抽出时间回复!
页: [1]
查看完整版本: 帮助制作字符串