tyrese69_ Posté(e) le 24 novembre 2004 Posté(e) le 24 novembre 2004 Bonsoir,(vlax-get-property item 'Name) donne la valeur du noms d'une référence externe. Mais comment avoir le noms du fichier, plutôt que le noms de la ref externe ? Daniel
bonuscad Posté(e) le 25 novembre 2004 Posté(e) le 25 novembre 2004 Salut, Une ligne de code de ce style pourrait faire l'affaire: (cdr (assoc 1 (tblsearch "BLOCK" (vlax-get-property (vlax-ename->vla-object (car (entsel))) 'Name)))) Bruno V. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 25 novembre 2004 Posté(e) le 25 novembre 2004 Tiens tyrese69_, le retour sur les xrefsJe tiens à te féliciter de ta courtoisie sur ce sujet. Tu ferais bien de t’inspirer de celui-ciJe ne te salue pas Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 25 novembre 2004 Posté(e) le 25 novembre 2004 Je m'inscris en faux, Patrick que je respecte, même si je suis très jaloux car je suis un enfant de la côte d'opale et que je meurs en Alsace de ne pas voir la mer. tyrese69_ a été très courtois tout au long du fil, sauf, et là c'est vrai à ne pas avoir conclu le message. Un petit MP ou mieux une confirmation que ca marche (ou qu'on a laissé tombé ) est quand même pas mal.Je connais un forum surlequel on se fait "tuer" si on ne met pas [résolu] en édition du titre du fil, mais c'est certainement compliqué à mette en place. Dans ce message, c'est une autre approche sur le problème ca mérite un nouveau sujet, ca se discute moins. Bref, je m'excuse de m'imisser mais y a (largement) pire :P (gros mots, SMS, manque de concentration sur la question...) Sinon, Bonus a bien fait de nous rappeler que les X-refs se trouvent dans la table des blocs. [Edité le 25/11/2004 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
tyrese69_ Posté(e) le 25 novembre 2004 Auteur Posté(e) le 25 novembre 2004 Bonjour à tous et plus particulièrement à Patrick_35 Je suis désolé de n'avoir pas remercier Patrick_35 pour l'aide qu'il m'a apporté ! Je ne suis pas du genre à ne pas donner de nouvelles sur des points quipeuvent être profitables à la communauté ! Un peut de surcharge ces derniers jours (une charette comme l'on connait en BE !)ne m'a pas encore permis de tester tout le travail qu'il a bien aimablement fourni ! Je donnerais des nouvelles, tous mes essais accomplis, ou je demanderais plus d'infos si cela est nécessaire. Etant un débutant en lisp et Vlisp j'ai un peut de mal à assimiler ou simplement à essayer les différents points communiqués ! Mais d'avance je tiens à remercier Patrick_35 pour son aide présente et à venircar je ne pense pas que l'on vienne sur un tel forum sans avoir une ame de bonsamaritain ! Patrick_35, au travers des différents fils que j'ai pu lire sur d'autres sujets, je mesuretoute l'aide et l'expérience que tu as dans un dommaine que je souhaite mieux connaitreet j'espère que mes plates excuses suffirons à pardonner ma froideur involontaire ! Merci à Tramber pour son intervention et que je regrette de ne pas avoir saluer à Paris à Invivo, alors que je l'ai fais pour Patrick E.La encore ces forums sont une fenêtre ouverte vers une forme de communication aveugle,pas toujours évidente à maitriser ! Malgré tout, Patrick_35 je te salue et j'espère m'être fait pardonner !
Tramber Posté(e) le 25 novembre 2004 Posté(e) le 25 novembre 2004 http://www.cadxp.com/images/avatar/salutations.gif Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
tyrese69_ Posté(e) le 25 novembre 2004 Auteur Posté(e) le 25 novembre 2004 Re bonjour,Pour rendre à César ce qui lui reviens, l'extrait du code proviens d'une copied'un code issu du site Afralisp forum code66 html si ma mémoire est bonne ! Mais le source qui m'a été donner avait été épurer de toute origine et commentaires !Pratique également peut simpathique ! J'explique ma démarche. Des fichiers provenant d'une appli externe à Autocad, écrite en Delphi, envoie viale net des fichiers de plans, de divers intervenants d'un projet (armoire à plans). Selon les méthodes de travail des différents projeteurs, les noms des xrefscorrespondent au noms des fichiers eux même ou bien sont renomés.C'est dans ce dernier cas qu'il est nécessaire d'avoir un lisp modifié commesouhaité pour pouvoir recharger les xrefs de façon automatique !L'appli lie le fichier texte et précharge les fichiers associés, sans autre intervention ! Dés que mes essais seront terminés je vous tiendrait au courant, mais comme je repart sur un autre chantier, celà attendra le week end ! PS : Pour info, le code complet est sur le site afralispsi nécessaire je peut préciser le lien ! Daniel
Tramber Posté(e) le 25 novembre 2004 Posté(e) le 25 novembre 2004 PS : Pour info, le code complet est sur le site afralispsi nécessaire je peut préciser le lien ! Ne poses pas la question si tu trouves que ca vaut le coup. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
tyrese69_ Posté(e) le 25 novembre 2004 Auteur Posté(e) le 25 novembre 2004 Re bonjour, Voici le lien http://www.afralisp.com/newsletter/2002/2002-11.htm Bonuscad, j'ai essayé d'ajouter ta ligne de code mais, je doit malm'y prendre, car en réponse, j'ai une attente de sélection ? Daniel
Patrick_35 Posté(e) le 25 novembre 2004 Posté(e) le 25 novembre 2004 Bonjour à vous deuxIl est toujours irritant de voir un nouveau message sur un sujet qui à été déjà été abordé et qui est resté sans conclusion (surtout quand une recherche a été faite). C'est le seul reproche que je fais, mais bon, ce n'est pas grave, je ne t'en tiens pas rigueurJe sais qu'il existe des sites où on passe son temps à se justifier et où on à droit aussi aux injures. J'ai passé l'age et je ne vais plus mettre la souris dans ces sites, je préfère de loin les choses constructives Donc, pour répondre à ton souci principalUn (setq a (tblnext "block" t)) te donne le premier bloc de la table "block"Si un (logand (cdr (assoc 70 a)) 4) est égal à 4, c'est donc un xref. Si c'est un xref, un (cdr (assoc 1 a)) te donne le nom et un (cdr (assoc 2 a)) te donne son chemin complet (répertoire+fichier)Pour passer au block suivant, un (setq a (tblnext "block")) suffitEt si la valeur de a est nil, c'est que c'est fini, la table des blocs a été balayée Pour Tramber. Si tu as un moment, fais un saut sur la côte de granit rose, surtout en ce moment où il n'y a pas de touriste. Ce n'est pas les grandes plages du nord, mais ça a un charme incomparable ;) Et rien n'interdit le poster et la bouteille de sable sur le bureau (bon, je taquine un peu...) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
tyrese69_ Posté(e) le 25 novembre 2004 Auteur Posté(e) le 25 novembre 2004 Bonsoir,Merci pour l'aide, je vais essayer !Daniel
tyrese69_ Posté(e) le 25 novembre 2004 Auteur Posté(e) le 25 novembre 2004 Bonsoir,Mes faibles connaissances en vlisp (et lisp!) m'empêchentde bien intégrer au lisp suivant : ;début(defun c:getxref () (vl-load-com) (setq activedocument (vla-get-activedocument (vlax-get-Acad-Object))) (setq theblocks (vla-get-blocks activedocument)) (setq theList '()) (setq filexref (open "C:\\temp\\listexref.txt" "w")) (vlax-for item theblocks (setq yesxref (vlax-get-property item 'isXref)) (if (= yesxref :vlax-true) (progn (setq ablock (vlax-get-property item 'Name)) (setq prxref ablock) (write-line prxref filexref) (setq theList (append (list ablock) theList)) ) ) ) (close filexref));fin les éléments transmis, pour non pas mettre dans le fichier texte les nomsdes xrefs, mais les chemins et noms de fichier, voir même seulement lenoms des fichiers seulement et celà sans sélection ! Cette étape correspond a la première phase de mes recherches :créer une liste des fichiers en xref ! La seconde étant liée à mon autre post, qui correspond à la fonction inverselire un fichier texte des fichiers à mettre en xref, en remplacement de ceux existant en fonction de leeur indice de révision (Non testée encore. Chaque étape, l'une aprés l'autre!) Daniel (Je me met à lire les différents tutoriels en ma possession mais les débutssont lents ! De la persévérence devra être nécessaire !)
bonuscad Posté(e) le 26 novembre 2004 Posté(e) le 26 novembre 2004 Salut, Voici donc le même code avec l'ajout pour avoir le nom du DWG mis en xref (avec son chemin)J'ai mis l'écriture dans le fichier en REM par ";" et remplacé par un (print) pour faire le test et avoir le retour d'info à l'écran. ;début (defun c:getxref () (vl-load-com) (setq activedocument (vla-get-activedocument (vlax-get-Acad-Object))) (setq theblocks (vla-get-blocks activedocument)) (setq theList '()) [i] ; (setq filexref (open "C:\\temp\\listexref.txt" "w")) [/i] (vlax-for item theblocks (setq yesxref (vlax-get-property item 'isXref)) (if (= yesxref :vlax-true) (progn (setq ablock (vlax-get-property item 'Name)) (setq prxref ablock) [color=red] (setq nam_dwg_xref (cdr (assoc 1 (tblsearch "BLOCK" prxref)))) (print nam_dwg_xref) [/color] [i] ; (write-line prxref filexref) [/i] (setq theList (append (list ablock) theList)) ) ) ) [i] ; (close filexref) [/i] ) ;fin Donc en rouge ce que j'ai rajouté et en italique ce qui a été mis en remarque (pour les besoins du test)Bruno V. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
tyrese69_ Posté(e) le 26 novembre 2004 Auteur Posté(e) le 26 novembre 2004 Bonsoir,Merci à Patrick_35 et Bruno V. pour leur aide.Le programme lisp qui suit met bien le chemin et le noms du fichierdes xrefs contenus dans le dessin courant, dans un fichier textenommé listexref ;début (defun c:getxref (/ ablock_path) (vl-load-com) (setq activedocument (vla-get-activedocument (vlax-get-Acad-Object))) (setq theblocks (vla-get-blocks activedocument)) (setq theList '()) (setq filexref (open "C:\\Program Files\\cache\\listexref.txt" "w")) (vlax-for item theblocks (setq yesxref (vlax-get-property item 'isXref)) (if (= yesxref :vlax-true) (progn (setq ablock (vlax-get-property item 'Name)) (setq ablock_path (findfile (vlax-get-property ITEM 'PATH))) (setq prxref ablock_path) ;(setq nam_dwg_xref (cdr (assoc 1 (tblsearch "BLOCK" prxref)))) ;(print nam_dwg_xref) (write-line prxref filexref) (setq theList (append (list ablock) theList)) ) ) ) (close filexref) ) Si fichier n'existe pas, il est créé. Pour poursuivre un peut plus loin dans la démarche,il se peut que les xrefs soient en chemin relatif(, sans le chemin !)Dans ce cas là une erreure surviens. ; erreur: type d'argument incorrect: stringp nil Quelle en est l'origine ? Merci pour vos remarques et commentaires éventuels ! Daniel :yltype:
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