Fraid Posté(e) le 6 septembre 2010 Posté(e) le 6 septembre 2010 Bonjour, J'utilise ce bout de code (if (setq ss (ssget "_X" '((8 . "0")))) ((alert "Le calque 0 n'est pas vide!!!") (sssetfirst nil ss)) ) pour verifier que le calque zero est bien vide mais il me selectionne une fenetre dans l'espace papier qui ne devrais pas existée et impossible à supprimer. :casstet: ni la changer de calqueelle n'est meme pas délimitée!elle semble correspondre a la vue dans l'espace papier...je suis sur autocad 2010Peut etre connaisser vous le moyen d'ignorer cette fenetre sans ignorer les fenetres "normale".? passe sur d'etre clair Merci https://github.com/Fraiddd
kekseksa Posté(e) le 6 septembre 2010 Posté(e) le 6 septembre 2010 bonjour que veux tu faire?et ou? (espace objet, papier ou les deux) à ce que j'ai compris, tu rajoutes dans ta selection (410 . "model")et tu auras les objets du calque 0 et dans l'espace objet
Bred Posté(e) le 6 septembre 2010 Posté(e) le 6 septembre 2010 Salut,il me selectionne une fenetre dans l'espace papier qui ne devrais pas existée et impossible à supprimer.Je ne pense pas dire de bétise à te signalant que l'EP est une fenêtre !Donc tu ne peux pas la supprimer.Mais de mémoire elle a un nom bien spécifique, tu peux donc la filter (désolé, mais je n'ai pas trop le temps de chercher le nom là...) [Edité le 6/9/2010 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Tramber Posté(e) le 6 septembre 2010 Posté(e) le 6 septembre 2010 Exact ! (ssget "_X" '((8 . "0")(-4 . ""))) Ignoreras toutes les fenêtres. Mais j'avoue ignorer si l'espace papier lui-même peut se filtrer. J'ai regardé vite fait et rien ne le distingue que son ordre d'apparition ou des infos plus "profondes". Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 6 septembre 2010 Posté(e) le 6 septembre 2010 Salut, Tu peux comparer la 'longueur' de ton jeu de sélection avec le nombre de présentations ('longueur' de (layoutlist)) (if ( (sslength (setq ss (ssget "_X" '((8 . "0"))))) ) (progn (alert "Le calque 0 n'est pas vide!!!") (sssetfirst nil ss) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 6 septembre 2010 Posté(e) le 6 septembre 2010 J'ai regardé vite fait et rien ne le distingue que son ordre d'apparition ou des infos plus "profondes".Oui, c'est vrais, je m'en rappel !En fait je crois que je faisais un test avec les fonctions "(vl-catch-all*** Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Fraid Posté(e) le 6 septembre 2010 Auteur Posté(e) le 6 septembre 2010 Merci (ssget "_X" '((8 . "0")(-4 . ""))) J'avais déjà vu le code de groupe -4 : APP : opérateur conditionnel (utilisé uniquement avec ssget)Mais jamais je n'ai trouvé d'explication pour le metre en oeuvre.Existe t'elle (meme en anglais) dans le developper's guide? (if (< (length (layoutlist)) (sslength (setq ss (ssget "_X" '((8 . "0"))))) Sa marche nickelje cherche a savoir comment sa marche length : le nombre d'éléments contenus dans une listesslength : Rend un nombre entier contenant le nombre d'objets (les entités) dans un jeu de sélection j'arrive pas a comprendre comment la dite fenetre est supprimée de la selection :P Puisque sslength va nous donner le nombre d'objet dans le calque zero... Peut tu m'en dire un petit peu plus ? https://github.com/Fraiddd
Tramber Posté(e) le 6 septembre 2010 Posté(e) le 6 septembre 2010 En fait je crois que je faisais un test avec les fonctions "(vl-catch-all*** Sans doute un "effacer" alors puisque cela m"apparait impossible, ca va donc bien dérrière un catch-all. Mais il doit y avoir un autre moyen. Fraid, le filtre se lit tout seul. Comme du HTML !Entre les balises le DXF que tu ne veux pas. Enfantin. En plus, si t'as fait un peu d'anglais... :cool: Pour le code de (gile) :(if( Mais Fraid, tu veux faire quoi ? Parce que ton truc est juste un petit peu particulier. Si tu basculais en TILEMODE à 1. Tu ne serais pas plus heureux de ne pas te soucier des fenêtres ?Pour faire propre, tu peux partir de l'espace objet, aller sur chaque présentation et faire un traitement CHPROP de chaque ensemble de fenêtres vers un autre calque. Provisoirement.Ca dépend.Et puis, la commande effacer est insensible à l'effacement de cette part de ss. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 6 septembre 2010 Posté(e) le 6 septembre 2010 (if ( (sslength (setq ss (ssget "_X" '((8 . "0"))))) Sa marche nickelje cherche a savoir comment sa marche length : le nombre d'éléments contenus dans une listesslength : Rend un nombre entier contenant le nombre d'objets (les entités) dans un jeu de sélection j'arrive pas a comprendre comment la dite fenetre est supprimée de la selection :P Puisque sslength va nous donner le nombre d'objet dans le calque zero... Peut tu m'en dire un petit peu plus ? Les fenêtres espace papier ne sont pas supprimées du jeu de sélection. (length (layoutlist)) retourne le nombre d'onglet de présentation, (sslength (setq ss (ssget "_X" '((8 . "0"))))) retourne le nombre d'objet contenus dans ss (qui est initialisé dans la foulée)Comme chaque présentation a une 'fenêtre' sur le calque "0" si le nombre d'objets sélectionnés est supérieur au nombre de présentations c'est qu'il y a d'autres objets sur le calque "0", il sont alors sélectionnés/gripés. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 7 septembre 2010 Posté(e) le 7 septembre 2010 Bonjour Juste une précision.Dans Autocad, le calque 0 est impurgeable Extrait de l'aideVous ne pouvez supprimer que des calques non référencés. Les calques référencés comprennent les calques 0 et DEFPOINTS @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
RhymOne Posté(e) le 7 septembre 2010 Posté(e) le 7 septembre 2010 Bonjour,Un petit commentaire.Avec covadis si on supprime le calque 0:erreur fatale.Avec nova: pareil.Et en lisp je pense comme patrick_35(trés matinale)...Il semble impossible de purger ou supprimer les objets du calque. Vous confirmé? DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg
Fraid Posté(e) le 7 septembre 2010 Auteur Posté(e) le 7 septembre 2010 Bonjour, Mon intention n'est absolument pas de supprimer le calque zero, mais de vérifier qu'il ne contient aucun objet. Cela fait partis des régles de nombreuses chartes graphiques. Il n'est utilisé que par les objets placés dans les blocs. Sinon merci Gile pour tes explications.Je comprend mieux pourquoi je ne comprenais pas. le filtre se lit tout seul. Comme du HTML !Entre les balises le DXF que tu ne veux pas. Enfantin Bahhh... C'est bien que tu trouve cela enfantin, mais cela me dit pas ou trouver de la doc a se sujet. Quel sont les autres operateurs possible par exemple? https://github.com/Fraiddd
Tramber Posté(e) le 7 septembre 2010 Posté(e) le 7 septembre 2010 La doc ? Tapes F1 sur SSGET et tu vas logiquement te balader jusqu'à "Logical Grouping of Filter Tests" grâce aux liens hypertextes. Une fois que tu auras vu un peu la galère dans cette aide, tu chercheras (ssget "_X" '(( dans les forums, par exemple !!! Non je veux dire enfantin de lire mon code publié, non ? Un truc entre 2 balises NOT ?Désolé. Moi j'ai proposé que tu ne t'occupes pas des fenêtres.Je pense que LA question est : ca dérange s'il y a des fenêtres en calque "0" ? Mais tu n'as pas répondu.Si oui : alors (command "_erase" ss "") sur chaque bascule en EP [pour cela tu as besoin d'aide ?], ca ne craint pas si ss contient la fameuse fenêtre fantome. Tu peux aussi actionner CHPROP.Si non : alors tu les exclues avec le NOT. Et puis c'est tout. Si tu ne passes pas par command pour tout effacer, là, il faudra peut-être un catch-error mais nous devons d'abord débuter. C'est un sujet qui se trouve juste un peu pointu. Mais quand (gile) compte les espaces papiers (qui doivent être vierges de fenêtres mais en contienne une fantome), il résoud la question dès le début. Ma proposition plus haut vaut pour l'action si le test montre qu'il y a des fenêtres et que ca embête qu'elles soient sur "0". [Edité le 7/9/2010 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Fraid Posté(e) le 7 septembre 2010 Auteur Posté(e) le 7 septembre 2010 Merci Tramber Je cherchais autour du code dxf et pas autour de ssget Et non, les fenetres ne doivent pas etre dans le zero, mais dans un calque bien precis(client tres pointilleux car les plans sont regroupés dans un SIG) C'est comme sa que je me retrouve a lisper pour evité de perdre des heures en vérification.Car on a beau avoir des gabarits (qu'on améliore sans cesse), les cauneries sont vite faites... Mes lisp tienne plus de la macro, c'est d'ailleurs pour cela que votre aide est précieuse dés que cela se complique... Merci a tous a bientot https://github.com/Fraiddd
Tramber Posté(e) le 7 septembre 2010 Posté(e) le 7 septembre 2010 Alors profite de la fonction introduite plus haut et fais : (foreach p (layoutlist) (command "presentation" "etablir" p) (princ (strcat"action sur" p)) ) Au lieu de princ action, fais donc la manip(setq ss(ssget "_X" '((8 . "0") (0 . "VIEWPORT") )))et traite le jeu de selection ss avec la commande CHPROP. Il sera facile de changer le calque des fenêtre y compris la fantome dont on se fiche puiqu'elle est insensible au traitement. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 7 septembre 2010 Posté(e) le 7 septembre 2010 Re, Sinon, pour écarter les 'fenêtres Espace Objet' du jeu de sélection, on peut se servir de l'ID de la fenêtre : le groupe DXF 69 (qui correspond à la valeur de CVPORT). (ssget "_X" '((8 . "0") (-4 . "") (-4 . "NOT>"))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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