Aller au contenu

Quantité de blocs dans un polygone


Messages recommandés

Posté(e)

Hello @justino

Mais avec le Special_Selection de notre grand Maitre Gilles (gile)

et ses 2 commandes SSOC  (Selection Capturante) et SSOF (Selection Fenetre), tu selectionnes au choix :

UNE Polyligne 2D  OU  UN Cercle  OU  UNE Ellipse

Ainsi tu recuperes une selection et apres tu fais une selection rapide pour ne retenir QUE les Blocs ... Donc tu les comptes ...

La Sante, Bye, lecrabe - MERCI Gilles

PS: j'utilise aussi souvent les commandes: SSL, SSC, etc ...

Special_Selection__Gilles.zip

Autodesk Expert Elite Team

Posté(e)

Coucou,

Je peux éventuellement te suggérer ce programme (il s'agit d'une fonction et non d'une commande !). Il te faut dl le fichier .lsp et le charger (via la commande APPLOAD) dans ton dessin.

Pour pouvoir l'utiliser il faut dans un premier temps copier/coller le programme pour récupérer les coordonnées des sommets de la polyligne :

(defun vlax-curve-getPolylineCoordinates (pl / i pts)
  (repeat (setq	i (if (vlax-curve-isClosed pl)
		    (fix (vlax-curve-getEndParam pl))
		    (1+ (fix (vlax-curve-getEndParam pl)))
		  )
	  )
    (setq pts (cons (vlax-curve-getPointAtParam pl (setq i (1- i))) pts))
  )
)

Puis ensuite si tu veux compter tes blocs, tu rentres la ligne ci-dessous dans ta ligne de commande et tu appuies sur F2 pour avoir les résultats dans l'historique de commande :

(select-filter "BLC" '("*") (list "_CP" (mapcar '(lambda (pt) (trans pt 0 1)) (vlax-curve-getPolylineCoordinates (car (entsel "\nSélectionner un contour : "))))'()) nil T)

PS : C'est évidemment moins "accessible" pour un utilisateur (lambda) mais cela fonctionne bien pour ma part (et puis c'est juste un copier/coller au final).

Bisous,
Luna

Posté(e)

pour le fun en une seule expression LISP (à copier coller dans la ligne de commande :

(sslength
  (ssget "_WP"
	 (mapcar
	   'cdr
	   (vl-remove-if-not
	     (function (lambda (x) (= (car x) 10)))
	     (entget (car (entsel "\nSélectionnez une polyligne: ")))
	   )
	 )
	 '((0 . "INSERT"))
  )
)

 

  • Upvote 1

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Il est vrai que par "quantité de blocs" j'ai entendu "faire le quantitatif pour chaque définition de blocs référencée" et non "donner le nombre de références de blocs". Donc en effet le résultat diffère un peu. Encore une fois je me suis laissée emportée par les mots... 

Bisous, Luna

 

Posté(e)

Bonjour,

Rapidement et aussi pour le fun, expression fonctionnant dans le SCU et qui retourne 0 si le polygone ne contient pas de bloc.

(sslength
  (cond	((ssget	"_WP" ((lambda (e i / pt pts) (while (setq pt (vlax-curve-getPointAtParam e i)) (setq i (1+ i) pts (cons (trans pt 0 1) pts))))
			(car (entsel "\nSélectionnez une polyligne: "))
			0)
		'((0 . "INSERT"))
	 )
	)
	((ssadd))
  )
)

(Ps: Surtout un prétexte ici pour partager une astuce comme une autre pour éviter à la fonction sslength d'échouer sur une selection null et de retourner 0 au moyen d'une sélection vide)

Apprendre => Prendre => Rendre

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é