Aller au contenu

Déméter_33

Membres
  • Compteur de contenus

    30
  • Inscription

  • Dernière visite

À propos de Déméter_33

  • Date de naissance 03/06/1992

Profile Information

  • Gender
    Male
  • Location
    BORDEAUX
  • Interests
    Le LISP (c'est nouveau...)

Visiteurs récents du profil

567 visualisations du profil

Déméter_33's Achievements

Explorer

Explorer (4/14)

  • One Year In Rare
  • Collaborator Rare
  • Reacting Well Rare
  • One Month Later Rare
  • Week One Done Rare

Recent Badges

0

Réputation sur la communauté

  1. Bon c'est ma faute @didier, j'ai effectué le test de votre bout de code sur un "TEXT" et non un "MTEXT". En faisant le test correctement, j'obtiens bien les flèches : Sauf que mon code insère les caractères AVANT de faire la conversion de "TEXT" à "MTEXT", il faut donc que je change le processus pour faire les choses dans l'ordre. J'ai pas le temps ce soir, mais je vais bouger mes lignes dès que possible pour retenter dans le bon ordre.
  2. Bien trouvé sur le fond, mais mon dessin a pas aimé : Par contre j'ai réussi à me faire ma routine "propre" dans laquelle j'ai juste à taper les caractères et qui fonctionne nickel du coup : (defun c:TextDp1b2Mtext () (vl-load-com) (setq TDPsel (vla-get-activedocument (vlax-get-acad-object))) ; Récupérer le document actif (vla-startundomark TDPsel) (setq sel (ssget "_X" '((0 . "TEXT") (8 . "Sectionnement_PlotsAnno")))) ; Filtre de sélection : Texte + Mtext uniquement du calque "Sectionnement_PlotsAnno" (progn (setq Pref (getstring T "\Entrer alt+17")) ;; Préfixe facultatif (setq Suff (getstring T "\Entrer alt+16")) ;; Suffixe facultatif (vlax-for ent (vla-get-activeselectionset TDPsel) ; Traiter chaque entité sélectionnée (vla-put-textstring ent (strcat Pref (vla-get-textstring ent) Suff))) (vla-delete (vla-get-activeselectionset TDPsel)) ; Supprimer la sélection après modification ) (vla-endundomark TDPsel) (setq TPsel (ssget "X" '((0 . "TEXT") (8 . "Sectionnement_PlotsAnno")))) ;Sélection de tous les textes du calque Sectionnement_PlotsAnno (setq Setlen (sslength TPsel) Count 0 ) ;setq le nombre d'entités dans Setlen, setq le compteur à 0 (repeat SetLen ;Boucle de répétition (Setlen) fois (setq Ntxt (ssname TPsel Count)) ;setq Ntxt comme étant la (Count)ième entité dans la selection Tsel (command "_txt2mtxt" Ntxt "") ;Transformation de l'entité de Ntxt de texte en mtext (setq jsF (ssadd (entlast)) NMtxt (entlast)) ;setq NMtext la dernière entité Mtext créée (setq dxf_ent (entget NMtxt)) ;Lis le code DXF de l'entité NMtext (entmod (append dxf_ent (list (cons 71 5) ;Justifier (cons 90 19) ;Encadrement (cons 8 "G-ANNOTATIONS") ;Calque (cons 40 0.15) ;Hauteur de texte (cons 45 1.2) ;Bordure (cons 441 0) ;Echelle (cons 41 1.4) ;Largeur ) ) ) (setq Count (+ 1 Count)) ;Ajoute 1 au compteur ) ;Fin de Repeat (princ) ) Fut juste taper les deux caractères... Mais pour le moment ça marche.
  3. Pourtant, j'utilisais avant un autre LISP mais qui correspondait moins bien à mes besoins et qui lui fonctionne très bien avec ces caractères : ; Ajouter un morceau de texte (prefix) (defun c:ptx(/ doc ent tx1 tx2 txt) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (ssget (list (cons 0 "TEXT,MTEXT"))) (setq tx1 (getstring "\nTexte à ajouter : ")) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (vla-put-textstring ent (strcat tx1 (vla-get-textstring ent))) ) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) Peut être faut-il que je pense mon code autrement en ajustant la commande de sélection de celui-ci ?
  4. Bonjour @didier, L'élément de base : L'élément une fois converti :
  5. J'y ai pensé (je suis allé sur la même page), mais la liste des 255 caractères ASCII ne comporte pas les deux caractères, seulement les caractères < et > qui ne sont pas assez visuellement explicites dans l'utilisation de nos plans... https://www.purebasic.com/french/documentation/reference/ascii.html Il s'agit d'Alt codes issus de la table de codage graphique de la page de code 850, en fait si je tape (setq A ►) j'ai nil comme réponse, donc je pense juste que ça ne devrai pas être possible... SAUF QUE quand j'utilise le code duquel je me suis inspiré ça fonctionne, donc mon problème doit être ailleurs... Je cherche encore.
  6. Essaye ça : ;Modification des apparences des Mtext - Background bylayer (defun c:bg () (setq MTsel (ssget "_X" '((0 . "MTEXT")))) ;Sélectionne uniquement les objets Mtext (setq Setlen (sslength MTsel) Count 0 ) ;setq "Setlen" au nombre d'objets dans "MTsel" et "count" à 0 (repeat SetLen ;Début de la boucle (setq Nmtxt (ssname MTsel Count)) ;setq "Ntxt" comme étant la (Count)ième entité dans la selection Tsel (setq jsF (ssadd (entlast)) NMtxt (entlast)) ;setq "NMtext" comme la dernière entité Mtext créée (setq dxf_ent (entget NMtxt)) ;Lis le code DXF de l'entité "Nmtext" (setq LayEnt (cdr (assoc 8 dxf_ent))) ;Trouve le calque de l'entité (setq ColMt (cdr (assoc 62 (entget (tblobjname "LAYER" LayEnt)))));Trouve la couleur du calque de l'entité (entmod ;lance la modification de l' objet (append dxf_ent ;ouvre la liste dxf de l'objet (list ;suivant la liste (cons 62 7) ;Couleur du texte sur noir (7) (cons 90 19) ;Encadrement et arrière plan (19) (cons 45 1.2) ;Bordure (1.2) (cons 63 ColMt) ;Couleur de l'arrière plan (variable) ) ;fin de la liste ) ;ferme la liste dxf de l'objet ) ;fin de entmod (setq Count (+ 1 Count)) ;Ajoute 1 au compteur ) ;Fin de Repeat (princ) ) Je fais lire la couleur du calque à chaque texte, et je l'applique en couleur du fond de chaque texte après avoir changé sa couleur en noir. Avoir la couleur "ducalque" n'existe pas dans cette fonctionnalité, aussi tu es forcé de choisir une couleur. La parade serait de lancer une routine comme celle ci-dessus à chaque fois que tu change des textes de calques, ce qui est automatisable sûrement mais là je ne sais pas faire.
  7. Bonjour, Dans une routine assez imposante de fusion d'un fichier natif dans un modèle pré-paramétré, je cherche à transformer l'apparence et la composition de certains "TEXT" en éléments "MTEXT" avec l'insertion de préfixes et suffixes composés de caractères unicodes , ◄ en préfixes et ► en suffixes. Pour cela, j'ai adapté un morceau de LISP (PTX-STX) trouvé sur ce même forum, mais dans lequel je n'arrive pas à paramétrer les caractères UNICODE, même en les entrants manuellement. (defun TextDp1b2Mtext (/ doc ent Pref Suff) (setq TDPsel (ssget "X" '((0 . "TEXT") (8 . "Sectionnement_PlotsAnno")))) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq Pref (getstring "\Entrer alt+17")) ;Définition du préfixe manuelle (setq Suff (getstring "\Entrer alt+16")) ;Définition du suffixe manuelle (while (< i (sslength TDPsel)) (setq ent (vlax-ename->vla-object (ssname TDPsel i))) (vla-put-textstring ent (strcat Pref (vla-get-textstring ent) Suff)) (setq i (1+ i)) ) (vla-endundomark doc) (setq Setlen (sslength TDPsel) Count 0 ) (repeat SetLen (setq Ntxt (ssname TDPsel Count)) (command "_txt2mtxt" Ntxt "") (setq jsF (ssadd (entlast)) NMtxt (entlast)) (setq dxf_ent (entget NMtxt)) (entmod (append dxf_ent (list (cons 90 19) ;Encadrement (cons 8 "G-ANNOTATIONS") ;Calque (cons 40 0.15) ;Hauteur de texte (cons 45 1.2) ;Bordure (cons 441 0) ;Echelle (cons 41 1.4) ;Largeur ) ) ) (setq Count (+ 1 Count)) ) (princ) ) Le résultat du code joint me donne bien l'apparence désirée mais n'insère pas les caractères demandés. Help me please.
  8. Salut, Je suis loin d'être un pro, mais utilise la valeur 19 pour ton code DXF 90, tu obtiendra un encadrement et un masque suivant la valeur d'arrière plan. J'ai comparé les valeurs DXF d'un même objet avec et sans ce qui m'a permis de sortir cette valeur, et chez moi ça marche... Si tu veux mettre une couleur, alors tente manuellement avec des couleurs vraies et compare l’évolution des données dans ton code DXF. M'en veuillez pas, mais je code sur notepad...
  9. Une fois mis un peu plus à l'épreuve, ça fonctionne impeccablement. Je n'ai plus eu qu'à modifier quelques fonctionnalités, comme la transformation auto de toutes les lignes en LWpoly, la désactivation du contrôle de précision de virgule, la définition du séparateur uniquement en ";" et la sélection automatique de toutes les entités du dessin. J'ai maintenant une routine 100% opé, où en un appel, j'extrait toutes les données nécessaires à une analyse statistique linéaire de toutes les entités d'un dessin. Merci @(gile)
  10. Bon du coup j'ai pas le temps de réfléchir que la solution toute faite me tombe dans les mains. Je l'ai testé vite fait sur un ensemble de 1857 éléments (avec le dos d'un godet de Komatsu 8000) et il s'en est très bien sorti après contrôle sur une poly ouverte. Je le mettrai un peu plus à l'épreuve Lundi mais si c'est bon ça va m’économiser des heures de travail sur plusieurs projets donc... MERCI.
  11. Bon du coup je me suis calmé sur le test, je n'ai sélectionné que 64 éléments. (L'objectif est de pouvoir extraire les infos de plusieurs milliers d'éléments en simultané) Sauf que j'ai toujours la même erreur: ; erreur: division par zéro (A moins que je ne voie pas le code modifié, il n'y a pas de notification "modifié" dans ton code précédent) En parallèle je suis en train de réfléchir à une autre solution mais je bute un peu... Une autre solution plausible serait de donner comme point "centroïde" des poly non fermées le point situé au centre de leur longueur totale. Mais je suis encore en train de chercher des bouts de code sur le net qui me permettront de le faire (Je sais que j'ai vu des lisp faire des choses s'en rapprochant à droite et à gauche en farfouillant).
  12. Salut @(gile), lors de l'exécution, je reçois le message d'erreur suivant: Commande: STATEXTRACT_GILE Sélectionner les polylignes optimisées. Sélectionnez des objets: Spécifiez le coin opposé: 750 trouvé(s) Sélectionnez des objets: _.ddunits Commande: Commande: Séparateur [Espace/Virgule/Point-virgule/Tabulation]? <Point-virgule>: P ; erreur: division par zéro Je t'avoue que j'ai exécuté sans regarder ce que tu as fait pour le moment, donc je n'ai pas cherché à comprendre ou tu apporte des modifs. Edit: Je viens de regarder, et si je comprends bien, tu as rajouté un ensemble de fonctions complémentaires, qui calculent un centroïde issu d'un calcul de plusieurs centroïdes de triangles formés avec des sections consécutives de la polyligne. Je sais pas si mes mots sont très adaptés...
  13. Bonjour, Je m'explique (le titre est peut être ambigu) : à la suite d'un sujet précédent, auquel j'avais obtenu une bonne solution, j'ai commencé à me servir du LISP joint. Je me suis rendu compte que au cours de l'exécution, certaines polylignes (ouvertes) sortaient sans informations des coordonnées de centroïdes. En cherchant d'où viens l'erreur, je me suis redu compte que les polylignes qui n'exportent pas d'informations sont celles qui une fois fermées s'intersectent elles mêmes (en gros un S se transforme en $). Je me demande donc si il y a un moyen de contourner ce problème. Le LISP et le fichier que je traite en exemples. Statextrat.lsp Export vers statistiques - Test 3.dwg
  14. Bonjour Bonuscad. Pour une simplification c'en est une belle. Je n'ai eu qu'à "réorganiser" les éléments dans le sens dans lequel je les voulais et HOP... le tour est joué. Il faut aussi que j'y ajoute une petite boucle qui me transforme toutes les lignes en polylignes, et que la sélection se fasse sur le dessin entier (ne pas passer par une sélection d'objets) Merci beaucoup en tout cas c'est parfait.
  15. Bonjour, Aidé d'un code trouvé sur ce même site, je tente de l'adapter à mon besoin. Le but de ce lisp est de fabriquer un fichier.csv contenant des informations de longueurs et de surface et de positionnement (centroïde) de polylignes fermées et non fermées dans un fichier, avec d'autres informations sur ces objets (calque, ID). Sauf que je rencontre un problème lors de la transformation d'un objet VLA en région VLA (je ne sais même pas trop si c'est bien comme ca que ca marche...) Le message d'erreur dans la console est le suivant: ; erreur: type d'argument incorrect: VLA-OBJECT nil Je m'en remet à vos suggestions. mult-info_po2CSV.lsp
×
×
  • 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é