相反的流程列表
大家好,下面的代码在所有选定的块中循环并更改属性,每个块都会增加一个数字。
但是,最后生成的实体得到的数字最低。。。第一个生成的实体得到的数字最高。。。
所以它循环如下:ent new=>old。
我怎样才能扭转局面?
所以循环如下:ent old=>ent new
(defun PUNTENHERNUMMEREN ( blockselectie huidigelayer / nieuwpuntnummer )
(setq i 0)
(setq e (ssname blockselectie i)) ;get an ename
(setq nieuwpuntnummer (LM:getattributevalue e "$NUMMER" )) ;Eerste entity puntgroepnummer
(setq nieuwpuntnummer (strcat (substr nieuwpuntnummer 1 1) "001")) ;Nieuw startnummer maken
(setq nieuwpuntnummer (atoi nieuwpuntnummer)) ;Loop counter reset
(setq n (sslength blockselectie)) ;Aantal entities in selectie
(repeat n ;Repeat aantal keer
(setq e (ssname blockselectie i)) ;get an ename
(LM:setattributevalue e "$NUMMER" (itoa nieuwpuntnummer)) ;Attribute van block aanpassen
(setq nieuwpuntnummer (+ nieuwpuntnummer 1)) ;Nummer verhogen
(setq i (1+ i)) ;Volgende entity
(setq bestaandpuntnummer bestaandpuntnummer) ;Laatste return hoogstepuntnummer
) ;Einde repear
(princ (strcat "\nTotaal: " (itoa n) " punten hernummerd."))
) 只是快速修改。。。但未测试。。。
(defun PUNTENHERNUMMEREN ( blockselectie huidigelayer / nieuwpuntnummer i e n )
(setq i 0)
(setq e (ssname blockselectie (1- (sslength blockselectie)))) ;get an ename
(setq nieuwpuntnummer (LM:getattributevalue e "$NUMMER" )) ;Eerste entity puntgroepnummer
(setq nieuwpuntnummer (strcat (substr nieuwpuntnummer 1 1) "001")) ;Nieuw startnummer maken
(setq nieuwpuntnummer (atoi nieuwpuntnummer)) ;Loop counter reset
(setq n (sslength blockselectie)) ;Aantal entities in selectie
(repeat n ;Repeat aantal keer
(setq e (ssname blockselectie (setq n (1- n)))) ;get an ename
(LM:setattributevalue e "$NUMMER" (itoa nieuwpuntnummer)) ;Attribute van block aanpassen
(setq nieuwpuntnummer (+ nieuwpuntnummer 1)) ;Nummer verhogen
(setq bestaandpuntnummer bestaandpuntnummer) ;Laatste return hoogstepuntnummer
(setq i (1+ i))
) ;Einde repeat
(princ (strcat "\nTotaal: " (itoa i) " punten hernummerd."))
)
很好,成功了!
非常感谢!
页:
[1]