一个简单的方法是只读取一个点块,然后以最大的数字结束,然后下一个插入值就是+1,类似这样
- (setq tag1 "SETOUT_POINT_NUMBER") ; change to your tag name
- (setq ptno 0)
- (setq ss1 (ssget "x" '((0 . "INSERT") (2 . "SETOUT_POINT_NO")))) ; change to your block name
- (setq x (sslength ss1))
- (repeat x
- (foreach att (vlax-invoke (vlax-ename->vla-object (ssname SS1 (setq x (1- x)) )) 'getattributes)
- (if (= tag1 (strcase (vla-get-tagstring att)))
- (PROGN
- (setq highnum (atoi (vla-get-textstring att)))
- (if (> highnum ptno)
- (setq ptno highnum)
- ) ; IF
- ) ; PROGN
- ) ; IF
- ) ; FOREACH
- ) ; REPEAT
- (setq ss1 nil)
- (princ (strcat "\nHighest ptno is " (rtos ptno)))
|