Aller au contenu

Messages recommandés

Posté(e)

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)

Posté(e)

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

Posté(e)

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 ...)

 

Merci

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)

Posté(e)
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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 ...

 

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)

Posté(e)

ç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 : 0

une cote alignée - décimal : 1 binaire : 1

une cote angulaire - décimal : 2 binaire : 10

une cote diamètre - décimal : 3 binaire : 11

une cote rayon - décimal : 4 binaire : 100

une cote ang. 3pts - décimal : 5 binaire : 101

une 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 ;)

 

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)

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é