Aller au contenu

Lisp comme express : ATTSYNC


Messages recommandés

Posté(e)

je recherche une commande en lisp pour faire la même chose que attsync (des express) mais de manière plus argumenté :

 

je souhaite que l'objet sélectionné avant le lancement de la commande soit pris en compte

je souhaite que la synchronisation ce fasse directement près ça

 

et si l'objet n'est pas sélectionné avec le lancement de la commande,

demander sa sélection et une fois fait, le synchroniser directement...

 

Merci pour votre aide

 

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

  • 2 semaines après...
Posté(e)

Salut,

 

Je n'avais pas vu passer le sujet.

 

Le LISP suivant fonctionne aussi en "sélection nom verbe", la commande peut donc être ajoutée au menu contextuel "des objet du bloc d'attributs".

 

(defun c:syncatt (/ ss bl)
 (if (or
(and
  (setq ss (cadr (ssgetfirst)))
  (= 1 (sslength ss))
  (setq bl (entget (ssname ss 0)))
  (= (cdr (assoc 0 bl)) "INSERT")
  (= 1 (logand 1 (cdr (assoc 66 bl))))
)
(and
  (or (sssetfirst nil nil) T)
  (setq ss (ssget "_:S:E" '((0 . "INSERT") (66 . 1))))
  (setq bl (entget (ssname ss 0)))
)
     )
   (vl-cmdf "_.attsync" "_n" (cdr (assoc 2 bl)))
 )
 (princ)
) 

[Edité le 12/12/2007 par (gile)]

 

[Edité le 15/12/2007 par (gile)]

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

Posté(e)

je ne comprends pas ça ne fonctionne pas.

 

si je sélectionne mon bloc avant j'obtiens l'ereur suivante :

 

"; erreur: une erreur est survenue dans la fonction *erreur*paramètre de la

variable AutoCAD rejeté: "OSMODE" nil"

 

si je lance le commande et que je choisi mon bloc après. Rien ne se passe...

 

bizarre, non ?

 

j'ai une version 2006 full...

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Salut,

 

Je ne comprends vraiment pas la première erreur, et je vois mal comment elle peut venir de ce LISP qui n'a pas de redéfinition de la fonction *error* ni ne joue avec OSMODE.

 

Mais je réalise que tu utilises AutoCAD 2006, dans cette version, attsync est-elle toujours une fonction des Express Tools ou est-ce déjà devenu un commande intégrée à AutoCAD (comme en 2007) ?

Le LISP que j'ai donné fonctionne avec la commande intégrée, pas avec un une commande Express Tools.

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

Posté(e)

J'ai essayé de faire quelque chose de plus polyvalent (en ce qui concerne les versions)

 

Edit : correction d'un dysfonctionnement avec la justification des attributs.

 

(defun c:syncatt (/ ss bl name attdefs def)
 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )
 (if
   (or
     (and
(setq ss (cadr (ssgetfirst)))
(= 1 (sslength ss))
(setq bl (vlax-ename->vla-object (ssname ss 0)))
(= (vla-get-ObjectName bl) "AcDbBlockReference")
(= (vla-get-HasAttributes bl) :vlax-true)
     )
     (and
(or (sssetfirst nil nil) T)
(setq ss (ssget "_:S:E" '((0 . "INSERT") (66 . 1))))
(setq bl (vlax-ename->vla-object (ssname ss 0)))
     )
   )
    (progn
      (vla-StartUndoMark *acdoc*)
      (setq name (vla-get-Name bl))
      (vlax-for ob (vla-item (vla-get-Blocks *acdoc*) name)
 (if (= (vla-get-objectname ob) "AcDbAttributeDefinition")
   (setq attdefs (cons (cons (vla-get-TagString ob) ob) attdefs))
 )
      )
      (setq ss (ssget "_X" (list '(0 . "INSERT") '(66 . 1) (cons 2 name))))
      (vlax-for ref (vla-get-ActiveSelectionSet *acdoc*)
 (foreach a (vlax-invoke ref 'GetAttributes)
   (setq def (cdr (assoc (vla-get-TagString a) attdefs)))
   (foreach prop '(Alignment	 Backward      Color
		   Height	 Invisible     Layer
		   Linetype	 LinetypeScale Lineweight
		   Material	 Normal	       ObliqueAngle
		   Thickness	 TrueColor     UpsideDown
		   Visible
		  )
     (if (vlax-property-available-p def prop)
       (vlax-put a prop (vlax-get def prop))
     )
   )
   (vlax-put a
	     'InsertionPoint
	     (mapcar '+
		     (vlax-get ref 'InsertionPoint)
		     (vlax-get def 'InsertionPoint)
	     )
   )
   (if (not
	 (equal (vlax-get def 'TextAlignmentPoint) '(0.0 0.0 0.0))
       )
     (vlax-put a
	       'TextAlignmentPoint
	       (mapcar '+
		       (vlax-get ref 'InsertionPoint)
		       (vlax-get def 'TextAlignmentPoint)
	       )
     )
   )
 )
      )
      (vla-EndUndoMark *acdoc*)
    )
 )
 (princ)
) 

[Edité le 13/12/2007 par (gile)]

 

[Edité le 15/12/2007 par (gile)]

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

Posté(e)

ça doit venir de ce pu*** de fisacad de m****... je testerai ça lundi en n'ouvrant qu'autocad...

 

 

P.S. s'il me reste du temps avant d'être retraité, je ferais en sorte de ne plus avoir à utiliser les prologiciels vendus au prix d'une barre en or et qui ne valent pas une barre de chocolat...

 

 

Par avance, je m'excuse auprès des amoureux du chocolat.

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Patrick_35,

 

Merci pour le test.

 

 

 

sechanbask,

 

Puisqu'il fonctionne sur 2006, préfère le premier code qui utilise la commande ATTSYNC native.

 

Avec le second, j'ai essayé de reproduire le même fonctionnement sans utiliser la commande, mais je dois avouer ne pas avoir eu le courrage de tester toutes les propriétés des attributs. Théoriquement, il doit fonctionner.

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

Posté(e)

 

Hello

 

Le Crabe Decapodique qui "adore" le chocolat accepte

avec un très grand plaisir toutes vos excuses chocolatesques ! :) :D :cool:

 

D'ailleurs je vais en grignoter un peu à la santé de

Gilles, Patrick_35, Bonuscad, Sechanbask, etc ...

 

Joyeux Noël et Bonne Année 2008 à tous :P

Le Decapode

 

Autodesk Expert Elite Team

  • 3 semaines après...
Posté(e)

merci pour tout le premier code fonctionne à merveille, je ne sais pas pourquoi au début il ne voulait pas fonctionner... sujet résolu

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

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é