bonuscad Posté(e) le 25 juillet 2011 Posté(e) le 25 juillet 2011 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ée2 = Spline périodique4 = Spline rationnelle8 = Plan16 = 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
VDH-Bruno Posté(e) le 25 juillet 2011 Posté(e) le 25 juillet 2011 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 40J’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
bonuscad Posté(e) le 27 juillet 2011 Auteur Posté(e) le 27 juillet 2011 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
VDH-Bruno Posté(e) le 28 juillet 2011 Posté(e) le 28 juillet 2011 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: _listChoix 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
bonuscad Posté(e) le 29 juillet 2011 Auteur Posté(e) le 29 juillet 2011 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
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