yoin

EddyBeerke

Ik wil een bewerking doen voor meerdere geselecteerde objecten (lijnen e.d.), maar ik kom niet verder met de foreach
Wie kan mij verder helpen?


(defun c:test();
  (setq ~CMD (getvar "CMDECHO"))
    (setvar "CMDECHO" 0)
    (setq curlay (getvar 'CLAYER ))
    (setq ss1 (ssget))
    (foreach ent ss1
      (progn
           ;;;Hier komen de bewerkingen voor elke ent als voorbeeld copy
           (command "copy" ent "" "0,0" "0,0")
      );end progn
    );end foreach
  (setvar "CMDECHO" ~CMD)
);end defun
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

WebRacer

(defun c:test();
  (setq ~CMD (getvar "CMDECHO"))
    (setvar "CMDECHO" 0)
    (setq curlay (getvar 'CLAYER ))
    (setq ss1 (ssget))
    (setq aantal (sslength ss1)) ; om het aantal elementen te bepalen
    (setq teller 0) ; een tellerke gebruiken om erdoor te wandelen
    (repeat aantal

      (progn
          (setq ent (ssname ss1 teller))  ; omdat de selektie niet per naam gebeurt, maar per entiteit, eerst de naam van het n-de element bepalen
           (setq teller (1+ teller)) ; tellerke onmiddelijk eentje doen optellen voor volgende element na deze loop

           ;;;Hier komen de bewerkingen voor elke ent als voorbeeld copy
           (command "copy" ent "" "0,0" "0,0")
      );end progn
    );end repeat 
(setvar "CMDECHO" ~CMD)

Als je persé met foreach wil werken, dan moet je van de selektie ss1 eerst de namen van elk opbject in een lijst steken....
?

EddyBeerke

Bedankt WebRacer.

Ik ga het gelijk uitproberen.
Ik laat nog weten of dat dit is wat ik wil.

groetjes...


In iedergeval ff inloggen bij de CHAT...(onder menu "contact")
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

EddyBeerke

Dit is wat ik er o.a. van gemaakt heb.
Met als toevoeging een progress in de statusregel.


(defun c:COPY0(); copieërd ent's
  (setq ~CMD (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setq curlay (getvar 'CLAYER ))
  (setq ss1 (ssget))
  (setq aantal (sslength ss1)) ; om het aantal elementen te bepalen
  (setq teller 0) ; een tellerke gebruiken om erdoor te wandelen
  (acet-ui-progress-init "Objects gefilterd: " aantal)
  (repeat aantal
    (progn
      (setq ent (ssname ss1 teller))  ; omdat de selectie niet per naam gebeurt, maar per entiteit, eerst de naam van het n-de element bepalen
      (setq teller (1+ teller)) ; tellerke onmiddelijk eentje doen optellen voor volgende element na deze loop
      (command "copy" ent "" "0,0" "0,0")
      (acet-ui-progress-safe teller); ui-progress
    );end progn
  );end repeat 
  (setvar "CMDECHO" ~CMD)
  (princ (strcat "\n" (itoa teller) " objecten gecopieërd."))
  (acet-ui-progress-done); als acet-ui-progress-safe = 100% dan klaar
  (princ)
);end defun
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/