sechanbask Posté(e) le 28 novembre 2007 Posté(e) le 28 novembre 2007 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 compteje 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
(gile) Posté(e) le 12 décembre 2007 Posté(e) le 12 décembre 2007 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
sechanbask Posté(e) le 13 décembre 2007 Auteur Posté(e) le 13 décembre 2007 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
(gile) Posté(e) le 13 décembre 2007 Posté(e) le 13 décembre 2007 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
(gile) Posté(e) le 13 décembre 2007 Posté(e) le 13 décembre 2007 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
Patrick_35 Posté(e) le 14 décembre 2007 Posté(e) le 14 décembre 2007 Salut (gile) Ton premier code fonctionne parfaitement sur ma A2006 @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
sechanbask Posté(e) le 14 décembre 2007 Auteur Posté(e) le 14 décembre 2007 ç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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
(gile) Posté(e) le 15 décembre 2007 Posté(e) le 15 décembre 2007 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
lecrabe Posté(e) le 15 décembre 2007 Posté(e) le 15 décembre 2007 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
sechanbask Posté(e) le 2 janvier 2008 Auteur Posté(e) le 2 janvier 2008 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
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