zebulon_ Posté(e) le 6 mars 2007 Posté(e) le 6 mars 2007 Bonjour, je souhaite filtrer avec ssget les cotes alignées.Uniquement les cotes, j'y arrive avec(ssget '(( 0 . "DIMENSION"))) Mais, des cotes, il y en a de différents type et je ne voudrais sélectionner que les AcDbAlignedDimension Je pensais m'en sortir avec(ssget '((0 . "DIMENSION") (100 . "AcDbAlignedDimension")))mais ça ne marche pas Si quelqu'un a une idée Amicalement Zebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
Patrick_35 Posté(e) le 6 mars 2007 Posté(e) le 6 mars 2007 Salut (ssget (list (cons 0 "DIMENSION") (cons 100 "AcDbAlignedDimension"))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 6 mars 2007 Posté(e) le 6 mars 2007 Avec le code 70 L'ennui c'est que cette valeur entière n'est pas un bit logique, cela nécessite un filtre complexe. (ssget '( (0 . "DIMENSION") (-4 . "< AND") (-4 . "&=") (70 . 1) (-4 . "< NOT") (-4 . "< OR") (-4 . "&=") (70 . 3) (-4 . "&=") (70 . 5) (-4 . "OR>") (-4 . "NOT>") (-4 . "AND>") ) ) NB: enlever les espaces après le "< " Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
zebulon_ Posté(e) le 6 mars 2007 Auteur Posté(e) le 6 mars 2007 70 Type de cote: Les valeurs comprises entre 0 et 6 sont des valeurs entières représentant le type de cote. Les valeurs 32, 64 et 128 sont des valeurs de bit, ajoutées aux valeurs entières (la valeur 32 est systématiquement définie dans les versions 13 et ultérieures) 0 = Pivoté, horizontal ou vertical; 1 = Aligné 2 = Angulaire; 3 = Diamètre; 4 = Rayon 5 = Angulaire à 3 points; 6 = Superposé 32 = Indique que la référence de bloc (code de groupe 2) est référencée uniquement d'après cette cote. 64 = Type superposé. Il s'agit d'une valeur binaire (bit 7) utilisée seulement avec la valeur entière 6. Si elle est définie, l'ordonnée est de type X, sinon, elle est de type Y. 128 = Il s'agit d'une valeur binaire (bit 8) ajoutée aux autres valeurs du groupe 70 si le texte de cote est placé sur un emplacement défini par l'utilisateur plutôt que sur l'emplacement par défaut donc si j'ai bien compris, il faut que je pioche les valeurs 1 pour les cotes alignées et les valeurs 0 pour les cotes pivotées.Je vais regarder ça de plus prêt et je vous tiens au courant. Pour ce qui est du code 100, je pense que ça ne marche pas parce que ce code n'est pas unique.(ssget (list (cons 0 "DIMENSION") (cons 100 "AcDbAlignedDimension")))doit revenir au même que d'écrire(ssget '((0 . "DIMENSION") (100 . "AcDbAlignedDimension")))et là on constate qu'on peut sélectionner tout type de cotes (angulaires etc ...) MerciAmicalementZebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
Patrick_35 Posté(e) le 6 mars 2007 Posté(e) le 6 mars 2007 Mais, des cotes, il y en a de différents type et je ne voudrais sélectionner que les AcDbAlignedDimension(ssget (list (cons 0 "DIMENSION") (cons 100 "AcDbAlignedDimension")))doit revenir au même que d'écrire(ssget '((0 . "DIMENSION") (100 . "AcDbAlignedDimension")))Ben oui, cela répondait à ta question :exclam: Maintenant, si c'est la solution de Bonus, c'est que je n'ai pas compris la question :( @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zebulon_ Posté(e) le 6 mars 2007 Auteur Posté(e) le 6 mars 2007 Ce que je voulais dire, c'est que, quand on écrit (ssget (list (cons 0 "DIMENSION") (cons 100 "AcDbAlignedDimension")) le filtre ne filtre que les objets de type DIMENSION, quels qu'ils soient. Lisp ne tient pas compte de (cons 100 "AcDbAlignedDimension")), puisqu'il permet de sélectionner par exemple des cotes de rayon. Pour ce qui est de la solution de Bonuscad, je suis en train d'essayer de comprendre ... AmicalementZebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
zebulon_ Posté(e) le 6 mars 2007 Auteur Posté(e) le 6 mars 2007 ça y est, j'ai compris. L'ennui c'est que cette valeur entière n'est pas un bit logique, cela nécessite un filtre complexe. une cote pivotée - décimal : 0 binaire : 0une cote alignée - décimal : 1 binaire : 1une cote angulaire - décimal : 2 binaire : 10une cote diamètre - décimal : 3 binaire : 11une cote rayon - décimal : 4 binaire : 100une cote ang. 3pts - décimal : 5 binaire : 101une cote superposée - décimal : 6 binaire : 110 Donc le "&1" est valable pour les valeurs décimales 1, 3 et 5 d'où la nécessité du "not". Et, pour la même raison, un "&0" est valable pour les valeurs décimales 0, 2, 4 et 6.Si je veux pouvoir sélectionner uniquement les cotes pivotées (décimal 0) ou les cotes alignées (décimal 1), ça donne quelque chose comme ça : (ssget '( (0 . "DIMENSION") (-4 . "< OR") (-4 . "< AND") (-4 . "&=") (70 . 0) (-4 . "< NOT") (-4 . "< OR") (-4 . "&=") (70 . 2) (-4 . "&=") (70 . 4) (-4 . "&=") (70 . 6) (-4 . "OR>") (-4 . "NOT>") (-4 . "AND>") (-4 . "< AND") (-4 . "&=") (70 . 1) (-4 . "< NOT") (-4 . "< OR") (-4 . "&=") (70 . 3) (-4 . "&=") (70 . 5) (-4 . "OR>") (-4 . "NOT>") (-4 . "AND>") (-4 . "OR>") ) ) Vraiment ennuyeux de ne pas avoir de bit logique ;) AmicalementZebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
bonuscad Posté(e) le 6 mars 2007 Posté(e) le 6 mars 2007 Les valeurs comprises entre 0 et 6 sont des valeurs entières Les valeurs 32, 64 et 128 sont des valeurs de bit, Hé oui, comme si bien dit dans l'aide ils ont mélangé 2 type de codification. Pour les cotes pivotées, horizontales ou verticales, ce filtre à l'air de fonctionner (ssget '( (0 . "DIMENSION") (-4 . "< AND") (-4 . "&=") (70 . 0) (-4 . "< NOT") (-4 . "< OR") (-4 . "&=") (70 . 1) (-4 . "&=") (70 . 2) (-4 . "&=") (70 . 4) (-4 . "OR>") (-4 . "NOT>") (-4 . "AND>") ) Ce qui est bizarre j'ai du écarter (70 . 1) alors que cela aurait dut être fait par la condition logique (70 . 0) faire du boléen sur des codes qui sont a moitié des bits de controle..... :casstet: Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant