Aller au contenu

Sélectionner des blocs dynamiques en fonction de leurs paramètres


rrobert

Messages recommandés

Bonjour à toutes et à tous,

J'utilise des blocs dynamiques avec notamment des paramètres de visibilité, de longueur ainsi que des attributs.

J'aimerais pouvoir sélectionner les blocs de manière complexe, quelques exemples :

- Sélectionner tous les blocs dont la visibilité est "Douche"

- Sélectionner tous les blocs dont la visibilité est  "Douche" et l'attribut "Longueur" est 90 cm

- Sélectionner tous les blocs dont la visibilité est "Sans diamètre" et dont la valeur du paramètre de bloc "Longueur" est de 1,20m
 

J'aimerais que cela s'applique à tous les blocs, peut importe s'ils ont des paramètres de visibilité, rotation, longueur, miroir, attributs, etc.

Existe-t-il un lisp ou autre ? Est-ce trop complexe?
 

Merci pour vos réponses,

Rémi

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Si tu as une version pleine, tu trouveras sur cette page un un fichier LISP nommé Special_Selections.lsp dans lequel sont définies plusieurs commandes de sélections filtrées dont SSD qui permet de filtrer en fonction des propriétés dynamiques du premier bloc sélectionné.

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

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Bonjour @gile

 

Je reviens vers vous bien longtemps après votre post, n'ayant pas pu regarder cela avant, mes obligations professionnelles m'ayant amenées à d'autres projets...

Tout d'abord, votre lisp est magique !!

J'ai essayé SSD, c'est très puissant.

J'ai tout de même une petite question :

De base le filtre dynamique a une tolérance de 1e-12, mais est-il possible que ce filtre s'ouvre avec aucun paramètre, ainsi qu'une tolérance de 1e+12? Afin que je choisisse exactement le paramètre de sélection que je souhaite dans cette liste?

 

Pour SSAT j'avoue ne pas tout à fait comprendre la fonction.

J'ai des blocs avec plusieurs attributs, que se passe-t-il exactement lorsque je sélectionne un bloc? Il sélectionne tous les blocs ayant les mêmes attributs?

Existe-t-il une solution pour sélectionner les blocs ayant le même attribut et dont la valeur d'attribut est la même?

Merci,

Rémi

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Je vais essayer d'être clair sans être désobligeant.
J'ai essayé de faire en sorte que les routines que j'ai donné ici (ou sur gileCAD) soient polyvalentes pour répondre à des besoins généraux, à côté de ça, je pense avoir toujours essayé d'aider ceux qui voulaient apprendre AutoLISP.
Mais je n'ai aucune intension d'adapter ces routines pour des besoins particulier (écrire des programmes sur mesure, c'est mon gagne pain), libre à chacun d'apprendre AutoLISP et de les adapter.

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

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

J'ai une fonction qui peut éventuellement correspondre à ta demande @rrobert, mais il s'agit d'une fonction et non d'une commande donc si tu n'as pas de connaissances en LISP, cela ne te sera d'aucune utilité malheureusement...(Je n'ai pas la possibilité de choisir les blocs ayant la visibilité "Douche" et l'attribut "Longueur" à 90cm, mais il suffit d'effectuer le filtre sur la visibilité dans un premier temps et ensuite sur l'attribut dans un second temps)
Il s'agit de la fonction (Select-filter) < c'est un lien vers le sujet ^^ >, ce n'est pas la toute dernière version, plus complète, car je dois encore la retravailler un peu.
Si cela ne correspond pas à tes besoins je pourrais essayer de voir pour créer une commande pour te simplifier son utilisation :3

J'ai essayé de détailler un peu son fonctionnement dans mon dernier post, mais le plus gros des explications sont dans le fichier .lsp en commentaires (enfin dans le code visible dans le post du coup ^^").

Donc un exemple d'utilisation pour ton cas c'est d'écrire en ligne de commande :

(select-filter "DYN" '("*") '("_X") '(("*" . "Douche")) T)

> Permet de sélectionner tous les blocs, peut importe leur nom, dans l'ensemble du dessin et dont la visibilité, peut importe son nom à pour valeur "Douche". Renvoie les quantitatifs des blocs selon leur valeurs de propriétés dynamiques.

(select-filter "DYN" '("*") '("_X") '(("*" . "Douche")) T)
;; puis
(select-filter "ATT" '("*") nil '(("Longueur" . "90 cm")) T)

> Permet de sélectionner dans un premier temps les blocs ayant une propriété dynamique équivalente à "Douche", puis de sélectionner uniquement les blocs ayant un attribut nommé "Longueur" et de valeur "90 cm". Il est possible de faire cela car la fonction rend la sélection filtrée active (donc comme pour PICKFIRST = 1, tu peux réutiliser cette sélection filtrée dans d'autres commande, ou bien cette même fonction).

(select-filter "DYN" '("*") '("_X") '(("*" . "Sans diamètre") ("Longueur" . 1.20)) T)

> Permet de sélectionner tous les blocs ayant une propriété dynamique ayant pour valeur "Sans diamètre" ou ayant une propriété dynamique nommé "Longueur" et de valeur 1.20 (pour1,20m).
EDIT : cela fait parti des modifications que je dois corriger pour avoir un AND et non un OR sur les propriétés/valeurs (voire la possibilité d'avoir le choix) donc à ce stade, il faudra faire comme pour la visibilité + attribut, en deux étapes !^^"

Si cela ne te convient pas, alors je verrais si je peux en faire une commande pour faciliter son utilisation (sous forme de fonction, il ne faut surtout pas oublier les parenthèses !!!)

Bisous,
Luna

Modifié par Luna
Lien vers le commentaire
Partager sur d’autres sites

Bonjour @gile, loin de moi l'envie de vous demander de modifier votre lisp pour mon besoin personnel.

Je vous posais simplement des questions pouvant m'aiguiller sur la lecture de votre code et sa meilleure compréhension, désolé si ce n'était pas clair.

En l'occurrence j'ai trouvé ma réponse dans votre code, j'avais raté la partie définissant la valeur de tolérance de sélection.

 

@Luna ta fonction parait très riche également, j'avoue que ça me freine un peu car je n'ai encore jamais utilisé ça, mais l'idée de pouvoir sélectionner peu importe le nom des  blocs et attributs, c'est quelque chose de très intéressant dans ma manière de fonctionner !

Je vais quand même essayer de comprendre tout ça et je reviendrai vers toi quand j'aurai pu potasser un peu le sujet 🙂

Merci de la proposition.

 

Rémi

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é