Aller au contenu

Quantité de blocs dans un polygone


justino

Messages recommandés

salut,

J'utilise le théoreme de jordan via programmation pour ce genre de chose (et je check le point d'insertion des objets du dessin)

si ca repond au thoreme il est dedans donc je compte sinon je compte pas 😉

https://fr.wikipedia.org/wiki/Théorème_de_Jordan

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Avec un AutoCAD MAP on peut filtrer le dessin sur un emplacement géographique et/ou une (ou plusieurs) propriété(s) pour limiter l'affichage aux seuls objets vérifiant ces conditions. Ce n'est pas forcément le plus rapide, mais c'est rigolo.

J'ai fait une petite vidéo du principe https://autode.sk/30ZwYty

 

Olivier

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

 

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é