-
Compteur de contenus
4 029 -
Inscription
-
Dernière visite
-
Jours gagnés
21
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par DenisHen
-
Bonjour à tous, et merci pour votre aide. Olivier : effectivement, tu avais raison, c'est la ligne suivante qui déconne. Mais comme le setq avait plusieurs variables, c'est le tout qu'il a refusé. Pour voir d'où venait l'erreur, j'ai codé ainsi : ....... (princ "\nDrapeau 02") (setq elst (car Select)) (princ "\nDrapeau 03") (setq Coord (cdr (assoc 10 elst))) ...... Et c'est la variable Coord qui ne veut pas de (cdr (assoc 10 elst)) Et je ne vois pas pourquoi... fabcad : merci pour ces fonctions, mais elles sont un peu trop complexes pour moi... Encore merci à vous... Denis...
-
Bonjour Olivier, et merci de ton aide. je pense que là où ça déconne, c'est justement dans attribution de elst, car ma sélection existe déjà à la première ligne... Je n'arrive pas à faire la même chose plus bas... merci encore de m'aider...
-
Je n'arrive pas à comprendre pourquoi le ssname bloque, c'est la même structure qu'une autre routine qui fonctionne correctement : (defun c:PrenonNOM () (setq Select (entsel "\nChoisissez votre texte :")) (wcmatch (cdr (assoc 0 (setq Texte (entget (car Select))))) "*") (setq Texte (cdr (assoc 1 Texte))) (setq Texte (str2lst Texte " ")) (setq DebTxt (Nompropre (lst2str (reverse (cdr (reverse Texte))) " ")) ) ;_ Fin de setq (setq FinTxt (strcase (last Texte))) (setq Texte (strcat DebTxt " " FinTxt)) (princ Texte) (princ "\nDrapeau 01") ;;; (princ "\nDrapeau 02") (setq elst (ssname Select 0) ;C'est ici que ça déconne ******************** Coord (cdr (assoc 10 elst)) Haut (cdr (assoc 40 elst)) Rot (cdr (assoc 50 elst)) ) ;_ Fin de setq (princ "\nDrapeau 03") (setvar "clayer" (cdr (assoc 8 elst))) (command "_erase" ent "") (setq Coord (strcat (rtos (car Coord) 2 3) "," (rtos (cadr Coord) 2 3)) ) ;_ Fin de setq (setq Rot (+ Rot (/ pi 2))) (command "texte" "j" "mc" Coord Haut (angtos Rot 2 3) Texte) ;_ Fin de command (command "_move" "_last" "" "_non" Coord pause) ;;; ;;; ;;; (princ) ) ;_ Fin de defun
-
Au temps pour moi... C'était les princ qui déconnaient, voilà qui est mieux : (defun c:PrenonNOM () (setq Select (car (entsel "\nChoisissez votre texte :"))) (wcmatch (cdr (assoc 0 (setq Texte (entget Select)))) "*") (setq Texte (cdr (assoc 1 Texte))) (setq Texte (str2lst Texte " ")) (setq DebTxt (Nompropre (lst2str (reverse (cdr (reverse Texte))) " "))) (setq FinTxt (strcase (last Texte))) (setq Texte (strcat DebTxt " " FinTxt)) (princ Texte) (princ) )
-
Bon, j'ai fais évoluer le bidule, mais ça plante toujours... (defun c:PrenonNOM () (setq Select (car (entsel "\nChoisissez votre texte :"))) (wcmatch (cdr (assoc 0 (setq Texte (entget Select)))) "*") (setq Texte (cdr (assoc 1 Texte))) (princ (strcat "\nDrapeau 00" Texte)) (setq Texte (str2lst Texte " ")) (princ (strcat "\nDrapeau 01" Texte)) (setq DebTxt (Nompropre (reverse (cdr (reverse Texte))))) (princ (strcat "\nDrapeau 02" DebTxt)) (setq FinTxt (strcase (last Texte))) (princ (strcat "\nDrapeau 03" FinTxt)) (setq Texte (strcat DebTxt " " FinTxt)) (princ (strcat "\nDrapeau 04" Texte)) (princ) ) ;_ Fin de defun Et AutoCAD me répond : Et je ne comprend pas, car dans la Console, tout a l'air bon...
-
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
Je pense que cette routine ne fonctionnera pas, car elle change les propriétés de tous les styles de textes existant mais je ne met pas à jour les textes existants. En tout cas pas l'inclinaison des textes déjà existants... Pour ta commande, essai ça : (command "_-style" "StyleDeTexte" "PoliceTTFouSHX" "" "" "380" "non" "non") -
Merci capde06 pour ta précieuse aide... ;) J'ai commencé à écrire un truc, mais ça plante... : ;;;**************************************** ;;; Transforme un text en casse Prénon NOM ;;;**************************************** (defun c:PrenonNOM () (setq Select (car (entsel "\t\tChoisissez votre texte :"))) (wcmatch (cdr (assoc 0 (setq Texte (entget Select)))) "*") (setq Texte (cdr (assoc 1 Texte))) (princ Texte) (setq Texte (str2lst (Texte " "))) (princ Texte) (setq DebTxt (reverse (cdr (reverse Texte)))) (princ DebTxt) (setq FinTxt (last Texte)) (princ FinTxt) (setq Texte (strcat DebTxt " " FinTxt)) (princ Texte) (princ) ) ;_ Fin de defun ;; STR2LST (de (gile)) ;; Transforme un chaine avec séparateur en liste de chaines ;; Arguments ;; str : la chaine à transformer en liste ;; sep : le séparateur ;; Exemples ;; (str2lst "a b c" " ") -> ("a" "b" "c") ;; (str2lst "1,2,3" ",") -> ("1" "2" "3") ;; (mapcar 'read (str2lst "1,2,3" ",")) -> (1 2 3) (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) ;_ Fin de cons (list str) ) ;_ Fin de if ) ;_ Fin de defun ;; Et AutoCAD me répond :
-
Personalisation de Ruban
DenisHen a répondu à un(e) sujet de Alain dans Personnalisation, macros, DIESEL
Je pensais que ça pouvait peut-être "oublié", avec le nombre de poste qu'il y a eu... :huh: Mais j'ai précisé que ça pouvait être "rémunéré"... ;) -
Bonjour à tous... Voilà, j'ai besoin de changer la casse de plusieurs textes (des noms de rue, de parc...). Mon client préfère (et moi aussi) la casse traditionnelle, c'est à dire les prénoms n'ont que leur première lettre en majuscule et les noms sont en majuscule. Par exemple : Jean-Baptiste POQUELIN Jusqu'à présent, j'utilisais la routine de (gile), nommée "NomPropre", mais je dois maintenant faire la mienne. J'avais pensé à utiliser NomPropre pour tout puis passer en majuscule le dernier mot du texte complet... Je cherche donc comment supprimer la dernière occurrence d'une liste, qui est mon texte complet. Exemple : Texte=NomPropre(ma chaine sauf dernière occurrence) + strcase(dernière occurrence) Si quelqu'un a une astuce ou un conseil, je suis preneur... Denis...
-
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
Personnellement, j'ai écris ceci mais ça ne fonctionne pas... Faut dire aussi que je ne suis pas un "bon" en LiSP... Si une bonne âme pouvait me filer un coup de main... ;;; *************************************************** ;;; Balaye les textes et supprime leur inclinaison ;;; *********************************************** (defun c:TxtInclinVersDroit (/) (if (setq Select (ssget "_X" '((0 . "TEXT")))) ;_ Fin de setq (progn (setq Select (subst '(51 . 0) '(51 . 1) Select)) (entmod Select) ) ;_ Fin de progn ) ;_ Fin de if (princ) ) ;_ Fin de defun Et AutoCAD me répond : -
Personalisation de Ruban
DenisHen a répondu à un(e) sujet de Alain dans Personnalisation, macros, DIESEL
Bonjour à tous. Si quelqu'un trouve des tutos en français, je suis preneur, même si un "pro" en fait avec un téléchargement via AlloPass... <Humour ON> Perso, j'aime ne me servir que de la souris, ça me permet de poser la tête sur l'autre main. En position "semi-sièste" avec l'option "yeux-mi-clos"... <Humour OFF> -
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
J'ai peut-être trouvé un poste qui en parle ICI Ce sera surement à adapter à tes besoins... -
Rectification... Elle fonctionne, mais AutoCAD me répond toujours "Commande inconnue"... Comprend pô...
-
Je me suis fais doublé ! ! ! Mais je cherchais pourquoi cette routine ne fonctionnait pas : ;;;Place tout ce qui est dans le calque _XRef en arrière plan (defun c:XrefDessous (/) (if (setq Select (ssget "_X" '((8 . "_Xref")))) ;_ Fin de setq (command "ordretrace" Select "" "ar" "") ) ;_ Fin de if (princ) ) ;_ Fin de defun Et AutoCAD me répond ça : Alors qu'il me propose cette commande...
-
Personnellement, je place toujours mes Xref dans le même calque : "_XRef", du coup, je pense que cette routine devrais fonctionner, mais je ne l'ai pas essayée... (defun c:XrefDessous () (if (setq Select (ssget "_X" '((8 . "_Xref")))) ;_ Fin de setq (command "ordretrace" Select "" "ar" "") ) ;_ Fin de if ) ;_ Fin de defun Denis...
-
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
C'est que je créé un calque hachures pour mieux séparer les types d'entités. L'erreur vient bien de moi... De plus, pour une meilleur utilisation des polylignes, qui sont donc passées "sous" les hachures, il serais judicieux de faire un petit ordretrace à la fin de mafonc pour repasser les polylignes devant... Non ? Avec un petit (if (setq Select (ssget "_X" '((0 . "HATCH") (cons 8 (strcat Calq "_Hach"))))) ;_ Fin de setq (command "ordretrace" Select "" "ar" "") ) ;_ Fin de if Ce qui donne au total : (defun c:Hach500 () (setq old_clayer (getvar "clayer")) (command "-hachures" "p" "SOLID" 1.0 0 "") ;Type de hachure pour le calque qui suit (mafonc "01211") (command "-hachures" "p" "SOLID" 1.0 0 "") (mafonc "01232") (command "-hachures" "p" "SOLID" 1.0 100 "") (mafonc "01321") (command "-hachures" "p" "SOLID" 1.0 100 "") (mafonc "01251") (command "-hachures" "p" "SOLID" 1.0 100 "") (mafonc "01252") (setvar "clayer" old_clayer) ) ;_ Fin de defun (defun mafonc (calq /) (setq sel (ssget "X" (list (cons 0 "LWPOLYLINE") (cons 8 calq) (cons 70 1)))) (setq cont 0) (repeat (sslength sel) (setq entite (ssname sel cont)) (if (not (tblsearch "layer" (strcat Calq "_Hach"))) (command "-calque" "n" (strcat Calq "_Hach") "") (setvar "clayer" (strcat Calq "_Hach")) ) ;_ Fin de if (command "-hachures" "S" entite "" "") (setq cont (1+ cont)) ) ;_ Fin de repeat (if (setq Select (ssget "_X" '((0 . "HATCH") (cons 8 (strcat Calq "_Hach"))))) ;_ Fin de setq (command "ordretrace" Select "" "ar" "") ) ;_ Fin de if ) ;_ Fin de defun Amicalement... -
Il y a toujours une part de vérité dans l'humour... ;)
-
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
Remarque judicieuse, et c'est ce que je faisais avant. En plus, cette option (établir) créé le calque s'il n'existe pas et le rend actif dans tout les cas. Je ne l'avais pas vu, mais il y a un (setvar "CLAYER" calq) au début de la boucle... Totalement inutile... La routine corrigée : (defun c:Hach500 () (command "-hachures" "p" "SOLID" 1.0 0 "") ;Type de hachure pour le calque qui suit (mafonc "01211") (command "-hachures" "p" "SOLID" 1.0 0 "") (mafonc "01232") (command "-hachures" "p" "SOLID" 1.0 100 "") (mafonc "01321") (command "-hachures" "p" "SOLID" 1.0 100 "") (mafonc "01251") (command "-hachures" "p" "SOLID" 1.0 100 "") (mafonc "01252") ) ;_ Fin de defun (defun mafonc (calq /) (setq old_clayer (getvar "clayer")) (setq sel (ssget "X" (list (cons 0 "LWPOLYLINE") (cons 8 calq) (cons 70 1)))) (setq cont 0) (repeat (sslength sel) (setq entite (ssname sel cont)) (if (not (tblsearch "layer" (strcat Calq "_Hach"))) (command "-calque" "n" (strcat Calq "_Hach") "") (setvar "clayer" (strcat Calq "_Hach")) ) ;_ Fin de if (command "-hachures" "S" entite "" "") (setq cont (1+ cont)) ) ;_ Fin de repeat (setvar "clayer" old_clayer) ) ;_ Fin de defun Mais le tblsearch est aussi intéressant pour d'autre "recherche"... C'est une façon d'apprentissage que j'ai reçu (ici notamment), et donc, que je transmet... -
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
Salut Glead. A la fin de ton premier (princ), il faut supprimer la parenthèse fermante à la ligne suivante (ligne 19)... Personnellement, j'utiliserais ça : defun c:Hach500 () (command "-hachures" "p" "SOLID" 1.0 0 "") ;Type de hachure pour le calque qui suit (mafonc "01211") (command "-hachures" "p" "SOLID" 1.0 0 "") (mafonc "01232") (command "-hachures" "p" "SOLID" 1.0 0 "") (mafonc "01321") (command "-hachures" "p" "SOLID" 1.0 0 "") (mafonc "01251") (command "-hachures" "p" "SOLID" 1.0 0 "") (mafonc "01252") ) ;_ Fin de defun (defun mafonc (calq /) (setvar "CLAYER" calq) (setq sel (ssget "X" (list (cons 0 "LWPOLYLINE") (cons 8 calq) (cons 70 1)))) (setq cont 0) (repeat (sslength sel) (setq entite (ssname sel cont)) (if (not (tblsearch "layer" (strcat Calq "_Hach"))) (command "-calque" "n" (strcat Calq "_Hach") "") (setvar "clayer" (strcat Calq "_Hach")) ) ;_ Fin de if (command "-hachures" "S" entite "" "") (setq cont (1+ cont)) ) ;_ Fin de repeat ) ;_ Fin de defun -
Génial, c'est ma bible dès que je veux faire une routine ! ! Merci à (gile)... Une fois de plus... PS : à la fin du chapitre 11, il y a aussi \t qui insert une tabulation... Encore merci pour ce partage... Denis...
-
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
(defun mafonc(calq /) (setvar "CLAYER" calq) (setq sel(ssget "X"(list(cons 0 "LWPOLYLINE")(cons 8 calq)(cons 70 1)))) (setq cont 0) (repeat(sslength sel) (setq entite(ssname sel cont)) (command "-hachures" "S" entite "" "") (setq cont(1+ cont)) )) (defun c:HachPolyCalq () (command "-hachures" "p" "ANGLE" 1.0 0 "") (mafonc "0123") (command "-hachures" "p" "Vigne" 1.0 0 "") (mafonc "0124") (command "-hachures" "p" "Vigne" 1.0 100 "") (mafonc "0125") (command "-hachures" "p" "ANGLE" 1.0 100 "") (mafonc "0126") ) En gros, tu défini le type de hachure pour les prochaines commandes "hachures". Je ne l'ai pas testé mais je pense que ça devrait fonctionner... Bon, je file aussi, pour la même raison... -
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
Glead : tu peut ajouter (if (setq Select (ssget "_X" '((0 . "HATCH")))) ;_ Fin de setq (command "ordretrace" Select "" "ar" "") ) ;_ Fin de if après le "_ Fin de if" pour passer les hachures en arrière plan Olivier : effectivement, tu as raison... -
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
Content d'avoir rendu service... Pour les hachures "Vigne", remplace la ligne (command "_-hatch" "s" ent "" "") par la ligne (command "_-hatch" "p" "vigne" 1.00 0.00 "s" ent "" "")Sachant que 1.00 est la taille et que 0.00 est la rotation. Voilà... -
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
Voici un petit LiSP que je viens de t'écrire... Tu peut le modifier selon tes besoins... (defun c:TestHach () (setq n 0) (if (setq Select (ssget "_X" '((0 . "LWPOLYLINE") (8 . "01323"))) ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (if (not (tblsearch "layer" "01323_Hach")) (command "-calque" "n" "01323_Hach" "") (setvar "clayer" "01323_Hach") ) ;_ Fin de if (command "_-hatch" "s" ent "" "") ) ;_ Fin de while ) ;_ Fin de if (if (setq Select (ssget "_X" '((0 . "HATCH")))) ;_ Fin de setq (command "ordretrace" Select "" "ar" "") ) ;_ Fin de if (princ) ) Tu peut aussi faire un foreach pour boucler sur une liste de calque... Denis... -
[Résolu] Lisp modifications d'attributs et hachures
DenisHen a répondu à un(e) sujet de Glead dans Débuter en LISP
Bonjour Glead, Petite question, les hachures sont dans le même calque que les polylignes fermées ? Si oui, ce sera difficile de sélectionner la polyligne puisqu'elle sera créée après, donc, dessus. Il faudra donc prévoir un "OrdreTrace". Si non, quel sera le nom de ce calque ? Et quelle type de hachures ? Des "Solides" ? En tous cas : 1. sélectionner toutes tes lwpolyline du calque concerné avec un ssget, 2. fouiller l'ensemble de la sélection avec un while, 3. créer le calque contenant les hachures s'il n'existe pas, 4. créer la hachure avec un command, 5. sortir du while. Peut-être un foreach pour faire les 5 calques différents. Denis...
