lili2006 Posté(e) le 29 novembre 2007 Posté(e) le 29 novembre 2007 Bonsoir à toutes et tous, Je souhaiterez connaitre toutes les possibilités des xdata en prévision de faire un petit SIG ( Système d' Information Géographique) que avec AutoCAD de base. Il y à bien "attach xdata" des Express mais je ne sais pas exactement ce que ce Lisp est capable de faire. Je voudrais pouvoir associer des informations aux entités graphiques de mon plan (celles-ci pouvant être quelconques), et les exporter vers Excel. Bien sûr, il faudrait que je puisse garder à jour les liens Excel-AutoCAD et AutoCAD-Excel, un peu comme LXL de Patrick_35, mais pas pour des attributs. Si quelqu'un à des idées, je suis preneur. De même si quelqu'un à écrit un petit tuto sur l'utilisation de "attach xdata" des Express,... Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 29 novembre 2007 Posté(e) le 29 novembre 2007 Salut Les xdatas permettent d'accrocher les données que l'on veux à une entité graphique.On met ce que l'on veux dans ces données. Tu t'attaques à quelque chose de sérieux et qui n'est pas à la portée du premier venu.Mais, tu as l'aide disponible sur cadxp ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lili2006 Posté(e) le 29 novembre 2007 Auteur Posté(e) le 29 novembre 2007 Re, Patrick_35, merci pour ta réponse. Tu t'attaques à quelque chose de sérieux Je ne veux pas faire quelque chose de trés compliqué (enfin, je m'rend p't'ête pas compte !), l'idée étant d'associer, dans un premier temps le nom ainsi que d'autres informations relatives à la personne occupant la tombe (je sais ce n'est pas trés drôle, mais c'est pour une application "basique" avec des étudiants !) matérialisée sur mon plan topo et de les recencer sur EXcel ainsi que d'autres informations (mais pas en attributs!). De plus, je souhaiterai pouvoir créer des requêtes de recherche ou de filtrage. Si c'est trop compliqué, je verrai alors avec le Map de AutoCAD, mais cela sera en dernier recourt car, une fois de plus, on a pas l'argent,... [Edité le 29/11/2007 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Derain Posté(e) le 29 novembre 2007 Posté(e) le 29 novembre 2007 Cette fois c'est moi qui repond, Oui c'est tous a fait possible j'ai un bout de code ou j'ai déjà fais sa au boulot, je te le ferait passer demain dans la journee, le problemeavec ce genre de manip c'es que graphiquement tu ne peut pas savoir si l'entitee ne question a quelque chose d'attachée ou pas a moin d'etre tres rigoureux.A+ D.D.
lili2006 Posté(e) le 29 novembre 2007 Auteur Posté(e) le 29 novembre 2007 Re, Derain, je te remercie d'avance de bien vouloir partager tes connaissances, quant à la rigueur, je tacherai de m'y tenir, mais je pense y être déjà un peu habitué. De plus, chaque utilisation d'outils spécifiques nous y contraint un peu, et c'est plutôt bien pour des apprenants, je trouve,... Bonne nuit. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
pelloux Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 Bonjour Qui dit SIG dit plutôt Autocad Map qu'Autocad. Il est à mon avis plus intéressant de travailler avec une base de données qu'avec des xdata. Néanmoins si tu le fais avec les xdata, rien ne t'empêche ensuite de récupérer tes xdata crée sous Autocad en données d'objet (base de données) dans Map. C'est ce que je fais pour des anciens plans de réseau d'assainissemet que versent les délégataires pour alimenter notre SIG. Bonne journée. PH PELLOUX
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Bonjour à toutes et tous, pelloux, peux-tu développer un peu sur la méthode que tu emploie STP ? Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Derain Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 comme promit ;--------------------------------------------------------------- ; Sauvegarde et restauration de données par les Xdata ; Derain d. ;--------------------------------------------------------------- (defun c:setxdata() (setq lastent (entget (car(entsel)))) (if (not (tblsearch "appid" "PBuilder"))(regapp "PBuilder")) (setq exdata '((-3 ("PBuilder" (1000 . "www.partsBuilder.com"))))) (setq newent (append lastent exdata)) (entmod newent) ) (defun c:getxdata() (entget (car (entsel)) '("PBuilder")) ) voici donc une routine elementaire A+ D.D.
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Bonjour à toutes et tous, Derain, merci pour cette routine.J'ai cependant plusieurs questions : (Exemple pour le recensement de tombes dans un cimetière, pas trés gai, je sais, mais trés utile,...) 1) Comment puis-je associer à ma polyligne des informations de type : Nom, adresse, localisation dans le cimetière,....? 2) Comment transférer alors ces informations sous EXcel ? 3) Comment puis-je garder une mise à jour de ces informations, soit en les modifiants dans Excel, soit dans AutoCAD ? 4) Comment puis-je "selectionner" les éléments dans AutoCAD en créant une requête ? (Exemple: Selection de toutes les tombes datant du début du siècle dernier, les caveaux de trois places,...etc,.. ?) Comme dis plus haut, je désirerai créer un petit SIG en utilisant que les possibilités de AutoCAD et EXcel. Quel est alors ton point de vue sur ce sujet ? Test pour une polyligne fermée => Commande: setxdataChoix de l'objet: ((-1 . ) (0 . "LWPOLYLINE") (330 . ) (5 . "15BAF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "BAC TRACE") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 59014.0 109050.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 76540.5 109050.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 76540.5 100180.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 59014.0 100180.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0) (-3 ("PBuilder" (1000 . "www.partsBuilder.com"))))Commande: Test pour un texte => SETXDATAChoix de l'objet: ((-1 . ) (0 . "TEXT") (330 . d'entité: 7efcacf8>) (5 . "15BB0") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "BAC TRACE") (62 . 3) (100 . "AcDbText") (10 64505.9 109812.0 0.0) (40 . 351.26) (1 . "PLANS EXECUTION BAC") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "TIT") (71 . 0) (72 . 4) (11 67777.2 109987.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0) (-3 ("PBuilder" (1000 . "www.partsBuilder.com"))))Commande: Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Derain Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 1/ pour cette exemple je n'est utiliser que la danner associer a 1000 rien ne t'empeche dans utiliser d'autre (superieur a 1000) comme le fait autocad le 8 pour les calque .... a toi de definir quel pointeur definit quelle variable ou encore de n'utiliser qu'une seul valeur en separant les champ par des ; ou autre choses. 2/ Dans le sans AutoCAD -> excel tu fabrique en list un fichier csv qui reprend toutes les infos qui sont dans les xdata et tu le relit dans excel. Dans le sens excel -> acad de la meme facon tu fabrique un csv tu le lis en lisp puis tu affecte les données au chaque des entitee qui en on besoin. Nota: bien entendu il te faudra gerer un index unique comme dans une base de donnée qui te permetra d'identifier quel info provenant d'excel corresponde a quelle ligne dans AutoCAD Je parle de passer par un CSV dans un premier temps car tu peut facilement debbuger le fichier entre deux modif mais rien ne d'empeche par la suite de le faire par un lien DDe ou OLE sans passer par un CSV. j'ai dela fais sa sous invetor en vba mais pas ou autocad, mais bon sa doit etre du meme genre. 4/ Je ne suis plus tres sur il faudrait regarder la doc, mais tu doit pouvoir fair un filtre sur une selection avec un ssget (ssget "X" '((0 . "LWPOLYLINE") (-3 ("PBuilder")))) la tu filtre déjà toutes les entitee qui sont attacher a l'applic, tu peut alonger la liste de filtre ou encore parser tous les entitee de la selection a la recherche de celles que tu veux A+ D.D.
Bred Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 Salut,une première ébauche.deux commandes :cim pour enregistrer les xdata dans un objet sélectionnécimxl pour exporter les xdata des objets selectionné au format .csv (dans c:/testcim.csv) (defun getxData-lili (ent txt / VLA-OB XDATA XTYPE) (if (equal (type ent) 'ENAME)(setq ent (vlax-ename->vla-object ent))) (setq xData (vlax-make-safearray vlax-vbVariant (cons 0 1)) xType (vlax-make-safearray vlax-vbInteger (cons 0 1))) (vlax-safearray-fill xData (cons 0 (list txt))) (vlax-safearray-fill xType '(1001 1000)) (vla-setxdata ent xType xData) ) (defun c:cim (/ ADRESSE ENT LOCALISATION NOM TXT L VLA-OB XDATA XTYPE ) (setq ent (car (entsel "\n Choisir l'objet dans lequel enregistrer les renseignements :"))) (if ent (progn (setq vla-ob (vlax-ename->vla-object ent)) (vla-getxdata vla-ob "" 'xType 'xData) (if (and xType xData) (progn (setq l (mapcar 'vlax-variant-value (vlax-safearray->list xData))) (alert (strcat "Xdata Existants : " (cadr l)))) (progn (setq Nom (getstring T "\n Nom :") adresse (getstring T "\n Adresse :") localisation (getstring T "\n Localisation :") txt (strcat Nom ";" adresse ";" localisation)) (getxData-lili ent txt) ) ) ) ) (princ) ) (defun c:cimxl (/ E F I L SEL XDATA XTYPE) (setq sel (ssget) f (open "c:\\testcim.csv" "w")) (repeat (setq i (sslength sel)) (setq e (vlax-ename->vla-object (ssname sel (setq i (1- i))))) (vla-getxdata e "" 'xType 'xData) (if (and xType xData) (progn (setq l (mapcar 'vlax-variant-value (vlax-safearray->list xData))) (princ (cadr l) f) (princ "\n" f) ) ) ) (close f) ) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
zebulon_ Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 Didier Duhem met ces fonctions à notre disposition ici Cela aide bien pour gérer les xdatas. AmicalementZebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
Derain Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 Tu peut aussi regarder les fonctions lisp de patric_35 sur le forum, la fonction TxtExc doit repondre exactement a ta demande AutoCAD vers excel a une ligne pret (reste a trouver laquelle). A+ D.D.
pelloux Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 Derain je veux bien t'envoyer ma méthode sous forme de 2 fichiers word. Mais je n'arrive pas à trouver les pièces jointes sur cad XP. Donnes moi ton courriel et je te les enverrai.@+ PH PELLOUX
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Re, Bred, pas de problème pour la routine "cim ", par contre pour "cimxl" => Commande: cimxlChoix des objets: 1 trouvé(s)Choix des objets:; erreur: type d'argument incorrect: FILE nilCommande: zebulon_, merci pour le lien, je vais prendre le temps de "décortiquer tout ça" pour voir ce que je comprend avec mon maigre niveau. Derain, merci encore de l'énergie que tu met dans tes réponses, mais malheuresement, je n'ai pas le niveau pour te suivre et c'est pas faute de vouloir essayer,... En ce qui concerne la routine "TxtExc" de Patrick_35, il faut d'abord que je réinstall EXcel 2003 pour tester et te donnerai mon sentiment, => Commande:Commande: TxtExcVersion d'excel inconnue ou non installéeCommande: pelloux, pour lier "ponctuellement" un fichier à la discussion, tu peux toujours utiliser ce site, forcément je suis intéressé et t'en remercie d'avance,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Rere, Derain J'ai retesté "TxtExc" de Patrick_35,, le truc c'est que je récupère tous les textes, mais ceux-ci ne sont pas forcément liés aux objets qui m'intéressent, et après, je fais quoi ?? a une ligne pret (reste a trouver laquelle). Qu'entend -tu exactement ?? zebulon_, comme prévu, j'ai rien compris !!! Merci à tous. [Edité le 30/11/2007 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
pelloux Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 C'est bon j'ai mis 2 fichiers joints sur ton site (en laissant mon courriel, paul-henri.pelloux@...). As tu accès ? PH PELLOUX
Bred Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 Bred, pas de problème pour la routine "cim ", par contre pour "cimxl" => citation extraite du message original:Commande: cimxlChoix des objets: 1 trouvé(s)Choix des objets:; erreur: type d'argument incorrect: FILE nilCommande: :casstet: :casstet: :casstet: c'est bizarre....fais le pas à pas en passant par le visual lisp, à la ligne(setq sel (ssget) [b]f (open "c:\\testcim.csv" "w"))[/b]tu devrais avoir en retour#< file "c:\\testcim.csv "> (ou écris (princ f) juste après, et regarde ce que te dit la ligne de commande....) ... ou un (vl-load-com) ? ... d'autre on-t'ils le problème ?merci des retours.... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Re, Bred, je teste de suite et rvient. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Re, Pour le moment, j'ai ça Bred <!--url{0}--> J'essaye maintenant tes dernières recommandations. Merci de ton aide. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Re, J'ai bien peur de ne pas savoir comment faire ce que tu me demandes parce que je n'ai pas accés au "pas à pas" quand je selectionne la ligne "f (open "c:\\testcim.csv" "w"))" ?? Désolé, Que puis-je faire à ce stade ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 30 novembre 2007 Posté(e) le 30 novembre 2007 ... j'ai testé avec les même renseignements que tu as rentés, car je me demanandais si ce n'étais pas à cause des virgules, mais ça a marché chez moi....Essaye quand même d'écrire des renseignements sans virgule pour voir.... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Re, Je reteste ça et te tiend au courant, Bred. Merci encore et à d't'al. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Re, Bred, voici ce que me renvoi le deuxième test => Commande: cim Choisir l'objet dans lequel enregistrer les renseignements : Nom :Monsieur Test Adresse :15 Rue des Maréchaux Localisation :2ème allée sud sud ouestCommande:Commande: cimxlChoix des objets: 1 trouvé(s)Choix des objets:; erreur: type d'argument incorrect: FILE nilCommande: Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 30 novembre 2007 Auteur Posté(e) le 30 novembre 2007 Rere, Si je ressaie de renvoyer des renseignements sur la même entité avec cim => <!--url{0}--> donc, les infos sont bien en mémoire, non ?? C'est à l'utilisation de "cimxl", que j'ai des soucis (j'ai changé de fichier pour voir) => Commande: cimxlChoix des objets: 1 trouvé(s)Choix des objets:; erreur: type d'argument incorrect: FILE nilCommande: Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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