Aller au contenu

[résolu] Lisp inverser Association/superposition


Messages recommandés

Posté(e)

Hello,

Sur Autocad 2013, il n'est pas possible d'inverser par paquet le type d'attachement de plusieurs XREF (Association/Superposition).

 

Il me semble avoir vu un sujet là-dessus en passant par un lisp. Mais impossible de remettre la main dessus.

Quelqu'un aurait-il ça dans ça besace?

 

Et sauf erreur de ma part, ce n'est pas possible via le gestionnaire de références.

 

A plus

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Posté(e)

Hello,

Sur Autocad 2013, il n'est pas possible d'inverser par paquet le type d'attachement de plusieurs XREF (Association/Superposition).

 

Il me semble avoir vu un sujet là-dessus en passant par un lisp. Mais impossible de remettre la main dessus.

Quelqu'un aurait-il ça dans ça besace?

 

Et sauf erreur de ma part, ce n'est pas possible via le gestionnaire de références.

 

A plus

Salut,

tu as raison c'est possible avec la 2015, mais pas avec la 2013:

suaf en utilisant le lisp pour mac setpropertyvalue

ci dessous un exemple pour les mettre en superposition:

a+

gégé

 

; ****************************************************************************
;;§/xref/change toutes les xref de type overlay /none

(defun c:MakeAllXrefOverlay (  / nom   blocks  sel lsel   eblockref oblock flags )
 (setq sel (pw_SsgetX_Xref))
 (foreach eblockref (pw_listsel sel)
 (setq oblock (pw_retoBlock eblockref))
 (if (= :vlax-true (vla-get-isxref oblock))
   (progn
     (setq eblock (pw_to_ename oblock))
     (setq egBlock (entget eblock))
     (setq Flags (cdr (assoc 70 egBlock)))
     
    (if	(= (boole 1 Flags 8) 8)		; that means that this block in an overlay xref
      (prompt "\nAllready Overlay xref")
      (setpropertyvalue eblock "IsFromOverlayReference" 1)
    )
   )
   	      (prompt "\nNot an xref")

 )
   )
)

; ****************************************************************************
;;§/xref/Liste toutes les xrefs de type Attached  /none

(defun c:ListAllXrefAttached (  /   nom  blocks  sel lsel   eblockref oblock flags )
 (setq sel (pw_SsgetX_Xref))
 (foreach eblockref (pw_listsel sel)
 (setq oblock (pw_retoBlock eblockref))
 (if (= :vlax-true (vla-get-isxref oblock))
   (progn
     (setq nom (vla-get-name oblock))
     (setq eblock (pw_to_ename oblock))
     (setq egBlock (entget eblock))
     (setq Flags (cdr (assoc 70 egBlock)))
     
    (if	(= (boole 1 Flags 8) 8)		; that means that this block in an overlay xref
      ;(prompt "\nAllready Overlay xref")
      nil
      (prompt (strcat  "\nAttached : " nom))

      ;
    )
   )
   	      (prompt "\nNot an xref")

 )
   )
)

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

salut

excuse moi mais il faut PowerClic pour que ça marche.

PowerClic

maintenant, cette routine est une vilaine adaptation d'une tentative précédent qui ne marchait pas avec les commandes vlisp classiques.

il faut que je prenne le temps de trouver un logique plus simple, car la je crois que je part d'une occurence de xref pour aller trouver sa définition.

(c'était pour pouvoir le faire par pointage)

j’essaie de voir ça cet AM

Gégé

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e) (modifié)

Salut

 

Tu as un lisp ici

 

Edit : un double clic sur le type dans la boite de dialogue des xrefs fait permuter association/superposition

 

@+

Modifié par Patrick_35

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)

Salut,

ça doit mieux marcher ...

a+

gégé

; *****************************************************************************
;§/dxf/ change toutes les xref pour qu'elle soient de type superposition /none

(defun pw_makeAllOverlayReference2 (  / blk each  )

(setq blk (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))))
(vlax-for each blk
  (if (= :vlax-true (vla-get-isxref each))
      (setpropertyvalue (vlax-vla-object->ename each) "IsFromOverlayReference" 1)
   
     )
)
)

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Hello,

Gégé, le bout de code ne marche pas :huh:

Patrick, malgrès une erreur à la fin, le lisp de ton lien fonctionne bien.

 

Merci

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Posté(e)

salut,

Hello,

Gégé, le bout de code ne marche pas :huh:

Merci

le code ne marche que dans un sens, pour rendre superposition

pour faire l'inverse, il faut faire :

(setpropertyvalue (vlax-vla-object->ename each) "IsFromOverlayReference" 0)

autre chose, dans le gestionnaire d'xref, il faut faire une rafraichissement, sinon on ne voit pas les modfications

si tu as le temps de retester,

j'aimerai donc bien savoir ce qui ne marche pas ?

Gégé

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

salut,

 

le code ne marche que dans un sens, pour rendre superposition

pour faire l'inverse, il faut faire :

(setpropertyvalue (vlax-vla-object->ename each) "IsFromOverlayReference" 0)

autre chose, dans le gestionnaire d'xref, il faut faire une rafraichissement, sinon on ne voit pas les modfications

si tu as le temps de retester,

j'aimerai donc bien savoir ce qui ne marche pas ?

Gégé

Bonjour,

 

Pour moi cela fonctionne sans problème dans les 2 sens, je l'ai juste modifié pour qu'il soit plus pratique d'utilisation...

(defun c:XRef2Ass_Sup (  / blk each key)
(initget "Association Superposition")
(setq key (getkword "\nStatut [Association/Superposition]? <Superposition>: "))
(if (eq key "Association") (setq key 0) (setq key 1))
(setq blk (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object))))
(vlax-for each blk
  (if (= :vlax-true (vla-get-isxref each))
      (setpropertyvalue (vlax-vla-object->ename each) "IsFromOverlayReference" key)
     )
)
)

Par contre le lien donné par Patrick_35 ne fonctionne pas pour moi:

; erreur: Erreur Automation Clé dupliquée

J'ai identifier le problème, mais je ne sais pas le corriger: c'est la ligne

(vla-detach BlockDef)

qui me génère cette erreur.

Edit : un double clic sur le type dans la boite de dialogue des xrefs fait permuter association/superposition

Merci, je n'avais jamais remarqué cette fonctionnalité.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

salut,

Bonjour,

Pour moi cela fonctionne sans problème dans les 2 sens, je l'ai juste modifié pour qu'il soit plus pratique d'utilisation...

merci Bonuscad d'avoir terminé le boulot,

c'est bien plus clair et pratique comme ça !

c'est vrai que le sujet est dans "routine lisp", j'aurais pas du répondre de cette manière,

et proposer une commande aboutie ...

a+

gégé

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Merci à vous. Ca marche.

Gégé quand tu dis:

autre chose, dans le gestionnaire d'xref, il faut faire une rafraichissement, sinon on ne voit pas les modfications

Comment fais-tu un rafraichissement?

Le seul moyen que j'ai trouvé, c'est de fermer et de réouvrir le fichier, ou d'insérer une nouvelle xref. Fermer et ré-ouvrir la palette ne suffit pas.

 

Sinon nickel...

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Posté(e)
Comment fais-tu un rafraichissement?

Tu as le bouton "Actualiser" (2 flèches vertes enroulées) dans la palettes des Xrefs

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é