本帖最后由 小男人漏水 于 2018-1-13 08:20 编辑
长老。这个是程序一段。 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))
- ;(setq TKSS (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 attr lstAttrs
- (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 ATT TK0ATTS
- (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)
- )
|