明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 308|回复: 4

[提问] 今天闹鬼了。各位帮忙看一下。

[复制链接]
发表于 2018-1-12 19:09 | 显示全部楼层 |阅读模式
(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.
刚开始学,郁闷啊,求各位指点一下。

发表于 2018-1-12 21:30 | 显示全部楼层
(strlen TextString) 获取的是字串长度
与图号尾数有何关联?

TextString的含值是什么?
 楼主| 发表于 2018-1-13 08:18 | 显示全部楼层
本帖最后由 小男人漏水 于 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 ,所以比较郁闷。
不知道是不是跟其设置有关。
  1. (Defun C:tt ()
  2.   (setq en0 (car (entsel)))
  3.   (setq tkss(ssadd) tkss(ssadd en0 tkss))
  4.   ;(setq  TKSS (ssget  ;"x" X为全选
  5.         ;'((-4 . "<or") (2 . "a4") (2 . "a3") (-4 . "or>")))
  6.   ;;此处请选有属性定义的图块
  7.   (setq vn0 (vlax-ename->vla-object en0))
  8.   (setq lstVar (vla-getattributes vn0))
  9.   (setq lstAttrs (vlax-safeArray->list (vlax-variant-value lstVar)))
  10.   (setq TextString nil)
  11.   (foreach attr  lstAttrs
  12.     (setq TagString (vla-get-TagString attr))
  13.     (if  (equal TagString "DWGNO")  ;此处为你想要的元素
  14.       (setq TextString (vla-get-TextString attr))
  15.     )
  16.   )
  17.   (if TextString
  18.     (princ (strcat "The content of length = " TextString))
  19.     (princ "没有找到图号 ")
  20.   )
  21. ;尾数+1程序
  22. (setq N0 (strlen TextString));获取图号尾数
  23. (setq N1 (- N0 1))
  24. (setq N2 (substr TextString N1 N0))
  25. (setq N3 (substr TextString 1 (- N0 2)))
  26. (setq N4 (+ (atoi N2) 1))
  27. (IF (<= N4 9)
  28.     (setq N4 (strcat (itoa 0) (itoa N4))))   
  29. (IF (> N4 9)
  30.     (setq N4 (itoa N4)))   
  31. (setq CM-NEW (strcat N3 N4))
  32. ;尾数+1程序  
  33. (setq nn (SSLENGTH TKSS))
  34.   (WHILE (< 0 (SSLENGTH TKSS))
  35.     (SETQ TK0 (SSNAME TKSS 0))

  36.     (PROGN (SETQ TK0 (VLAX-ENAME->VLA-OBJECT TK0))
  37.      (SETQ TK0ATTS (VLAX-SAFEARRAY->LIST
  38.          (VLAX-VARIANT-VALUE
  39.            (VLA-GETATTRIBUTES TK0)
  40.          )
  41.        )
  42.      )
  43.      (FOREACH ATT  TK0ATTS
  44.        (PROGN (IF  (= "DWGNO" (VLA-GET-TAGSTRING ATT))
  45.           (SETQ FATT ATT)
  46.         )
  47.         (IF  (= "零件图号" (VLA-GET-TAGSTRING ATT))
  48.           (SETQ FATT1 ATT)
  49.         )
  50.         
  51.        )
  52.      )
  53.      (VLAX-PUT-PROPERTY FATT1 'TEXTSTRING CM-NEW)
  54.            (VLAX-PUT-PROPERTY FATT 'TEXTSTRING CM-NEW)
  55.     )

  56.     (SSDEL (SSNAME TKSS 0) TKSS)
  57.   )
  58.   (princ (strcat "修改成功!共修改" (itoa nn) "个图框!"))
  59.   (prin1)
  60. )

发表于 2018-1-13 09:19 | 显示全部楼层
本帖最后由 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)))
)   

 楼主| 发表于 2018-1-15 10:02 | 显示全部楼层
Andyhon 发表于 2018-1-13 09:19
Command: (setq TextString "HIE-A170523-0001-01")
"HIE-A170523-0001-01"

感谢长老。我知道自己错在哪里了。谢谢!哎周五觉得不能做事。脑子容易变浆糊。哈哈感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2018-10-19 15:53 , Processed in 0.164718 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表