marionsname Posté(e) le 14 novembre 2008 Partager Posté(e) le 14 novembre 2008 Salut Gile,merci pour le code ssocl,Encore quelques demandes si possible :-Choisir eventuellement plusieurs calques au lieu d'un seul-Taper le(s) nom(s) du calque (s) au lieu de sélectionner un objet.-Utilisation de inv_sel après ssocl, le contour est egalement sélectionné, si possible l'extraire.-Faire une autre routine ssexocl (combiner ssocl et inv_sel) pour sélectionner les objets d'un calque à l'extérieur d'un contour objet. Bien sur ça permettra de créer une autre routine ssexoc.J'espère que ça va enrichir tes routines de sélection et servir à plus d'un :)Merci infiniment gile Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 15 novembre 2008 Auteur Partager Posté(e) le 15 novembre 2008 Voilà pour que ssocl (de gile) s'applique à un calque donné, ici CALQTEST (defun c:ssocl (/ fr elst typ ss) (and (sssetfirst nil nil) (setq fr (car (entsel "\nSélectionnez un objet pour la capture: "))) (setq elst (entget fr)) (setq typ (cdr (assoc 0 elst))) (or (= typ "CIRCLE") (and (= typ "ELLIPSE") (= (cdr (assoc 41 elst)) 0.0) (= (cdr (assoc 42 elst)) (* 2 pi)) ) (and (= typ "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 elst)))) ) ) (setq ss (SelByObj fr "Cp" (list (cons 8 "CALQTEST")))) (or (ssdel fr ss) T) (sssetfirst nil ss) ) (princ) ) J'espère ne pas looper quelque choseMaintenant comment faire pour qu'elle s'applique à plusieurs calques? [Edité le 15/11/2008 par marionsname] Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 15 novembre 2008 Partager Posté(e) le 15 novembre 2008 Salut, C'est bien.Si tu veux mettre plusieurs calques, il suffit de mettre les noms dans la chaîne de la paire pointée séparés par une virgule : (cons 8 "Calque1,Calque2,Calque3") Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 15 novembre 2008 Auteur Partager Posté(e) le 15 novembre 2008 Ah, super gile merci,Et pour le faire avec ta routine initiale en sélectionant plusieurs objets?Et comment rajouter le contour pour qu'avec inv_sel il ne soit plus sélectionné. J'ai fait des tests avec ssadd mais j'ai pas réussi.Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 15 novembre 2008 Partager Posté(e) le 15 novembre 2008 Et pour le faire avec ta routine initiale en sélectionant plusieurs objets? Je ne comprends pas bien la demande. Et comment rajouter le contour pour qu'avec inv_sel il ne soit plus sélectionné. J'ai fait des tests avec ssadd mais j'ai pas réussi. En fait il suffit de ne pas le supprimer. Commente (;) ou supprime la ligne : (or (ssdel fr ss) T) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 15 novembre 2008 Auteur Partager Posté(e) le 15 novembre 2008 Je ne comprends pas bien la demande. (setq ent (car (entsel "\nSélectionnez un objet sur le calque: "))) ne permet de sélectionner qu'un seul objet, je veux sélectionner plusieurs qui se trouvent dans des calques différents. En fait il suffit de ne pas le supprimer. Commente ( ou supprime la ligne : ça marche pas, le contour n'est tjs pas sélectionné ;) . je crois qu'il y a quelque chose du coté de SelByObj. [Edité le 15/11/2008 par marionsname] Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 15 novembre 2008 Partager Posté(e) le 15 novembre 2008 ça marche pas, le contour n'est tjs pas sélectionné . je crois qu'il y a quelque chose du coté de SelByObjÇa n'a rien à voir avec SelByObj, avec ssoc "standard" il faut retirer le cadre du jeu de sélection pour qu'il ne soit pas sélectionné d'où le (ssdel ...).Si on supprime cette ligne, il sera sélectionné, donc dé sélectionné avec inv_sel.À ceci près qu'avec le filtre de calque, il n'est plus forcément sélectionné avant l'inversion de la sélection, il faut donc l'ajouter au jeu de sélection au cas où il n'y soit pas pour qu'il ne soit jamais sélectionné après l'inversion. Si j'ai bien compris la demande : (defun c:inv_ssocl (/ fr elst typ ss n ent fltr) (and (or (and (princ "\nSélectionner les objets sur les calques à filtrer." ) (setq ss (ssget)) (setq fltr "") (repeat (setq n (sslength ss)) (setq ent (ssname ss (setq n (1- n))) fltr (strcat fltr (cdr (assoc 8 (entget ent))) ",") ) ) (setq fltr (list (cons 8 fltr))) ) (not (setq fltr nil)) ) (sssetfirst nil nil) (setq fr (car (entsel "\nSélectionnez un objet pour la capture: ")) ) (setq elst (entget fr)) (setq typ (cdr (assoc 0 elst))) (or (= typ "CIRCLE") (and (= typ "ELLIPSE") (= (cdr (assoc 41 elst)) 0.0) (= (cdr (assoc 42 elst)) (* 2 pi)) ) (and (= typ "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 elst)))) ) ) (setq ss (SelByObj fr "Cp" fltr)) (ssadd fr ss) (sssetfirst nil ss) (c:inv_sel) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 16 novembre 2008 Auteur Partager Posté(e) le 16 novembre 2008 Bonjour gile,et merci pour ce code Si j'ai bien compris la demande : Pas tout à fait ça, je me suis pas bien expliqué.Ma demande est de sélectionner les objets d'un calque (ou des calques) donné qui sont entièrement à l'extérieur du contour, soit en choisissant les objets à filtrer soit en tapant les noms des calques (calque1, calque2...). Sélectionner les objets sur les calques à filtrer. Je choisis un cercle bleu et un autre rouge Sélectionnez un objet pour la capture:Je choisis le rectangle et voilà le résultat que je veux avoir http://www.cijoint.fr/cjlink.php?file=cj200811/cij9bQ6cDk.jpg J'espère que vous voyer l'image, moi je ne la vois pasMerci [Edité le 16/11/2008 par marionsname] Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 16 novembre 2008 Partager Posté(e) le 16 novembre 2008 Bonjour à toutes et tous, Lien de l'image de marionsname Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 16 novembre 2008 Auteur Partager Posté(e) le 16 novembre 2008 Merci lili2006,Je ne vois pas pourquoi cette image ne s'affiche pas, j'ai verifié du coté du registre, paramètres de confidentialité, autoriser les cookies, et même rajouter le site ci-joint pour tjs accepter les cookies de ce site, et tjs rien.Est-ce un problème au niveau du site cadxp ou à mon niveau, les images jpeg je les vois bien sur tous les sites, y compris celui de ci-joint. Ça n'a rien à voir avec SelByObj, avec ssoc "standard" il faut retirer le cadre du jeu de sélection pour qu'il ne soit pas sélectionné d'où le (ssdel ...).Si on supprime cette ligne, il sera sélectionné, donc dé sélectionné avec inv_sel. tjs le contour n'est pas sélectionné :casstet: . voilà je l'ai commenté (defun c:ssoclf (/ ent fr elst typ ss) (and (sssetfirst nil nil) (setq fr (car (entsel "\nSélectionnez un objet pour la capture: "))) (setq elst (entget fr)) (setq typ (cdr (assoc 0 elst))) (or (= typ "CIRCLE") (and (= typ "ELLIPSE") (= (cdr (assoc 41 elst)) 0.0) (= (cdr (assoc 42 elst)) (* 2 pi)) ) (and (= typ "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 elst)))) ) ) (setq ss (SelByObj fr "Cp" (list (cons 8 "Calque1,Calque3")))) ;;;(or (ssdel fr ss) T) (sssetfirst nil ss) ) (princ) ) hmmm :question: [Edité le 16/11/2008 par marionsname] Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 16 novembre 2008 Partager Posté(e) le 16 novembre 2008 Salut, C'est donc un peu plus subtil qu'une simple inversion. (defun c:inv_ssocl (/ fr elst typ ss n ent fltr ss1 ss2) (and (sssetfirst nil nil) (or (and (princ "\nSélectionner les objets sur les calques à filtrer." ) (setq ss (ssget)) (setq fltr "") (repeat (setq n (sslength ss)) (setq ent (ssname ss (setq n (1- n))) fltr (strcat fltr (cdr (assoc 8 (entget ent))) ",") ) ) (setq fltr (cons 8 fltr)) ) (not (setq fltr nil)) ) (sssetfirst nil nil) (setq fr (car (entsel "\nSélectionnez un objet pour la capture: ")) ) (setq elst (entget fr)) (setq typ (cdr (assoc 0 elst))) (or (= typ "CIRCLE") (and (= typ "ELLIPSE") (= (cdr (assoc 41 elst)) 0.0) (= (cdr (assoc 42 elst)) (* 2 pi)) ) (and (= typ "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 elst)))) ) ) (setq ss1 (SelByObj fr "Cp" nil)) (ssadd fr ss1) (setq ss2 (ssget "_X" (list '(0 . "~VIEWPORT") (cons 410 (getvar "CTAB")) fltr) ) ) (repeat (setq n (sslength ss1)) (ssdel (ssname ss1 (setq n (1- n))) ss2) T ) (not (sssetfirst)) (sssetfirst nil ss2) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 16 novembre 2008 Auteur Partager Posté(e) le 16 novembre 2008 voilà, c'est ça :) que dire gile t'es joilment sympa.une dernière chose : si je veux avoir le choix entre taper les noms des calques et sélectionner les objets?Sinon si je veux intérger les calques à filter directement dans le lsip à quel niveau je dois intervenir.ici (setq fltr (cons 8 fltr))Une dernière chose et j'ai fini avec ça, si je ne veux appliquer inv_ssocl que sur un jeux de sélection au lieu de l'appliquer à tous les objets du dessin?d'avoir ça CaptureMerci [Edité le 16/11/2008 par marionsname] Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 16 novembre 2008 Auteur Partager Posté(e) le 16 novembre 2008 lili2006,comment faire pour avoir juste un mot (comme lien) au lieu d'avoir toute l'adresse internetMerci Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 16 novembre 2008 Auteur Partager Posté(e) le 16 novembre 2008 J'espère ne pas avoir supprimer de ligne importante, ça marche, mais ta vérification gile est nécessaire. Tjs en attente de la solution du jeu de sélection (defun c:inv_ssocl (/ fr elst typ ss n ent fltr ss1 ss2) (sssetfirst nil nil) (setq fltr (cons 8 "Calque1,Calque2")) (sssetfirst nil nil) (setq fr (car (entsel "\nSélectionnez un objet pour la capture: ")) ) (setq elst (entget fr)) (setq typ (cdr (assoc 0 elst))) (or (= typ "CIRCLE") (and (= typ "ELLIPSE") (= (cdr (assoc 41 elst)) 0.0) (= (cdr (assoc 42 elst)) (* 2 pi)) ) (and (= typ "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 elst)))) ) ) (setq ss1 (SelByObj fr "Cp" nil)) (ssadd fr ss1) (setq ss2 (ssget "_X" (list '(0 . "~VIEWPORT") (cons 410 (getvar "CTAB")) fltr) ) ) (repeat (setq n (sslength ss1)) (ssdel (ssname ss1 (setq n (1- n))) ss2) T ) (not (sssetfirst)) (sssetfirst nil ss2) (princ) ) Je ne sais pas faire pour répondre à ça si je veux avoir le choix entre taper les noms des calques et sélectionner les objets?ni à ça si je ne veux appliquer inv_ssocl que sur un jeux de sélection au lieu de l'appliquer à tous les objets du dessin? Merci [Edité le 16/11/2008 par marionsname] Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 16 novembre 2008 Partager Posté(e) le 16 novembre 2008 Re, marionsname, édite ma réponse pour voir l'écriture (bouton "éditer" en bas à gauche des réponses), Exemple de la réponse N° 8 => [url=http://www.cijoint.fr/cj200811/cij9bQ6cDk.jpg] Lien[/url] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 16 novembre 2008 Auteur Partager Posté(e) le 16 novembre 2008 ok, merci lili2006, c'est fait Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 16 novembre 2008 Partager Posté(e) le 16 novembre 2008 Re, Ta demande est vraiment tordue, pour preuve, tu as du mal à l'exprimer.Elle est aussi très particulière et va à l'inverse de la philosophie des routines de spécial_sélections qui se veulent simples dans leur conception et leur utilisation.Je ne suis pas sûr que le temps qu'elle te fera gagner par rapport à l'utilisation de commandes natives (FILTER ou SELECTRAP) et de la touche MAJ enfoncée (pour supprimer des objets de la sélection) soit beaucoup plus important que le temps que j'ai passé à l'écrire. J'ai commencé, alors je vais essayer de finir, mais je ne pense pas recommencer (defun c:inv_ssocl (/ fr elst typ ss n ent fstr fstr fltr ss1 ss2) (and (or (setq ss2 (cadr (ssgetfirst))) (setq ss2 (ssget "_X" (list '(0 . "~VIEWPORT") (cons 410 (getvar "CTAB"))))) ) (sssetfirst nil nil) (or (and (setq fstr (getstring "\nEntrez les noms de calques (séparés par des virgules) ou : " ) ) (/= "" fstr) (setq flst (str2lst fstr ",")) ) (and (princ "\nSélectionner les objets sur les calques à filtrer." ) (setq ss (ssget)) (repeat (setq n (sslength ss)) (setq ent (ssname ss (setq n (1- n))) flst (cons (cdr (assoc 8 (entget ent))) flst) ) ) ) ) (sssetfirst nil nil) (setq fr (car (entsel "\nSélectionnez un objet pour la capture: ")) ) (setq elst (entget fr)) (setq typ (cdr (assoc 0 elst))) (or (= typ "CIRCLE") (and (= typ "ELLIPSE") (= (cdr (assoc 41 elst)) 0.0) (= (cdr (assoc 42 elst)) (* 2 pi)) ) (and (= typ "LWPOLYLINE") (= 1 (logand 1 (cdr (assoc 70 elst)))) ) ) (setq ss1 (SelByObj fr "Cp" nil)) (ssadd fr ss1) (setq n 0) (or (not flst) (while (setq ent (ssname ss2 n)) (if (member (cdr (assoc 8 (entget ent))) flst) (setq n (1+ n)) (ssdel ent ss2) ) ) T ) (repeat (setq n (sslength ss1)) (ssdel (ssname ss1 (setq n (1- n))) ss2) T ) (sssetfirst nil ss2) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 16 novembre 2008 Partager Posté(e) le 16 novembre 2008 Elle est aussi très particulière et va à l'inverse de la philosophie des routines J'ai essayé de lui faire comprendre que sa demande était très spécifique dans un autre sujet.Mais il est resté persuadé que sa demande pourrait servir à d'autre... :casstet: Il a le mérite d'être têtu et d'essayer de résoudre son problème en mettant les mains dans le cambouis, mais il est vite bloqué et relance facilement... :exclam: J'ai commencé, alors je vais essayer de finir, mais je ne pense pas recommencer Oh comme je te comprends... ;) Pour résumer son problème... La décomposition des hachures créé par les Superhachures des express lui pose problème. Ceux qui utilise ce mode hachurage ne cherchent pas forcément à les exploser :casstet: Pour exporter dans corel draw utiliser le modèle de hachures que je lui ai proposé à mon avis aurait suffit (il faut vraiment zoomer très fort pour voir les défaut si snapbase est bien défini pour v2000) car à l'impression rien ne se serait vu. Il préfère une solution complexe .... :P [Edité le 16/11/2008 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 16 novembre 2008 Partager Posté(e) le 16 novembre 2008 marionsname Je reviens à ton problème de départ, si c'est bien celui-ci que tu essayes de résoudre. Est ce que ce mode opératoire ne serait pas mieux? Tu ne décompose pas tes superhachuresTu crée un traceur DXBTu fais une sortie (sur fichier) de ton dessin contenant tes super hachures.Tu ouvre un nouveau dessin et tu importe ta sortie avec la commande "_DXBIN" Tu auras ton dessin avec tes hachures décomposées ET parfaitement ajustées Le seul inconvénient et que tout se retrouve sur un calque unique, mais pour faire un export vers un autre logiciel cela n'est pas être pas gênant. L'avantage ! Ton fichier DWG original conserve les superhachures intacte. Désolé, si çà convient, de ne pas y avoir songé plus tôt Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 16 novembre 2008 Auteur Partager Posté(e) le 16 novembre 2008 J'ai commencé, alors je vais essayer de finir, mais je ne pense pas recommencer Ok, merci beaucoup gile :) . Je crois que j'ai pas le choix là, je vais devoir arrêter et me contenter de ça ici. En tous cas j'ai appris pas mal de choses ces derniers jours. J'ai essayé de lui faire comprendre que sa demande était très spécifique dans un autre sujet.Mais il est resté persuadé que sa demande pourrait servir à d'autre... Le problème n'est pas essentiellement là. En parcourant ce forum, oh! combien de demandes spécifiques. Il a le mérite d'être têtu et d'essayer de résoudre son problème en mettant les mains dans le cambouis, mais il est vite bloqué et relance facilement... mettre la main dans la patte pour apprendre n'a jamais été reprochable , encore moins avoir des lacunes en cours de route :casstet: . J'aurais plutot parler à la troisième personne dans un message privé :cool: . Il préfère une solution complexe .... c'est un point de vue Tu ne décompose pas tes superhachuresTu crée un traceur DXBTu fais une sortie (sur fichier) de ton dessin contenant tes super hachures.Tu ouvre un nouveau dessin et tu importe ta sortie avec la commande "_DXBIN"Tu auras ton dessin avec tes hachures décomposées ET parfaitement ajustées Merci beaucoup Bonuscad, t'a été très sympat, je vais tester ça plutard. Toutes mes excuses, sincèrement toutes mes excuses à toi et à gile. A bientot [Edité le 16/11/2008 par marionsname] Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 16 novembre 2008 Partager Posté(e) le 16 novembre 2008 Le problème n'est pas essentiellement là. En parcourant ce forum, oh! combien de demandes spécifiques. Je reconnais que tu n'as pas tort... mettre la main dans la patte pour apprendre n'a jamais été reprochable Tout à fait et je t'en félicite. encore moins avoir des lacunes en cours de route Disons que tu t'es engagé dans une voie assez complexe qui nécessite de pas avoir trop de lacunes pour pouvoir avancer. j'aurais plutot parler à la troisième personne dans un message privé Tu as peut être raison, je ne voulais pas te froisser , excuse moi ! Des fois je manque un peu de tact :( Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
marionsname Posté(e) le 16 novembre 2008 Auteur Partager Posté(e) le 16 novembre 2008 Pas de problème Bonuscad,et merci beaucoup pour ton aide :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
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