Aller au contenu

VDH-Bruno

Membres
  • Compteur de contenus

    1 146
  • Inscription

  • Dernière visite

  • Jours gagnés

    20

Tout ce qui a été posté par VDH-Bruno

  1. Oui mais si tu fait un test pour vérifier que n'a pas une valeur décimal, dans ce cas tu ne change pas ton "pas ouvert" en "as ouvert" dans ton texte.
  2. J'ai appris en testant avec la console et les exemples de la guerre des étoiles fautes de comprendre les définitions, effectivement la courbe de progression est plus lente mais du coup les fonctions sont peut être mieux intégré sur le long terme... A+
  3. Salut, trim -> ajusté right -> droite left -> gauche donc (vl-string-right-trim "m" (vl-string-left-trim "p" "p1.20m")) Je n'ai pourtant quasiment pas fait d'anglais de ma vie (4ème et 3ème il y a 28 ans..) Sinon ma variante (read (vl-string-translate "pm" " " "p1.20m")) A+
  4. Oui c'est très bon, attention toute fois aux expressions alphanumériques: _$ (setq x (atof "2xxx")) 2.0 _$ (type x) REAL c'est pourquoi j'ai préféré read à atof _$ (setq x (read "2xxx")) 2XXX _$ (type x) SYM A+
  5. Bonjour, Quelque chose comme cela? _$ (numberp (read (vl-string-translate "," "." "+4,256"))) T _$ (numberp (read (vl-string-translate "," "." "-40.27"))) T _$ (numberp (read (vl-string-translate "," "." "toto"))) nil A+
  6. Pour moi le texte est rouge à l'ouverture pas de problème, quitte et relance ton AutoCAD... A+
  7. Bonjour, Une faute de frappe (sans faire de jeu de mot), personnellement si à l'écrit j'avais la moitié du quart de son talent d'écriture et de rédaction, j'en serais très heureux. A+
  8. VDH-Bruno

    Sélection en un point

    Sinon en complément à la remarque suivante: Un code à minima (de (gile) il me semble) avec entmake pour la création de polylignes 3D (AcDb3dPolyline). (defun makePl3d (pts) (entmake '((0 . "POLYLINE") (70 . 8))) (foreach p pts (entmake (list '(0 . "VERTEX") (cons 10 p) '(70 . 32)))) (entmake '((0 . "SEQEND"))) ) (makePl3d lst-pt);Pour tester Pour la culture général et comprendre les polylignes, sur ce forum je conseil la relecture de cette réponse de (gile). http://cadxp.com/topic/38025-coordonnees-dune-polyligne/page__view__findpost__p__214361 A+ Nb: Les points transmis à vl-cmd (command, command-s) -> SCU Les points transmis à entmake -> SCG (Au besoin utilise la fonction trans pour passer de l'un à l'autre)
  9. VDH-Bruno

    Sélection en un point

    Non vl-cmf à besoin d'un argument valide, et tous comme command peut être appelée séquentiellement dans mon exemple (foreach/while), il est appelé pour chaque point. Dans ton exemple si tu évalue ton expression while, tu obtiens nil en sortie _$ (while (setq pt (car lst-pt)) (setq lst-pt (cdr lst-pt))) nil Ce qui revient après évaluation de l'expression la plus imbriqué à écrire.. _$ (vl-cmdf "POLY3D" nil) nil Expression qui ne peut évidemment pas être interprété par vl-cmdf A+
  10. VDH-Bruno

    Sélection en un point

    Bonjour, Pour la correction: (vl-cmdf "POLY3D") (while lst-pt (vl-cmdf (setq pt (car lst-pt))) (setq lst-pt (cdr lst-pt))) (vl-cmdf "") Sinon comme évoqué récemment sur le forum, l'emploie d'une boucle foreach me semble plus évident sur ce type de traitement. (vl-cmdf "_3dpoly") (foreach p lst-pt (vl-cmdf p)) (vl-cmdf "") A+
  11. VDH-Bruno

    Sélection en un point

    Bonsoir x_all, Attention avec ssget et les modes de sélection (point, fenêtre, capture), ces modes de sélection sont graphique dons si le point recherché n'est pas visible à l'écran cela va échoué, un autre cas d'école avec les blocs c'est si le point d'insertion n'est pas définie sur une entité graphique du bloc la sélection peu aussi échouer.. Si tu as un peu de temps je t'invite à jeter un œil sur cette discussion http://cadxp.com/topic/37447-rechercher-un-bloc/page__view__findpost__p__205935 ou je proposais une sélection par fitres de coordonnées avec ssget. Ce qui revient à sélectionner tous les blocs et à comparer leurs points d'insertion comme tu l'avais initialement exprimé. A+ et bon WE
  12. Regarde ici si cela peut te dépanner http://cadxp.com/topic/38099-pagination-automatique/page__view__findpost__p__210208 (Ps je sais pas comment est fait ton bloc le plus simple pour tester c'est de lancer la routine sur un simple texte présent dans ton onglet) A+
  13. VDH-Bruno

    Modifier un txt

    La fonction strlen (string length) mesure la longueur de la chaîne de caractère, puis avec l'opérateur moins je soustrait 3 à cette longueur. C'est avec la fonction substr que l'on retire les 3 derniers caractères (plus exactement que l'on garde tous ceux précède -> Du 1er caractère au Nième caractères - 3 caractères). A+
  14. VDH-Bruno

    Modifier un txt

    Re, J'ai personnellement beaucoup pris sur ce forum, je m'efforce de rendre quant je peux... Oui, un exemple: _$ (setq fich "C:\\Users\\toto\\Documents\\000000000\\TEST\\toto.txt") "C:\\Users\\toto\\Documents\\000000000\\TEST\\toto.txt" _$ (strcat (substr fich 1 (- (strlen fich) 3)) "top") "C:\\Users\\toto\\Documents\\000000000\\TEST\\toto.top" A+
  15. VDH-Bruno

    Modifier un txt

    Bonjour, Remplace: (string-subst-all "T:" "A=" line) par (foreach x '(("A=" . "T:") ("B=" . "G:")) (setq line (string-subst-all (cdr x) (car x) line))) Pour l'exemple le code modifié et commenté: (defun c:testxt (/ fich desc string-subst-all lst line) ;; Pour le cas ou il y aurait plusieurs occurences à substituer dans une même ligne ;; Si une seul occurence par ligne remplacer string-subst-all par vl-string-subst ;; dans le code (defun string-subst-all (n o l / p) (if (setq p (vl-string-search o l)) (string-subst-all n o (vl-string-subst n o l p)) l ) ) ;; Programme principal (if ;; Sélection du fichier (setq fich (getfiled "Sélectionner un fichier texte" "" "txt;*" 0)) (progn ;; Ouverture du fichier en lecture (setq desc (open fich "r")) ;; Boucle de lecture de l'ensemble des lignes (while (setq line (read-line desc)) ;; Substitution des chaînes de caractères dans la ligne (foreach x '(("A=" . "T:") ("B=" . "G:")) (setq line (string-subst-all (cdr x) (car x) line))) ;; Stockage de la ligne modifié dans une liste (stockage inversé) (setq lst (cons line lst)) ) ;; Fermeture du fichier (close desc) ;; Ouverture du fichier en écriture (setq desc (open fich "w")) ;; Ecriture des lignes dans le fichier (foreach line (reverse lst) (write-line line desc)) ;; Fermeture du fichier (close desc) ) ) (princ) ) A+
  16. VDH-Bruno

    Modifier un txt

    Salut, Rapidement pour le principe, écrit à la volé.. A tester (defun c:testxt (/ fich desc string-subst-all lst) (defun string-subst-all (n o l / p) (if (setq p (vl-string-search o l)) (string-subst-all n o (vl-string-subst n o l p)) l ) ) (and (setq desc (open (setq fich (getfiled "Sélectionner un fichier texte" "" "txt;*" 0)) "r")) (while (setq line (read-line desc)) (setq lst (cons (string-subst-all "T:" "A=" line) lst))) (not (close desc)) (setq lst (reverse lst)) (setq desc (open fich "w")) (foreach line lst (write-line line desc)) (close desc) ) (princ) ) A+
  17. Slt, Une coquille dans le copier-coller des expression de (gile) à fait sauter la fonction (entlast) A+
  18. Dans la même idée que zebulon_ mais avec assoc au lieu de cond: (initget "T1 T2 T3 T4 T5 P1 P2") (setq Ep (cdr (assoc (getkword "\nType de bordure [T1/T2/T3/T4/T5/P1/P2] <T2> : ") '((nil . 0.15) ("T1" . 0.12) ("T2" . 0.15) ("T3" . 0.17) ("T4" . 0.20) ("T5" . 0.24) ("P1" . 0.08)) ) ) )
  19. VDH-Bruno

    Définition d'un bloc

    Attention aux comparaisons dans ton if, l'égalité que tu utilises ne fonctionne pas _$ (= T :vlax-true) nil _$ (= T :vlax-false) nil Attention également à ton imbrication dans ton if
  20. VDH-Bruno

    Définition d'un bloc

    Bien que je préfère la manipulation des listes DXF, on peut effectivement obtenir ces informations en exploitant les propriétés définie dans l'objet BLOCK_RECORD. ((lambda (obj_blrecord) (alert (strcat (if (eq :vlax-true (vla-get-explodable obj_blrecord)) "Décomposition autorisé -> \t\t Oui" "Décomposition autorisé -> \t\t Non" ) "\n" (if (zerop (vla-get-BlockScaling obj_blrecord)) "Echelle non uniforme autorisé -> \t Oui" "Echelle non uniforme autorisé -> \t Non" ) ) ) ) (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) (cdr (assoc 2 (entget (car (entsel))))) ) ) Oui toujours, je ne te parlerai pas de la taille de l'écran, ni des perf de l'ordi j'en choquerai plus d'un… <_< A+
  21. VDH-Bruno

    Définition d'un bloc

    Bonjour, Le premier retourne le ename de la définition de bloc (0 . "BLOCK") Le second retourne le ename d'une référence de bloc inserer dans le dessin (0 . "INSERT") Oui, et plus spécifiquement dans l'aide tu as la description des codes par type d'entité. (vla-get-explodable (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) "Nom_de_ton_bloc")) A+
  22. VDH-Bruno

    Définition d'un bloc

    Bonjour rebcao, Pour compléter, la réponse d'Olivier, les options de création du bloc tel que la mise à l'échelle uniforme et la décomposition. Sont respectivement renseigné dans les codes DXF 281 et 280 de la table BLOCK_RECORD, associée à la définition du bloc. La table BLOCK_RECORD est accessible via le code 330 présent dans la définition du bloc. Pour le principe un exemple pour une sélection par pointage sur une référence de bloc ((lambda (dxf_blrecord) (alert (strcat (if (zerop (cdr(assoc 280 dxf_blrecord))) "Décomposition autorisé -> \t\t Non" "Décomposition autorisé -> \t\t Oui" ) "\n" (if (zerop (cdr(assoc 281 dxf_blrecord))) "Echelle non uniforme autorisé -> \t Oui" "Echelle non uniforme autorisé -> \t Non" ) ) ) ) (entget (cdr (assoc 330 (entget (tblobjname "block" (cdr (assoc 2 (entget (car (entsel)))))))))) ) L'équivalent sous AutoCAD visible dans l'éditeur de bloc: A+
  23. VDH-Bruno

    Définition d'un bloc

    En utilisant tblobjname pour récupérer plus directement le ename.. (cdr (assoc 280 (entget (assoc 330 (entget (tblobjname "block" "Nom_de_ton_bloc")))))) A+
  24. Bonjour, Je n'ai pas encore eu besoin de faire cela autrement Oui trés facilement avec entmake ou vla-add, un lien pour l'exemple avec entmake http://cadxp.com/topic/4615-inserer-un-bloc-sur-chaque-sommet-polyligne/page__view__findpost__p__21464 _$ (atof (getvar "ACADVER")) 17.0 Sur wikipedia il y a un tableau de correspondance entre numéro et version d'AutoCAD, si tu ne les as pas tous en tête https://en.wikipedia.org/wiki/AutoCAD A+
  25. VDH-Bruno

    quote quote

    Après réflexion, l'écriture suivante me semble plus juste… (defun map (f l) (if l (cons (eval (list f (list 'quote (car l)))) (map f (cdr l))) ) ) A+ Bruno
×
×
  • 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é