Aftertouch 发表于 2022-7-5 16:24:49

相反的流程列表

大家好,
 
下面的代码在所有选定的块中循环并更改属性,每个块都会增加一个数字。
但是,最后生成的实体得到的数字最低。。。第一个生成的实体得到的数字最高。。。
所以它循环如下: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."))
)

marko_ribar 发表于 2022-7-5 17:22:44

只是快速修改。。。但未测试。。。
 
(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."))
)

Aftertouch 发表于 2022-7-5 17:37:57

很好,成功了!
 
非常感谢!
页: [1]
查看完整版本: 相反的流程列表