Aller au contenu

Fenetre fantome


Messages recommandés

Posté(e)

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 calque

elle n'est meme pas délimitée!

elle semble correspondre a la vue dans l'espace papier...

je suis sur autocad 2010

Peut etre connaisser vous le moyen d'ignorer cette fenetre sans ignorer les fenetres "normale".?

 

passe sur d'etre clair

 

Merci

 

 

 

 

Posté(e)

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

Posté(e)

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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

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

Posté(e)

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 nickel

je cherche a savoir comment sa marche

 

length : le nombre d'éléments contenus dans une liste

sslength : 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 ?

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

(if (

(sslength (setq ss (ssget "_X" '((8 . "0")))))

 

Sa marche nickel

je cherche a savoir comment sa marche

 

length : le nombre d'éléments contenus dans une liste

sslength : 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

Posté(e)

Bonjour

 

Juste une précision.

Dans Autocad, le calque 0 est impurgeable

 

Extrait de l'aide

Vous 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 Patrick

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

Joseph Joubert, 1754-1824

Posté(e)

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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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?

 

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

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é