- UID
- 7
- 积分
- 2559
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-1-3
- 最后登录
- 1970-1-1
|
发表于 2002-1-19 23:42:58
|
显示全部楼层
回复: 请看:....
最初发表由 e2002
[B]loner想选择图形里>=n的所有ZH层的文字,并将文字改为+1的值,该如何实现
我想选择图形里>=n的所有ZH层的文字,并将文字改为+1的值,该如何实现,下列选择不能进行
(setq n (getstring"\n从XX开始改:"))
(setq ss1 (ssget "x" '((8 . "zh" ) (0 . "TEXT")(-4 . ">=") (1. n)))
String是不能使用">="的

- ....
- (while (setq ss (ssget '((8 . "ZH")(0 . "TEXT"))))
- (setq nCount (1- (sslength ss)))
- (while (>= nCount 0)
- (setq en (ssname ss nCount)
- ob (vlax-ename->vla-object en)
- sContent (vla-get-TextString ob)
- nContent (atoi sContent)
- )
- (if (>= nContent n)
- (progn
- (setq nContent (1+ nContent)
- sContent (itoa nContent)
- )
- (vla-put-TextString ob sContent)
- )
- );end if
- (vlax-release-object ob)
- (setq nCount (1- nCount))
- );end while
- );end while
- .....
:9 :9 :9 [/B]
(atoi)函数对字符串的转换还有一个问题:
如果提供的字符串参数不是纯数字字符,而是字母,符号,或与数字字符混合,则返回值=0,而不是nil,所以无法判断参数是不是"0",或"0.000"....
故还需要对sContent作进一步的分析:对其每一char判断其ascii值是否在(ascii 0 ) ~ (ascii 9)之间如不是,则判断是否是"+","-", ".",可能还要计算到底有多少个"+","-",","....Faint....此方法看来是走不通了,怎么办?
换一个思路:如果atoi返回了0,则开始判断其每一个char是不是均为"0"或","
若是,则可以加1,否则不能这样加1.
如果最求完美,还需要对"字母符号与数字字符混合"的sContent判断是那个数字段
要加1....(电气软件ess中就有这样的程序实现,可参考,当然博超公司不会提供源代码给你的.他是用ObjectARX写的,可能C++中有现成的函数来处理string to int吧? ) |
|