Defman Posté(e) le 10 janvier 2008 Posté(e) le 10 janvier 2008 Bonjour, je me penche sur un sujet qui me semble complexe, mais peut etre y a t'il des astuces. Voila, je trace un réseau complet. jusque là nous traçons le réseau en polyligne... Mais désormais, j'aimerais attribuer des attribut ( type, Ø, année...) à mes polylignes pour les exporter dans une base de données. Alors y à t'il une astuce ou suis je obligé de créer une routine pour transformer chaque troçon en bloc, où là je peux édité mes attributs à ma guise. Espérant que l'un d'entre vous à une astuce, je reçois volontié toutes informations, tout en recherchant de mon coté, meme si le temps presse :cool:
Defman Posté(e) le 17 janvier 2008 Auteur Posté(e) le 17 janvier 2008 Je n'ai rien trouvé dans l'aide ni dans le forum. donc, je créé un bloc avec attribut pour chaque tronçon.
lili2006 Posté(e) le 17 janvier 2008 Posté(e) le 17 janvier 2008 Bonsoir à toutes et tous, Et avec les xdatas ? Si tu n'as pas suivi ce post, quelques explications : Le Lisp => ;;; Requètes (defun c:R-Xdata (/ I L LST LST-B N S S-T VLA-OB XDATA XTYPE) (princ "\n Recherches des Renseignements :") (setq lst (Renseignements-XDATA "Q")) (setq s (ssget "_X" (list (list -3 (list (car lst))))) s-t (ssadd)) (repeat (setq i (sslength s)) (setq vla-ob (vlax-ename->vla-object (ssname s (setq i (1- i))))) (vla-getxdata vla-ob "" 'xType 'xData) (if (and xType xData) (progn (setq l (mapcar 'vlax-variant-value (vlax-safearray->list xData))) (repeat (setq n (length (setq lst-B (Renseignements-XDATA nil)))) (if (equal (strcase (cadr (member (strcase (nth (setq n (1- n)) lst-B)) lst))) (strcase (cadr (member (strcase (nth n lst-B)) l)))) (ssadd (handent (cadr l)) s-t)) ) ) ) ) (if (zerop (getvar "cmdactive"))(sssetfirst nil s-t)) (if (> (sslength s-t) 1) (princ (strcat "\n "(rtos (sslength s-t)) " objets sélectionnés.")) (princ (strcat "\n "(rtos (sslength s-t)) " objet sélectionné.")) ) (princ) ) ;;; Renseignements (à modifier) pour enregistrement Xdata (defun Renseignements-XDATA (Q / I LST-F LSTR R) ; liste à modifers pour reneignements : (setq lstR '(" [surligneur] ELEMENT" "LONGUEUR" "LARGEUR" "COULEUR" "NOMBRE" "SALLE" "BATIMENT" "ETAGE[/surligneur]")) (if Q (progn (setq i -1) (repeat (length lstR) (setq R (getstring T (strcat "\n " (nth (setq i (1+ i)) lstR) " :")) lst-F (append lst-F (list (strcase (nth i lstR)) R))) ) lst-F ) lstR ) ) ;;; Retourne Xdata dans Objet. (defun c:RXO () (setq ent (car (entsel "\n Choisir l'objet contenant les renseignements :"))) (if ent (if (not (Test-Xdata ent)) (alert "\n Pas de Xdata dans cette entité."))) (princ) ) ;;; Test Existance Xdata (defun Test-Xdata (ent) (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)) i -1 txtt "") (repeat (/ (length l) 2) (setq txtt (strcat txtt "\n" (nth (setq i (1+ i)) l) ": " (nth (setq i (1+ i)) l)))) (alert (strcat "Xdata Existants : " txtt)) t ) ) ) ) ) ;;; Programme Demandant/Donnant la liste Xdata dans entité. (defun c:L-Xdata (/ ENT I LST-D VLA-OB) (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 (not (Test-Xdata ent)) (progn (setq lst-D (Renseignements-XDATA "Q") i -1) (Set-xData ent (list "ENTITE" (vla-get-handle vla-ob))) (repeat (/ (length lst-D) 2) (Set-xData ent (list (nth (setq i (1+ i)) lst-D) (nth (setq i (1+ i)) lst-D))) ) ) ) ) ) (princ) ) ;;; Enregistres Xdata des entités selectionnés dans fichier .csv (defun c:XdataXL (/ E F I L SEL XDATA XTYPE) (setq sel (ssget) f (getfiled "Nom Fichier à enregistrer :" "" "csv" 1) f (open f "w")) (repeat (setq i (length (setq lst (reverse (append (list "ENTITE") (Renseignements-XDATA nil)))))) (princ (strcat "'" (nth (setq i (1- i)) lst)) f) (princ ";" f) ) (princ "\n" f) (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)) x -1) (repeat (/ (length l) 2) (princ (strcat "'" (nth (setq x (+ x 2)) l)) f) (princ ";" f) ) ) ) (princ "\n" f) ) (close f) ) ;;; Récupères les données d'un .csv pour les mettre en Xdata. (defun c:XLXdata (/ ADRESSE ENT F H L LOCALISATION NOM) (setq f (getfiled "Choisir Fichier :" "" "csv" 4) f (open f "r") l "l" R (Renseignements-XDATA nil)) (while l (setq l (read-line f)) (if l (progn (if (not (vl-string-search "ENTITE" l)) (progn (if (vl-string-search "\"" l) (setq l (substr l (+ 2 (vl-string-search "\"" l)) (strlen l))) ) (setq h (substr l 1 (vl-string-search ";" l)) ent (handent h)) (if ent (if (entget ent) (progn (Set-xData ent (list "ENTITE" h)) (setq i -1) (repeat (length R) (setq l (substr l (+ 2 (vl-string-search ";" l)) (strlen l)) D (substr l 1 (vl-string-search ";" l))) (if (vl-string-search "\"" D) (setq D (substr l 1 (vl-string-search "\"" D)))) (Set-xData ent (list (strcase (nth (setq i (1+ i)) R)) D)) ) (princ (strcat "\n Entité " h " Mis à Jour.")) ) (alert (strcat "Entité " h " Supprimé !")) ) (alert (strcat "Entité " h " Non trouvé !")) ) ) ) ) ) ) (close f) (princ) ) ;;; Routine Enregistrement Xdata dans entité : (Set-xData '("Nom" "Toto")) (defun Set-xData (ent lst / 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 lst) (vlax-safearray-fill xType '(1001 1000)) (vla-setxdata ent xType xData) ) A savoir => Il te suffit de modifier la ligne surligné en jaune dans le Lisp et d'y mettre les informations que tu souhaites voir apparaître. Pour plus de renseignements, en lisant le post en lien ci-dessus, t'y verras plus clair,... Bon courage, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Defman Posté(e) le 31 janvier 2008 Auteur Posté(e) le 31 janvier 2008 Désolé, je n'ai pa eu le temps de répondre avant. le souci c'est que je suis sous LT et lt Extender ne prends pas ce lisp. merci de ton aide, il faut que j'essais sur une version full. :D
lili2006 Posté(e) le 31 janvier 2008 Posté(e) le 31 janvier 2008 Bonsoir à toutes et tous, lt Extender ne prends pas ce lisp. Bizarre ! Plutôt lié aux Xdatas, non ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
vinz34 Posté(e) le 1 février 2008 Posté(e) le 1 février 2008 Salut lili2006, Je pense que le problème vient du fait que ce ce code soit en vlisp.LT Extender gère l'Autolisp seulement à ma connaissance.
lili2006 Posté(e) le 2 février 2008 Posté(e) le 2 février 2008 Bonsoir à toutes et tous, Tu as surement raison vinz34 en ce qui concerne le vlisp sur les lights, dommage,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 2 février 2008 Posté(e) le 2 février 2008 Salut, En "pur AutoLISP", il ya la bibliothèque de routines de Didier-AD ici Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 2 février 2008 Posté(e) le 2 février 2008 Bonsoir à toutes et tous, Surement très bien la bibliothèque de routines de Didier-AD , mais comment ça marche ? Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 2 février 2008 Posté(e) le 2 février 2008 Surement très bien la bibliothèque de routines de Didier-AD , mais comment ça marche ? Il s'agit d'une bibliothèque de routines commentée (fonction, arguments, retour), à charger puis à utiliser comme les fonctions LISP prédéfinies pour écrire des programmes comme ceux donnés dans l'exemple (DEMXDATA.lsp). Dans l'exemple il y a deux commandes. Dans la première, QUESTIONS, un rectangle et un cercle sont dessinés et des données (coordonnées de deux sommets du rectangle et rayon du crecle) sont stoquées dans des XDATAs liées à la polyligne.Dans la seconde, MISEAJOUR, ces données sont récupérerées pour redessiner le rectangle et le cercle en fonction des nouveaux sommets de la polyligne qui ont été étirés. [Edité le 2/2/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 2 février 2008 Posté(e) le 2 février 2008 Re, Merci (gile). Pas de mon niveau, mais je vais regarder quand même. Bon WE. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 3 février 2008 Posté(e) le 3 février 2008 Salut Merci (gile). Pas de mon niveau, mais je vais regarder quand même. Cela dépend de qui ;) @+ 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 3 février 2008 Posté(e) le 3 février 2008 Bonjour à toutes et tous, Cela dépend de qui Malheuresement plus du temps que de mon envie,... 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