Aller au contenu

lisp VERR/UNVERR


philsogood

Messages recommandés

hello

j'avais déjà remarqué la chose mais là c'est flagrant

j'ai un fichier avec un seul EP qui a 3 fenètres (j'ai vérifié en faisant une sélection rapide)

or quand je verrouille/déverrouille les fenètres AutoCAD me fige/libère 4 fenètres...

mais je n'en ai que 3!!

à quoi est dû ce prodige?

Phil

Bon week end

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Chaque espace papier a sa propre fenêtre. C'est la première entité créée dans le 'bloc' de l'espace papier. Elle a l'ID = 1 (numéro de la fenêtre : CVPORT = 1 quand on est dans l'espace papier).

 

Dans ton dessin, si tu fais :

(sslength (ssget "_X" '((0 . "VIEWPORT"))))

tu auras 4 comme résultat alors qu'il n'y a que 3 fenêtres multiples.

Le code DXF correspondant à l'ID de la fenêtre est 69, donc pour ne sélectionner que les fenêtre flottantes il faut écarter celle dont le groue 69 = 1.

Dans ton dessin,

(sslength (ssget "_X" '((0 . "VIEWPORT") (-4 . "/=") (69 . 1))))

devrait retourner 3.

 

Pour retrouver la fenêtre d'une présentation (disons "Présentation1") avec AutoLISP il faut dabord récupérer l'objet LAYOUT correspondant à la présentation. ces objets sont stockés dans le dictionnaire ACAD_LAYOUT, lui même stocké dans le dictionaire racine des dictionnaires nommés.

;; récupérer le dictionnaire ACAD_LAYOUT
(setq layoutDict (dictsearch (namedobjdict) "ACAD_LAYOUT"))

Dans la liste DXF retournée par dictsearch on peut voir, pour chaque présentation, deux entrées :

(3 . "NomDeLaPresentation") (350 . )

On utilise ce pointeur pour récupérer le nom d'entité de la présentation

;; récupérer l'entrée "Présentation1" dans ce dictionnaire
(setq layout (cdr (assoc 350 (member '(3 . "Présentation1") layoutDict))))

 

La liste DXF de chaque objet LAYOUT, contient un pointeur vers la fenêtre de la présentation (code 331).

;; récupérer la fenêtre de la présentation
(setq viewport (cdr (assoc 331 (entget layout))))

Si on inspecte la liste DXF de viewport (entget viewport), on verra que c'est bient un objet VIEWPORT et que son ID (groupe 69) est bien 1.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

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é