今天闹鬼了。各位帮忙看一下。
(setq N0 (strlen TextString));获取图号尾数(setq N1 (- N0 1))
(setq N2 (substr TextString N1 N0))
(setq N3 (substr TextString 1 (- N0 2)))
(setq N4 (+ (atoi N2) 1))
位数加1的这个开始没有问题。用了一会突然出现了
N4的值变成04了。一开始一直是4.
刚开始学,郁闷啊,求各位指点一下。
(strlen TextString) 获取的是字串长度
与图号尾数有何关联?
TextString的含值是什么? 本帖最后由 小男人漏水 于 2018-1-13 08:20 编辑
Andyhon 发表于 2018-1-12 21:30
(strlen TextString) 获取的是字串长度
与图号尾数有何关联?
长老。这个是程序一段。 Textstring 是已经取得图框内的图号的长度。例如:HIE-A170523-0001-01长度是19
,这段的目的是把01提出来转成数字+1,然后与HIE-A170523-0001进行合并。
现在出现的问题是 N4的值有时候是02 有时候是2 ,所以比较郁闷。
不知道是不是跟其设置有关。
(Defun C:tt ()
(setq en0 (car (entsel)))
(setq tkss(ssadd) tkss(ssadd en0 tkss))
;(setqTKSS (ssget;"x" X为全选
;'((-4 . "<or") (2 . "a4") (2 . "a3") (-4 . "or>")))
;;此处请选有属性定义的图块
(setq vn0 (vlax-ename->vla-object en0))
(setq lstVar (vla-getattributes vn0))
(setq lstAttrs (vlax-safeArray->list (vlax-variant-value lstVar)))
(setq TextString nil)
(foreach attrlstAttrs
(setq TagString (vla-get-TagString attr))
(if(equal TagString "DWGNO");此处为你想要的元素
(setq TextString (vla-get-TextString attr))
)
)
(if TextString
(princ (strcat "The content of length = " TextString))
(princ "没有找到图号 ")
)
;尾数+1程序
(setq N0 (strlen TextString));获取图号尾数
(setq N1 (- N0 1))
(setq N2 (substr TextString N1 N0))
(setq N3 (substr TextString 1 (- N0 2)))
(setq N4 (+ (atoi N2) 1))
(IF (<= N4 9)
(setq N4 (strcat (itoa 0) (itoa N4))))
(IF (> N4 9)
(setq N4 (itoa N4)))
(setq CM-NEW (strcat N3 N4))
;尾数+1程序
(setq nn (SSLENGTH TKSS))
(WHILE (< 0 (SSLENGTH TKSS))
(SETQ TK0 (SSNAME TKSS 0))
(PROGN (SETQ TK0 (VLAX-ENAME->VLA-OBJECT TK0))
(SETQ TK0ATTS (VLAX-SAFEARRAY->LIST
(VLAX-VARIANT-VALUE
(VLA-GETATTRIBUTES TK0)
)
)
)
(FOREACH ATTTK0ATTS
(PROGN (IF(= "DWGNO" (VLA-GET-TAGSTRING ATT))
(SETQ FATT ATT)
)
(IF(= "零件图号" (VLA-GET-TAGSTRING ATT))
(SETQ FATT1 ATT)
)
)
)
(VLAX-PUT-PROPERTY FATT1 'TEXTSTRING CM-NEW)
(VLAX-PUT-PROPERTY FATT 'TEXTSTRING CM-NEW)
)
(SSDEL (SSNAME TKSS 0) TKSS)
)
(princ (strcat "修改成功!共修改" (itoa nn) "个图框!"))
(prin1)
)
本帖最后由 Andyhon 于 2018-1-13 09:21 编辑
Command: (setq TextString "HIE-A170523-0001-01")
"HIE-A170523-0001-01"
Command: (progn
(_> ;尾数+1程序
(_> (setq N0 (strlen TextString));获取图号尾数
(_> (setq N1 (- N0 1))
(_> (setq N2 (substr TextString N1 N0))
(_> (setq N3 (substr TextString 1 (- N0 2)))
(_> (setq N4 (+ (atoi N2) 1))
(_> )
2
Command: !N0
19
Command: !N1
18
Command: !N2
"01"
Command: !N3
"HIE-A170523-0001-"
Command: !N4
2
Command: (progn
(_> ;尾数+1程序
(_> (setq N0 (strlen TextString));获取图号字串长度
(_> (setq N1 (1- N0))
(_> (setq N2 (substr TextString N1))
(_> (setq N3 (substr TextString 1 (- N0 2)))
(_> (setq N4 (+ (atoi N2) 1))
(_> )
2
Command: !N1
18
Command: !N2
"01"
Command: (if (> N4 9)
(_> (setq N4 (itoa N4))
(_> (setq N4 (strcat "0" (itoa N4)))
(_> )
"02"
您的注释容易误(导)解
(setq TextString "HIE-A170523-0001-01")
(progn
;尾数+1程序
(setq N0 (strlen TextString));获取图号尾数
(setq N1 (- N0 1))
(setq N2 (substr TextString N1 N0))
(setq N3 (substr TextString 1 (- N0 2)))
(setq N4 (+ (atoi N2) 1))
)
(progn
;尾数+1程序
(setq N0 (strlen TextString));获取图号字串长度
(setq N1 (1- N0))
(setq N2 (substr TextString N1))
(setq N3 (substr TextString 1 (- N0 2)))
(setq N4 (1+ (atoi N2)))
)
Ref:
http://bbs.mjtd.com/thread-107901-1-1.html
(IF (<= N4 9)
(setq N4 (strcat (itoa 0) (itoa N4))))
(IF (> N4 9)
(setq N4 (itoa N4)))
(if (> N4 9)
(setq N4 (itoa N4))
(setq N4 (strcat "0" (itoa N4)))
)
Andyhon 发表于 2018-1-13 09:19
Command: (setq TextString "HIE-A170523-0001-01")
"HIE-A170523-0001-01"
感谢长老。我知道自己错在哪里了。谢谢!哎周五觉得不能做事。脑子容易变浆糊。哈哈感谢!
页:
[1]