justino Posté(e) le 26 novembre 2021 Posté(e) le 26 novembre 2021 Bonjour a tous, Je recherche une commande si existante pour connaitre la quantité de blocs dans un polygone. Commande ou lisp !!! Merci a tous Citer
Curlygoth Posté(e) le 26 novembre 2021 Posté(e) le 26 novembre 2021 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 Citer Mon site Web (en cours de construction) : Site DA-CODE de @didier
lecrabe Posté(e) le 26 novembre 2021 Posté(e) le 26 novembre 2021 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 Citer Autodesk Expert Elite Team
Luna Posté(e) le 26 novembre 2021 Posté(e) le 26 novembre 2021 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 Citer
Olivier Eckmann Posté(e) le 26 novembre 2021 Posté(e) le 26 novembre 2021 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 1 Citer
(gile) Posté(e) le 26 novembre 2021 Posté(e) le 26 novembre 2021 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")) ) ) 1 Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Luna Posté(e) le 26 novembre 2021 Posté(e) le 26 novembre 2021 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 Citer
VDH-Bruno Posté(e) le 29 novembre 2021 Posté(e) le 29 novembre 2021 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) Citer Apprendre => Prendre => Rendre
VDH-Bruno Posté(e) le 29 novembre 2021 Posté(e) le 29 novembre 2021 En AutoLisp c'est un truc que j'ai toujours regretté avec sslength _$ (length nil) 0 _$ (sslength nil) ; erreur: type d'argument incorrect: lselsetp nil Citer Apprendre => Prendre => Rendre
Messages recommandés