Aller au contenu

cad01441

Membres
  • Compteur de contenus

    2
  • Inscription

  • Dernière visite

Tout ce qui a été posté par cad01441

  1. Bonjour, J'ai trouvé une routine LISP de (gile) nommé c:AiresParcelles dans ce sujet, j'ai essayé de la modifier mais je m'y connais très peu en LISP, le résultat est ceci: ;;; gc:GetItem (gile) ;;; Retourne le vla-object de l'item s'il est présent dans la collection ;;; ;;; Arguments ;;; col : la collection (vla-object) ;;; name : le nom de l'objet (string) ou son indice (entier) ;;; ;;; Retour : le vla-object ou nil (defun gc:GetItem (col name / obj) (vl-catch-all-apply (function (lambda () (setq obj (vla-item col name)))) ) obj ) (defun c:AiresParcelles_mod (/ *error* acdoc filename ss n file pa plst num num2 lay) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) (and file (close file)) (princ) ) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) layers (vla-get-Layers acdoc) ) (if (setq lay (gc:GetItem layers "nonconforme")) (if (setq ss (ssget "_X" '((8 . "nonconforme")))) (alert "Il reste des objets sur le calque\"nonconforme\"") (vla-delete lay) ) (if (and (setq filename (getfiled "AiresParcelles" (getvar "DWGPREFIX") "xls" 1)) (princ "\nSélectionnez les polylignes (ou valider pour toutes).") (or (ssget '((0 . "LWPOLYLINE") (8 . "Calque3"))) (ssget "_X" '((0 . "LWPOLYLINE") (8 . "Calque3"))) ) ) (progn (setq file (open filename "w")) (write-line "Calque1\tCalque2" file) (vlax-for pl (setq ss (vla-get-ActiveSelectionSet acdoc)) (setq pa (fix (vlax-curve-getendParam pl)) plst nil ) (while (setq pt (vlax-curve-getPointAtParam pl pa)) (setq pa (1- pa) plst (cons (trans pt 0 1) plst) ) ) (setq num (ssget "_WP" plst '((0 . "MTEXT") (8 . "Calque1"))) num2 (ssget "_WP" plst '((0 . "TEXT") (8 . "Calque2"))) ) (if (or (not num) (not num2)) (progn (or lay (setq lay (vla-add layers "nonconforme"))) (vla-put-Color lay 30) (vla-put-layer pl "nonconforme") ) (write-line (strcat (vla-get-TextString (vlax-ename->vla-object (ssname num 0))) "\t" (vla-get-TextString (vlax-ename->vla-object (ssname num2 0))) ) file ) ) ) (close file) (vla-delete ss) (and lay (alert "Parcelle(s) non conforme(s)")) ) ) ) (princ) ) ça marche pour la colonne de Calque1, mais ça renvois que un seul des textes de Calque2 qui correspondent au MTEXT de Calque1. Exemple: T1 152 C2 954 M3 11 est ce que c'est réparable avec repeat ou autres commandes ? si oui, comment? Merci d'avance pour votre aide.
  2. Bonjour à tous, J'ai besoin d'aide, j'ai trois calques, le premier (calque1) contient des textes multiligne, le deuxième (calque2) des textes, et le troisième (calque3) des polylignes. Il y a un seul MTEXT (calque1) mais beaucoup de textes (calque2) par polyligne (calque3), les polylignes désignent quel textes (calque2) appartiennent à quel texte multiligne (calque1). J'aimerais si possible, un tableau Excel comme ceci par exemple: Calque1 Calque2 T1 152 T1 365 T1 36 T1 78 C2 954 C2 321 C2 21 Merci d'avance.
×
×
  • 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é