Aller au contenu

utilisation de 'filtre


Zugzwang

Messages recommandés

Bonjour

je cherche à filtrer ma sélection en fonction de l'échelle du type de ligne

j'ai trouvé les options pour :  Constantwidth pour les épaisseurs, Layer pour les calques, Color pour les couleurs, Linetype pour les types de lignes

mais lineweight ne marche pas...

c'est pour compter les longueur par cette propriété en modifiant ce lisp qui marche pour les épaisseurs...

 

merci

 

;;pour les amateurs de joli code ce lisp du regrété Patrick_35
;; il fait la somme des longueurs de polylignes sélectionnée suivant un filtre à changer en dur à la 2eme ligne
;; https://cadxp.com/topic/40634-somme-par-%C3%A9paisseur-de-polylignes/?do=findComment&comment=227427
;; merci à lui

(defun c:stpe (/ ent ele lst sel res tot filtre)
  (setq filtre 'Constantwidth)			; Constantwidth pour les épaisseurs, Layer pour les calques, Color pour les couleurs, Linetype pour les types de lignes
  (and (ssget (list (cons 0 "*POLYLINE")))
       (progn
	 (vlax-for ent (setq sel
			      (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
		       )
	   (if (setq ele (assoc (vlax-get ent filtre) lst))
	     (setq lst (subst (list (car ele) (cons (vla-get-length ent) (cadr ele))) ele lst))
	     (setq lst (cons (list (vlax-get ent filtre) (list (vla-get-length ent))) lst))
	   )
	 )
	 (vla-delete sel)
	 (setq tot 0)
	 (mapcar '(lambda (x)
		    (setq tot (+ tot (setq res (apply '+ (cadr x)))))
		    (princ "\nTotal polyligne(s) type ")
		    (princ filtre)
		    (princ " --> ")
		    (princ (car x))
		    (princ (strcat " : " (rtos res)))
		    ;; ligne ajoutée pour demander une case de tableau
		    (print)
		    (command "MODIFTABLEAU" pause (rtos res))
		  )
		 (vl-sort lst '(lambda (a B) (< (car a) (car B))))
	 )
	 (princ (strcat "\nTotal : " (rtos tot)))
	 ;; ligne ajoutée pour demander une case de tableau
	 (print)
	 (command "MODIFTABLEAU" pause (rtos tot))
       )
  )
  (princ)
)

 

Lien vers le commentaire
Partager sur d’autres sites

merci... les fautes de frappes sont ma marque de fabrique et l'interpréteur d'autocad ne me pardonne rien...

Par contre, à bricoler le code 2x par ans, j'en oublie mon latin
c'est dans les dump qu'il me fallait trouver la propriété LinetypeScale
Car on ne parle pas de la commande Filtre, mais du filtre appelé dans (vlax-get ent filtre)

pfff... je suis un boulet... mes excuses pour le dérangement j'aurai du creuser plus avant de quémander

 

mais super merci comme d'habitude 🙂

 

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité