Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Je désire faire une sélection unique filtrée d'objets curvilignes avec par exemple ceci;

 

(ssget "_+.:E:S" 
 (list
   (cons 0 "*POLYLINE,LINE,ARC,CIRCLE,ELLIPSE,SPLINE")
   (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
   (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
   (cons -4 "      (cons -4 "&") (cons 70 112)
   (cons -4 "NOT>")
 )
)

 

Pour écarter les maillages (concernant les polylignes, j'ai fixé le bit 70 à 112 (+ 64 32 16)

 

Les splines ont aussi un code de groupe à 70, et dans l'aide il est donné ceci:

70 Drapeau de spline (valeur binaire) :

 

1 = Spline fermée

2 = Spline périodique

4 = Spline rationnelle

8 = Plan

16 = Linéaire (bit de spline plane également défini)

(la somme de ces bits étant de 31), je pensait que mon filtre fixé à 112 ne poserais pas de problème pour celle-ci. Malheureusement en faisant des tests je vient de m'apercevoir que certaines splines pouvaient me retourner un bit à 32 ou 40 :casstet:

Je comprends pas comment de telles valeurs peuvent m'être retournées et je comprends pas bien le bit 16 bit de spline plane également défini , où vont t-il le pécher la valeur de ce bit?

Du coup je ne sais pas comment monter mon filtre simplement pour inclure ces splines qui se retrouve actuellement écartées.

 

Si vous avez des éclaircissements...

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonsoir bonuscad,

 

Je vais pas t’être d’un grand secours car les splines ne sont pas des entitées que j’ai l’habitude de côtoyer dans mon secteur d’activité et je vais certainement répondre à côté..

 

je vient de m'apercevoir que certaines splines pouvaient me retourner un bit à 32 ou 40

J’ai néanmoins déjà pu constater ce que tu décris sur la somme des bits dépassant la valeur 31 (somme des bits documentés). Une astuce qui t’aidera peut être a trouver des éléments de réponses (les bits non documenté) est de comparer la valeur du code 70 avec la description des propriétés retourné par la commande _list d’AutoCAD

 

et je comprends pas bien le bit 16 bit de spline plane également défini , où vont t-il le pécher la valeur de ce bit?

A l’époque où je m’y suis intéressé, j'étais arrivé à la conclusion (peut être je me trompe) que le bit 16 correspond à une spline rectiligne, sa caractéristique principale étant de ne pouvoir être fermé (à tester avec la fenêtre de propriété) , exemple :

 

Cas d'une spline rectiligne (ne peut être clos)

((-1 . ) (0 . "SPLINE") (330 .

d'entité: 7ee5acf8>) (5 . "232") (100 . "AcDbEntity") (67 . 0) (410 . "Model")

(8 . "0") (62 . 1) (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 56) (71 . 3)

(72 . 10) (73 . 6) (74 . 4) (42 . 1.0e-010) (43 . 1.0e-010) (44 . 1.0e-010) (40

. 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 454.114) (40 . 1266.18) (40 .

1634.81) (40 . 1634.81) (40 . 1634.81) (40 . 1634.81) (10 1631.47 3653.65 0.0)

(10 1782.84 3653.65 0.0) (10 2204.9 3653.65 0.0) (10 2749.83 3653.65 0.0) (10

3143.4 3653.65 0.0) (10 3266.28 3653.65 0.0) (11 1631.47 3653.65 0.0) (11

2085.58 3653.65 0.0) (11 2897.64 3653.65 0.0) (11 3266.28 3653.65 0.0))

 

La même en lui déplaçant un sommet (peut être clos par la suite)

((-1 . ) (0 . "SPLINE") (330 .

d'entité: 7ee5acf8>) (5 . "237") (100 . "AcDbEntity") (67 . 0) (410 . "Model")

(8 . "0") (62 . 1) (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 40) (71 . 3)

(72 . 10) (73 . 6) (74 . 4) (42 . 1.0e-010) (43 . 1.0e-010) (44 . 1.0e-010) (40

. 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 592.942) (40 . 1346.25) (40 .

1714.89) (40 . 1714.89) (40 . 1714.89) (40 . 1714.89) (10 1599.17 3965.63 0.0)

(10 1781.1 4078.95 0.0) (10 2194.18 4336.23 0.0) (10 2733.69 3921.27 0.0) (10

3110.25 3954.66 0.0) (10 3233.98 3965.63 0.0) (11 1599.17 3965.63 0.0) (11

2147.0 4192.48 0.0) (11 2865.35 3965.63 0.0) (11 3233.98 3965.63 0.0))

 

Je désire faire une sélection unique filtrée d'objets curvilignes

Pourquoi ne pas faire 2 sélections (en 2 temps) une sur les POLYLIGNE en écartant les maillages comme tu le fais, et une autre sur les autres entitées curvilignes puis fusionner les 2 sélections en une seul, bien que ce soit la solution que tu voulais éviter.. .

 

A+

 

 

 

Apprendre => Prendre => Rendre

Posté(e)

Merci te ta réponse,

 

Je suis comme toi, pas très familier avec ces splines.

Merci de m'avoir souligné la possibilité des splines à 2 sommets auquel je n'avais pas pensé (ça peut m'aider)

 

Je continu à fouiller le net, voir si un code ne pourrait pas m'aider à la compréhension de ce foutu code de groupe 70, pas trouvé grand chose de concluant pour le moment.

 

celui qui suit (le seul que j'ai trouvé avec entmake) ne m'éclaire guère...

http://marine.bagneris.free.fr/wiki/data/pedago/representationFormesComplexes/infographie/3dpline2Spline.lsp

 

pour la sélection je vais faire simplement avec les opérateurs...

 

(ssget "_+.:E:S" 
 (list
   (cons -4 "      (cons -4 "        (cons 0 "*POLYLINE,LINE,ARC,CIRCLE,ELLIPSE")
       (cons -4 "          (cons -4 "&") (cons 70 112)
       (cons -4 "NOT>")
     (cons -4 "AND>")
     (cons -4 "        (cons 0 "SPLINE")
     (cons -4 "AND>")
   (cons -4 "OR>")
   (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
   (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
 )
)

 

[Edité le 28/7/2011 par bonuscad]

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonsoir,

 

Merci de m'avoir souligné la possibilité des splines à 2 sommets

 

C’est surtout le fait que les points soient alignés (2 ou plus) que j’ai voulu souligner, ainsi que la présence d’un bit 32 (bit non documenté comme tu l’avais remarqué).

 

 

Par exemple si je reprends le cas d’une spline rectiligne ( définie par 3 points alignés), si je l’interroge de la façon suivante :

 (entget (car (entsel)))

 

J’obtiend :

Choix de l'objet: ((-1 . ) (0 . "SPLINE") (330 . ) (5 . "220") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 56) (71 . 3) (72 . 9) (73 . 5) (74 . 3) (42 . 1.0e-010) (43 . 1.0e-010) (44 . 1.0e-010) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 69.1337) (40 . 138.267) (40 . 138.267) (40 . 138.267) (40 . 138.267) (10 3.0464 92.0315 0.0) (10 66.091 92.0315 0.0) (10 112.18 92.0315 0.0) (10 158.269 92.0315 0.0) (10 181.314 92.0315 0.0) (11 43.0464 92.0315 0.0) (11 112.18 92.0315 0.0) (11 181.314 92.0315 0.0))

 

Le code 70 vaut 56 (soit 8+16+32) pour s’en convaincre il me suffit d’interroger la spline de la façon suivante :

 

Commande: _list

Choix des objets: 1 trouvé(s)

Choix des objets:

SPLINE Calque: "0"

Espace: Espace objet

Maintien = 220

Longueur: 138.2674

Ordre: 4

Propriétés: Plane, Non rationnelle, Non périodique

Fourchette paramétrique: Début 0.0000

Fin 138.2674

Nombre de points de contrôle: 5

Points de contrôle: X = 43.0464 , Y = 92.0315 , Z = 0.0000

X = 66.0910 , Y = 92.0315 , Z = 0.0000

X = 112.1801 , Y = 92.0315 , Z = 0.0000

X = 158.2693 , Y = 92.0315 , Z = 0.0000

X = 181.3138 , Y = 92.0315 , Z = 0.0000

Nombre de points de lissage: 3

Données utilisateur: Points de lissage

X = 43.0464 , Y = 92.0315 , Z = 0.0000

X = 112.1801 , Y = 92.0315 , Z = 0.0000

X = 181.3138 , Y = 92.0315 , Z = 0.0000

Tolérance du point de lissage: 1.0000E-10

 

Les infos renvoyées par la commande _list (à la ligne propriété) me confirme bien qu’il y a bien un bit 8 ( plan) normal les points sont alignées donc ils appartiennent au même plan, par contre il n’y a pas de bit 2 ( Non périodique) n’y de bit 4 ( Non rationnelle), de plus la spline n’étant pas close (ne pouvant pas l’être car linaire bit 16) il n’y a pas non plus de bit 1.

 

Il nous reste donc bien un bit 32 non documenté pour arrivé à 56, si cela peut rassurer je n’ai à ce jour jamais réussie à me démontrer la présence d’autres bits.

 

 

Concernant le bit 16 (linéaire), je suis arrivé à la conclusion qu’il trouvait sa justification dans le fait qu’il n’est pas possible de fermer la spline via la fenêtre de propriété , à bien y réfléchir c’est tout à fait normal car pour ce faire il faudrait que la spline face un angle de PI sur son dernier sommet ( rappel : la spline est une courbe).

 

 

A la relecture de mon message précédent je me suis aperçu que mes doigts avaient fourchés:

Pourquoi ne pas faire 2 sélections (en 2 temps) une sur les POLYLIGNE en écartant les maillages comme tu le fais, et une autre sur les autres entitées curvilignes puis fusionner les 2 sélections en une seul

 

Il fallait lire filtre à la place de sélection, personnellement pour ta sélection j’avais plus vu quelque chose comme ça :

 

 (ssget "_+.:E:S" 
 (list
   (cons -4 "      (cons -4 "        (cons 0 "*POLYLINE")
       (cons -4 "          (cons -4 "&") (cons 70 112)
       (cons -4 "NOT>")
     (cons -4 "AND>")
     (cons -4 "        (cons 0 "SPLINE,LINE,ARC,CIRCLE,ELLIPSE")
     (cons -4 "AND>")
   (cons -4 "OR>")
   (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
   (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
 )
)

 

C'est du pareil au même, plus une histoire de gout qu’autre chose… ;)

A+

 

Apprendre => Prendre => Rendre

Posté(e)

Salut,

 

Il nous reste donc bien un bit 32 non documenté

 

 

Merci, c'est ce que je vais essayer de retenir de ton intervention, faire systématiquement une opération booléenne sur ce bit si j'ai besoin d'identifier la nature de la spline.

Un (boole 4 32 bit_spline) ou un (rem bit_spline 32) dans les conditions d'égalité des bit sera indispensable pour traiter les splines concernées sans en omettre.

 

Mais c'est pas demain que je vais intervenir directement sur des splines en toute sérénité, ces entités sont vraiment complexes. Je me contenterai de pouvoir les filtrer à la sélection.

 

Merci de ton aide ;)

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é