DenisHen Posté(e) le 24 février 2016 Posté(e) le 24 février 2016 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... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
-Olivier- Posté(e) le 24 février 2016 Posté(e) le 24 février 2016 Bonjour, Pour repasser les hachures en arrière plan, il y a la commande HATCHTOBACK.Olivier
Tramber Posté(e) le 24 février 2016 Posté(e) le 24 février 2016 et HPDRAWORDER ? si le setvar suffit, on ne sait jamais.L'aide dit que la variable n'est pas enregistrée. Même si elle l'est probablement dans les faits. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Glead Posté(e) le 24 février 2016 Auteur Posté(e) le 24 février 2016 C'est super c'est tout bon pour ces hachures ! Mes collègues sont super content :D Me reste juste le problème des textes. Comment es-ce que je peux agir sur l'inclinaison ? Un bit spécifique ?
DenisHen Posté(e) le 24 février 2016 Posté(e) le 24 février 2016 J'ai peut-être trouvé un poste qui en parle ICI Ce sera surement à adapter à tes besoins... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 24 février 2016 Posté(e) le 24 février 2016 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 defunEt AutoCAD me répond :Commande: TXTINCLINVERSDROIT; erreur: type d'argument incorrect: consp <Selection set: 4af> Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Glead Posté(e) le 24 février 2016 Auteur Posté(e) le 24 février 2016 (defun c:Testtext () (setq n 0) (if (setq Select (ssget "_X" '((0 . "text") (8 . "NOMDUCALQUE"))) ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (command "_-style" "" "" "" "" "380" "non" "non") ) ;_ Fin de while ) ;_ Fin de if (princ Select) (princ) ) Je pensais a un truc comme ça mais la commande style affecte seulement le style standard et du coup ne modifie rien...
DenisHen Posté(e) le 24 février 2016 Posté(e) le 24 février 2016 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") Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Glead Posté(e) le 24 février 2016 Auteur Posté(e) le 24 février 2016 Voilà se que me dit le programme : Commande: testtext_-style Entrez le nom du style de texte ou [?] <Standard>: StyleDeTexteNouveau style.Spécifiez le nom de police complet ou le nom de fichier de polices (TTF ou SHX) <txt>: PoliceTTFouSHXPolice non disponible.Commande: TESTTEXT Commande inconnue "TESTTEXT". Appuyez sur F1 pour obtenir de l'aide.Commande: TESTTEXT Commande inconnue "TESTTEXT". Appuyez sur F1 pour obtenir de l'aide.... Il y aurait pas un moyen de changer la valeur (51 . 380) sans editer le style de texte ? Je pense donc que le Lisp que tu as proposé part dans la bonne direction. Après faut-il savoir pourquoi in ne marche pas... Merci encore pour ton aide !
DenisHen Posté(e) le 25 février 2016 Posté(e) le 25 février 2016 Bon, j'ai écris ça (le midi, j'ai parfois du temps libre) pour rendre TOUS les textes "inclinés" en textes "droits" :;;; ******************************************************* ;;; Balaye les textes et supprime leur inclinaison (DenisH) ;;; ******************************************************* (defun c:TxtInclinVersDroit (/ Select ent n elst) (if (setq Select (ssget "_X" '((0 . "TEXT"))) ;_ Fin de ssget ) ;_ Fin de setq (progn (princ Select) (setq n 0) (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (setq elst (subst (cons 51 0) (assoc 51 elst) elst)) (entmod elst) ) ;_ Fin de while ) ;_ Fin de progn (princ ent) ) ;_ Fin de if ) ;_ Fin de defun Mais il faudrait ne sélectionner QUE les textes inclinés (code DXF 51) et ça, je ne sais pas faire. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Glead Posté(e) le 25 février 2016 Auteur Posté(e) le 25 février 2016 Pourquoi ne pas passer par une sélection globale des textes et forcer la valeur d'inclinaison à 0 ? Par contre pour donner la valeur d'inclinaison c'est bien une valeur en radian ? (* pi (/ x 180.0))
DenisHen Posté(e) le 25 février 2016 Posté(e) le 25 février 2016 Pourquoi ne pas passer par une sélection globale des textes et forcer la valeur d'inclinaison à 0 ? Par contre pour donner la valeur d'inclinaison c'est bien une valeur en radian ? (* pi (/ x 180.0)) D'après ce que je sais, AutoCAD travail toujours en radian... Ma routine fonctionne, et tu peux rajouter le calque dans la sélection... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Glead Posté(e) le 25 février 2016 Auteur Posté(e) le 25 février 2016 D'après ce que je sais, AutoCAD travail toujours en radian... Ma routine fonctionne, et tu peux rajouter le calque dans la sélection... Super nouvelle !! Merci à toi ! Dernière question : (defun c:HACH500 () (command "h1" "h2" "h3" "h4" "h5") ) H1.h2,h3,h4,h5 correspondent à mon defun c: pour chaque calques... Il y aurait pas un moyen de lancer une ligne de commande contenant des fonctions crée dans le même fichier lisp ?
DenisHen Posté(e) le 25 février 2016 Posté(e) le 25 février 2016 Je pense que ça fera l'affaire, mais ce n'est juste qu'une piste... (defun c:Hach500() (h1) (h2) (h3) .... )Du coup, tu pourras enlever les "c:" devant tes h1, h2, h3 pour obtenir :(defun h1 () .... ) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 25 février 2016 Posté(e) le 25 février 2016 Voici pour l'inclinaison des textes, ça fonctionne "à peu près" chez moi. J'ai quelques problème avec le code DXF 51 qui devrait être à 0 si le texte n'est pas incliné...;;; **************************************************** ;;; Balaye les textes 'droits' et les incline (DenisH) ;;; **************************************************** (defun c:TxtDroitVers80 (/ Select ent n elst) (if (setq Select (ssget "_X" '((0 . "TEXT")))) (progn (setq n 0) (while (setq ent (ssname Select n)) (setq elst (entget ent)) (if (/= (assoc 51 elst) 0) (progn (setq Incl (* pi (/ 20 200.0))); 20 = angle d'inclinaison en grades (setq elst (subst (cons 51 Incl) (assoc 51 elst) elst)) (entmod elst) ) ;_ Fin de progn ) ;_ Fin de if (setq n (1+ n)) ) ;_ Fin de while ) ;_ Fin de progn (princ ent) ) ;_ Fin de if (princ) ) ;_ Fin de defun Amuse-toi bien... Et tiens moi au courant... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Glead Posté(e) le 25 février 2016 Auteur Posté(e) le 25 février 2016 Un GRAND merci à tous le monde !! J'ai exactement se que je recherchais ! Je vous donne le résultat (même si il doit pas être clean du tout à vos yeux...) (defun H1 () (setq n 0) (if (setq Select (ssget "_X" '((0 . "LWPOLYLINE") (8 . "01211")(70 . 1))) ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (if (not (tblsearch "layer" "01211_Hach")) (command "-calque" "n" "01211_Hach" "") (setvar "clayer" "01211_Hach") ) ;_ Fin de if (command "_-hatch" "P" "SOLID" "s" ent "" "") ) ;_ Fin de while ) ;_ Fin de if (princ Select) (princ) ) (defun H2 () (setq n 0) (if (setq Select (ssget "_X" '((0 . "LWPOLYLINE") (8 . "01321")(70 . 1))) ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (if (not (tblsearch "layer" "01321_Hach")) (command "-calque" "n" "01321_Hach" "") (setvar "clayer" "01321_Hach") ) ;_ Fin de if (command "_-hatch" "P" "SOLID" "s" ent "" "") ) ;_ Fin de while ) ;_ Fin de if (princ Select) (princ) ) (defun H3 () (setq n 0) (if (setq Select (ssget "_X" '((0 . "LWPOLYLINE") (8 . "01251")(70 . 1))) ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (if (not (tblsearch "layer" "01251_Hach")) (command "-calque" "n" "01251_Hach" "") (setvar "clayer" "01251_Hach") ) ;_ Fin de if (command "_-hatch" "P" "DOTS" 1.2 0 "s" ent "" "") ) ;_ Fin de while ) ;_ Fin de if (princ Select) (princ) ) (defun H4 () (setq n 0) (if (setq Select (ssget "_X" '((0 . "LWPOLYLINE") (8 . "01252")(70 . 1))) ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (if (not (tblsearch "layer" "01252_Hach")) (command "-calque" "n" "01252_Hach" "") (setvar "clayer" "01252_Hach") ) ;_ Fin de if (command "_-hatch" "P" "DOTS" 2.2 0 "s" ent "" "") ) ;_ Fin de while ) ;_ Fin de if (princ Select) (princ) ) (defun H5 () (setq n 0) (if (setq Select (ssget "_X" '((0 . "LWPOLYLINE") (8 . "01232")(70 . 1))) ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (if (not (tblsearch "layer" "01232_Hach")) (command "-calque" "n" "01232_Hach" "") (setvar "clayer" "01232_Hach") ) ;_ Fin de if (command "_-hatch" "P" "VIGNE" 0.5 0 "s" ent "" "") ) ;_ Fin de while ) ;_ Fin de if (princ Select) (princ) ) (defun T1 (/ Select ent n elst) (if (setq Select (ssget "_X" '((0 . "TEXT")(8 . "01219"))) ;_ Fin de ssget ) ;_ Fin de setq (progn (princ Select) (setq n 0) (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (setq elst (subst (cons 51 0.314159265) (assoc 51 elst) elst)) (entmod elst) ) ;_ Fin de while ) ;_ Fin de progn (princ ent) ) ;_ Fin de if ) ;_ Fin de defun (defun T2 (/ Select ent n elst) (if (setq Select (ssget "_X" '((0 . "TEXT")(8 . "01139"))) ;_ Fin de ssget ) ;_ Fin de setq (progn (princ Select) (setq n 0) (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (setq elst (subst (cons 51 0.314159265) (assoc 51 elst) elst)) (entmod elst) ) ;_ Fin de while ) ;_ Fin de progn (princ ent) ) ;_ Fin de if ) ;_ Fin de defun (defun c:HACH500 () (h1) (h2) (h3) (h4) (h5) (t1) (t2) ) Par contre j'ai pas compris pourquoi je devais rentrer la valeur de 20g en radian pour obtenir une inclinaison de 380g... Merci spécial à DenisH :D
DenisHen Posté(e) le 25 février 2016 Posté(e) le 25 février 2016 Si ça te convient, c'est cool... ;) Mais l'autre solution (proposée à l'origine par Tramber) que je t'ai modifié au poste n°22 était vachement plus propre et t'évitais de parcourir des dizaines de lignes (plus de 130)... Si tu dois changer UN seul truc, il faudra le faire autant de fois que tu as de sous-routines... C'est dommage. Surtout que c'est presque toujours le même code... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Glead Posté(e) le 25 février 2016 Auteur Posté(e) le 25 février 2016 J'ai essayé mais les transitions ne se faisait pas correctement... Du coup j'ai préféré continuer sur un code que je comprends
DenisHen Posté(e) le 25 février 2016 Posté(e) le 25 février 2016 Tu as raison dans le sens où si tu comprends ce code, tu pourras le modifier. ;) En plus, pour une fois que je peux rendre un peu à CadXP tous ce qu'il m'a donné ! ! Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Tramber Posté(e) le 25 février 2016 Posté(e) le 25 février 2016 Moi je vois que tu n'as pas utilisé Etablir de la fonction -calques :huh: Alors pour les angles, c'est simple : AutoCad travaille toujours en radian, de l'intérieur. A toi de batir une routine qui transforme en radians tes désirs selon AUNITS.Tu verras, on s'y fait vite. Bravo en tous cas.Prochaine étape : diviser ton code par 4 en volume. En effet tes commandes H1 à 6 doivent devenir 1 seule. Très facile tu n'as que 3 paramètres : nom_calquenom_hach ech_hach Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 25 février 2016 Posté(e) le 25 février 2016 (defun H1a6 (calq typh echh) (setq n 0) (if (setq Select (ssget "_X" (list(cons 0 "LWPOLYLINE") (cons 8 calq)(cons 70 1))) ) ;_ Fin de setq (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (command "-calque" "e" (strcat calq"_Hach") "") (if(= typh "SOLID") (command "_-hatch" "P" "SOLID" "s" ent "" "") (command "_-hatch" "P" typh echh 0 "s" ent "" "")) ) ;_ Fin de while ) ;_ Fin de if (princ) ) (H1a6 "01211" "SOLID" nil) (H1a6 "01232" "VIGNE" 0.5)Piège du SOLID Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Glead Posté(e) le 4 mars 2016 Auteur Posté(e) le 4 mars 2016 Bonjour, je revient juste vous demander une info... Je comprend pas comment revenir chercher une sélection et soumettre une ligne de commande à cette sélection... ; 1 - Sélection des objet du calques 01611 OK ; 2 - Modification de l'épaisseur de polyligne à 0.2 au 1:500 ; 3 - Création du nouveau calque ; 4 - Déplacement des polylignes dans le nouveau calque (defun BF1 (/ ) (setq n 0) (if (setq Select (ssget "_X" '((0 . "LWPOLYLINE") (8 . "01611"))) ) (while (setq ent (ssname Select n)) (setq elst (entget ent) n (1+ n) ) ;_ Fin de setq (command "pedit" "LA" 0.2 "") ; Commande ok ) ) ) (defun c:500 () (BF1) )
-Olivier- Posté(e) le 7 mars 2016 Posté(e) le 7 mars 2016 Bonjour Glead, revenir chercher une sélectionTon jeu de sélection est enregistré sous la variable Select et donc réutilisable par simple rappel.soumettre une ligne de commande à cette sélection... Là, je ne te suis pas trop. Si tu utiliser ton jeu de sélection dans une commande Autocad, voici un exemple :(setq ss (ssget)) ;création du jeu de sélection ss (command "_erase" ss "") ; utilisation du jeu de sélection ss dans la commande _erase Olivier
Glead Posté(e) le 7 mars 2016 Auteur Posté(e) le 7 mars 2016 J'ai réussi a faire se que je voulais... merci de ton aide ! (defun newcalques (/ ) (if (not (tblsearch "layer" "Bien-fond")) (command "-calque" "n" "Bien-fond" "") (setvar "clayer" "Bien-fond") ) ) (defun BF1 (/ ) (setq ss (ssget "_X" '((0 . "LWPOLYLINE") (8 . "01611"))) ) (progn (command "pedit" "M" ss "" "LA" 0.2 "") ; Commande ok (command "_change" ss "" "p" "CA" "Bien-fond" "") (princ ss) (princ) ) ) (defun c:500 () (newcalques) (BF1) )
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