DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 Vous voyez les vieux cela peut parfois servir a qq chose !? ! ! ! VIVA EL DECAPODE ! ! ! Je ne l'ai pas vu venir celle-là... ;) Hydro8, essaye avec ce nouveau code :;;; *********************************************************** ;;; Dessine un contour, puis place un texte incrémenté et la ;;; surface dans un multitexte et dans des Xdata ;;; Pour Hydro8 de CadXP.com ;;; *********************************************************** (defun c:Hydro8_Poly (/ old_osmd PrefixIncrement ValIncrement Option1 Option2 MText EcritText) (princ "\nDéveloppé par Denis H. (v:2.0)") ;; Applique une matrice de transformation à un vecteur (Vladimir Nesterovsky) (defun mxv (m v) (mapcar (function (lambda (r) (apply '+ (mapcar '* r v)))) m)) ;_ Fin de defun (defun EcritText (/ xSurf xMatri Pt_Deb_Fle) ;; (setq xMatri (strcat PrefixIncrement (itoa ValIncrement))) (SetXdataForApplication (entlast) "Matri" (list (cons 1000 xMatri))) (setq xSurf (rtos (getpropertyvalue (entlast) "Area") 2 1)) (SetXdataForApplication (entlast) "Surf" (list (cons 1000 xSurf))) ;; (setq Pt_Deb_Fle (getpoint "\nCliquer l'emplacement du texte :")) ;_ Fin de setq ;; (initget "Altitudes sansProfondeur sansHauteur sansLimite") (setq Option3 (getkword (strcat "\nChoix des textes [Altitudes/sansProfondeur/sansHauteur/sansLimite] <Altitudes> : ") ;_ Fin de strcat ) ;_ Fin de getkword ) ;_ Fin de setq (cond ((= Option3 "Altitudes") (setq Opt3 "Altitudes")) ((= Option3 "sansProfondeur") (setq Opt3 "sans profondeur")) ((= Option3 "sansHauteur") (setq Opt3 "sans hauteur")) ((= Option3 "sansLimite") (setq Opt3 "sans limite")) (T (setq Opt3 "Altitudes")) ) ;_ Fin de cond (setq MText (strcat "\\H1.2\\L" PrefixIncrement (itoa ValIncrement) "\\P\\H1S=" xSurf "m²\\P" Opt3 "\\l")) (command "_.-MTEXT" Pt_Deb_Fle "J" "MC" "H" 1.0 Pt_Deb_Fle MText "") ;; ;; ;;;Défini les quatre coins du MText de (gile) (princ "\nDéfini les quatre coins du MText de (gile)") (setq MTxt (entlast)) (setq elst (entget (entlast))) (if (= "MTEXT" (cdr (assoc 0 (entget (entlast))))) (setq nor (cdr (assoc 210 elst)) ref (trans (cdr (assoc 10 elst)) 0 nor) rot (angle '(0 0 0) (trans (cdr (assoc 11 elst)) 0 nor)) wid (cdr (assoc 42 elst)) hgt (cdr (assoc 43 elst)) jus (cdr (assoc 71 elst)) org (list (cond ((member jus '(2 5 8)) (/ wid -2)) ((member jus '(3 6 9)) (- wid)) (T 0.0) ) ;_ Fin de cond (cond ((member jus '(1 2 3)) (- hgt)) ((member jus '(4 5 6)) (/ hgt -2)) (T 0.0) ) ;_ Fin de cond ) ;_ Fin de list plst (mapcar (function (lambda (p) (mapcar '+ org p))) (list (list (- 0.1) (- 0.1)) (list (+ wid 0.1) (- 0.1)) (list (+ wid 0.1) (+ hgt 0.1)) (list (- 0.1) (+ hgt 0.1)) ) ;_ Fin de list ) ;_ Fin de mapcar ) ;_ Fin de setq (setq box (textbox elst) ref (cdr (assoc 10 elst)) rot (cdr (assoc 50 elst)) plst (list (list (- (caar box) 0.1) (- (cadar box) 0.1)) (list (+ (caadr box) 0.1) (- (cadar box) 0.1)) (list (+ (caadr box) 0.1) (+ (cadadr box) 0.1)) (list (- (caar box) 0.1) (+ (cadadr box) 0.1)) ) ;_ Fin de list ) ;_ Fin de setq ) ;_ Fin de if (setq mat (list (list (cos rot) (- (sin rot)) 0) (list (sin rot) (cos rot) 0) '(0 0 1)) ;_ Fin de list plst (mapcar (function (lambda (p) (mapcar '+ (mxv mat p) (list (car ref) (cadr ref)))) ;_ Fin de lambda ) ;_ Fin de function plst ) ;_ Fin de mapcar ) ;_ Fin de setq (setq Pt1 (list (car (nth 0 plst)) (cadr (nth 0 plst)))) (setq Pt2 (list (car (nth 1 plst)) (cadr (nth 1 plst)))) (setq Pt3 (list (car (nth 2 plst)) (cadr (nth 2 plst)))) (setq Pt4 (list (car (nth 3 plst)) (cadr (nth 3 plst)))) (setvar "osmode" 0) ;; (command "_.pline" Pt1 Pt2 Pt3 Pt4 Pt1 "") ;_ Fin de command ;;; paramètres de la flèche (princ "\nDébut calcul flèche") (setq Long 2 ;; Longueur de la tête de la flèche Larg 1 ;; Largeur de du pied de la flèche Pt_Deb_Fle (getpoint "\nPointe de la petite flèche : ") Pt_Fin_Fle (getpoint Pt_Deb_Fle "\nPied de la flèche : ") Pt_Pied_Fle (polar Pt_Deb_Fle (angle Pt_Deb_Fle Pt_Fin_Fle) Long) ) ;_ Fin de setq (princ "\nDrapeau 12") (command "_.pline" Pt_Deb_Fle "_w" 0 Larg Pt_Pied_Fle "_w" 0 0 Pt_Fin_Fle "") (vlax-ldata-put "DenisH" "ValIncrement" (+ ValIncrement 1)) (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement")) ) ;_ Fin de defun ;;; Active le début de l'undo (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq old_cmdecho (getvar "cmdecho") old_osmode (getvar "osmode") ) ;_ Fin de setq (command "-calque" "e" "MARTY-SURFACES_FRACTIONS" "co" "u" "255,0,255" "MARTY-SURFACES_FRACTIONS" "") ;_ Fin de command ;_ Fin de command ;_ Fin de command (setq PrefixIncrement (vlax-ldata-get "DenisH" "PrefixIncrement" "VarB")) (if (= PrefixIncrement nil) (vlax-ldata-put "DenisH" "PrefixIncrement" "VarB") ) ;_ Fin de if (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement" 0)) (if (or (= ValIncrement "") (= ValIncrement nil)) (progn (vlax-ldata-put "DenisH" "ValIncrement" 0) (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement")) ) ;_ Fin de progn ) ;_ Fin de if (if (not (tblsearch "style" "Surface")) (command "-style" "Surface" "arial.ttf" "" "" "" "" "" "") ) ;_ Fin de if (command "textstyle" "Surface") (while (/= (type Option1) 'LIST) (initget "Préfix Nombre Suivant") (setq Option1 (getkword (strcat "\nOptions des textes [Préfix/Nombre/Suivant] <" PrefixIncrement (itoa ValIncrement) "> : ") ;_ Fin de strcat ) ;_ Fin de getkword ) ;_ Fin de setq (cond ((= Option1 "Préfix") (setq PrefixIncrement (getstring (strcat "\nSaisir le préfix de l'incrémentation <" PrefixIncrement "> : ")) ;_ Fin de getstring ) ;_ Fin de setq (vlax-ldata-put "DenisH" "PrefixIncrement" PrefixIncrement) ) ((= Option1 "Nombre") (setq ValIncrement (getint "\nSaisir le prochain numéro de l'incrémentation : ")) ;_ Fin de getstring (if (or (= ValIncrement "") (= ValIncrement nil)) (vlax-ldata-put "DenisH" "ValIncrement" 0) (vlax-ldata-put "DenisH" "ValIncrement" ValIncrement) ) ;_ Fin de if ) ((= Option1 "Suivant") (initget "Contour Polyligne") (setq Option2 (getkword "\nOptions des textes [Contour/Polyligne] <Contour> : ") ;_ Fin de strcat ) ;_ Fin de getkword (cond ((or (= Option2 "Contour") (= Option2 nil)) ;_ Fin de or (while (princ "\nChoisir le contour :") (command "-contour" "O" "O" "P" "" pause "") (EcritText)) ) ((= Option2 "Polyligne") (while (princ "\nSaisisser le contour :") (command "_.pline" (while (not (zerop (getvar "cmdactive"))) (command pause)) ;_ Fin de while ) ;_ Fin de command (EcritText) ) ;_ Fin de while ) ) ;_ Fin de cond ) ) ;_ Fin de cond ) ;_ Fin de while (setvar "osmode" old_osmode) (setvar "cmdecho" old_cmdecho) (setvar "plinewid" 0) ;;; Fin de l'undo (vla-endundomark doc) (princ) ) ;_ Fin de defun 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Oui encore merci, on dirait qu'il y a des lisp de base qu'il faudrait que j'ai. Alors alors, concernant le dernier code il m'affiche toujours VAR au début et fonctionne normalement si je change le préfix. Peut-être est ce lié à une variable non défini au premier lancement du code ? Est ce que c'est possible et pas trop chiant :- si pas de point pour le texte, le mettre au milieu du polygone ?- un menu pour la flèche pour dire si on a besoin d'une flèche (donc contour + flèche) ou si pas besoin (donc pas de contour ni de flèche)- tracer le cadre du texte que sur deux points ? j'ai testé d'enlever deux points du pline mais ça à pas l'air de marcher.
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 Alors alors, concernant le dernier code il m'affiche toujours VAR au début et fonctionne normalement si je change le préfix. Peut-être est ce lié à une variable non défini au premier lancement du code ?Ça se passe ici, change les deux "VarB" par ce que tu veux par défaut : (setq PrefixIncrement (vlax-ldata-get "DenisH" "PrefixIncrement" "VarB")) (if (= PrefixIncrement nil) (vlax-ldata-put "DenisH" "PrefixIncrement" "VarB") ) ;_ Fin de if - si pas de point pour le texte, le mettre au milieu du polygone ?Beaucoup trop compliqué pour moi... :huh: - un menu pour la flèche pour dire si on a besoin d'une flèche (donc contour + flèche) ou si pas besoin (donc pas de contour ni de flèche)Je regarde ça... - tracer le cadre du texte que sur deux points ? j'ai testé d'enlever deux points du pline mais ça à pas l'air de marcher.Pareil, je regarde... 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Désolé pour VarB j'aurais dû le voir tout seul <_< Je comprend pour le milieu du polygone, en plus suivant le polygone ca doit faire quelque chose de bizarre. Peut-être peut-on bloquer la commande pour ne pas faire "entrée" ou "espace" à ce moment là sinon la commande continue mais ne donnera rien.
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Pour le traite sur deux points, j'ai rien dit ça fonctionne, j'ai confondu avec le surlignage :unsure:
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 Bon, j'ai fais comme pour moi (qui, une fois terminée, ressemble énormément à une commande que j'ai faite l'année dernière). J'ai raccourci le nombre de clics, désormais, toutes les options sont sur une seule ligne, et par défaut, c'est Contour qui est lancée. Voici le nouveau code que je te propose :;;; *********************************************************** ;;; Dessine un contour, puis place un texte incrémenté et la ;;; surface dans un multitexte et dans des Xdata ;;; Pour Hydro8 de CadXP.com ;;; *********************************************************** (defun c:Hydro8_Poly (/ old_osmd PrefixIncrement ValIncrement Option1 Option2 MText EcritText) (princ "\nDéveloppé par Denis H. (v:2.1)") (defun mxv (m v) (mapcar (function (lambda (r) (apply '+ (mapcar '* r v)))) m)) ;_ Fin de defun (defun EcritText (/ xSurf xMatri Pt_Deb_Fle Pt_Fin_Fle Pt_Pied_Fle) ;; (setq xMatri (strcat PrefixIncrement (itoa ValIncrement))) (SetXdataForApplication (entlast) "Matri" (list (cons 1000 xMatri))) (setq xSurf (rtos (getpropertyvalue (entlast) "Area") 2 1)) (SetXdataForApplication (entlast) "Surf" (list (cons 1000 xSurf))) ;; ;;; Paramètres de la flèche (princ "\nDébut calcul flèche") (setq Long 2 ;; Longueur de la tête de la flèche Larg 1 ;; Largeur de du pied de la flèche Pt_Deb_Fle (getpoint "\nPointe de la flèche : ") Pt_Fin_Fle (getpoint Pt_Deb_Fle "\nPied de la flèche (insertion du texte : ") Pt_Pied_Fle (polar Pt_Deb_Fle (angle Pt_Deb_Fle Pt_Fin_Fle) Long) ) ;_ Fin de setq (command "_.pline" Pt_Deb_Fle "_w" 0 Larg Pt_Pied_Fle "_w" 0 0 Pt_Fin_Fle "") ;; (initget "Altitudes sansProfondeur sansHauteur sansLimite") (setq Option3 (getkword (strcat "\nChoix des textes [Altitudes/sansProfondeur/sansHauteur/sansLimite] <Altitudes> : ") ;_ Fin de strcat ) ;_ Fin de getkword ) ;_ Fin de setq (cond ((= Option3 "Altitudes") (setq Opt3 "Altitudes")) ((= Option3 "sansProfondeur") (setq Opt3 "sans profondeur")) ((= Option3 "sansHauteur") (setq Opt3 "sans hauteur")) ((= Option3 "sansLimite") (setq Opt3 "sans limite")) (T (setq Opt3 "Altitudes")) ) ;_ Fin de cond ;;;Calcul du gisement de la flèche selon son sens (princ "\nCalcul du gisement de la flèche selon son sens") (setq GisGrd (gisement Pt_Deb_Fle Pt_Fin_Fle)) (setq GisGrdSnapAng GisGrd) (if (>= GisGrdSnapAng 400) (setq GisGrdSnapAng (- GisGrdSnapAng 400) ;_ Fin de - ) ;_ Fin de setq ) ;_ Fin de if (cond ((and (>= GisGrdSnapAng 0) (< GisGrdSnapAng 100)) (setq OptionIns "BG")) ((and (>= GisGrdSnapAng 100) (< GisGrdSnapAng 200)) (setq OptionIns "HG")) ((and (>= GisGrdSnapAng 200) (< GisGrdSnapAng 300)) (setq OptionIns "HD")) ((and (>= GisGrdSnapAng 300) (<= GisGrdSnapAng 400)) (setq OptionIns "BD")) ) ;_ Fin de cond ;; (setq MText (strcat "\\H1.2\\L" PrefixIncrement (itoa ValIncrement) "\\P\\H1S=" xSurf "m²\\P" Opt3)) (command "_.-MTEXT" Pt_Fin_Fle "J" OptionIns Pt_Fin_Fle MText "") ;;;Défini les quatre coins du MText de (gile) (princ "\nDéfini les quatre coins du MText de (gile)") (setq MTxt (entlast)) (setq elst (entget (entlast))) (if (= "MTEXT" (cdr (assoc 0 (entget (entlast))))) (setq nor (cdr (assoc 210 elst)) ref (trans (cdr (assoc 10 elst)) 0 nor) rot (angle '(0 0 0) (trans (cdr (assoc 11 elst)) 0 nor)) wid (cdr (assoc 42 elst)) hgt (cdr (assoc 43 elst)) jus (cdr (assoc 71 elst)) org (list (cond ((member jus '(2 5 8)) (/ wid -2)) ((member jus '(3 6 9)) (- wid)) (T 0.0) ) ;_ Fin de cond (cond ((member jus '(1 2 3)) (- hgt)) ((member jus '(4 5 6)) (/ hgt -2)) (T 0.0) ) ;_ Fin de cond ) ;_ Fin de list plst (mapcar (function (lambda (p) (mapcar '+ org p))) (list (list (- 0.1) (- 0.1)) (list (+ wid 0.1) (- 0.1)) (list (+ wid 0.1) (+ hgt 0.1)) (list (- 0.1) (+ hgt 0.1)) ) ;_ Fin de list ) ;_ Fin de mapcar ) ;_ Fin de setq (setq box (textbox elst) ref (cdr (assoc 10 elst)) rot (cdr (assoc 50 elst)) plst (list (list (- (caar box) 0.1) (- (cadar box) 0.1)) (list (+ (caadr box) 0.1) (- (cadar box) 0.1)) (list (+ (caadr box) 0.1) (+ (cadadr box) 0.1)) (list (- (caar box) 0.1) (+ (cadadr box) 0.1)) ) ;_ Fin de list ) ;_ Fin de setq ) ;_ Fin de if (setq mat (list (list (cos rot) (- (sin rot)) 0) (list (sin rot) (cos rot) 0) '(0 0 1)) ;_ Fin de list plst (mapcar (function (lambda (p) (mapcar '+ (mxv mat p) (list (car ref) (cadr ref)))) ;_ Fin de lambda ) ;_ Fin de function plst ) ;_ Fin de mapcar ) ;_ Fin de setq (setq Pt1 (list (car (nth 0 plst)) (cadr (nth 0 plst)))) (setq Pt2 (list (car (nth 1 plst)) (cadr (nth 1 plst)))) (setq Pt3 (list (car (nth 2 plst)) (cadr (nth 2 plst)))) (setq Pt4 (list (car (nth 3 plst)) (cadr (nth 3 plst)))) (setvar "osmode" 0) ;; (princ "\nOptionIns") (cond ((= OptionIns "BG") (setq p3 (polar Pt_Deb_Fle (angle Pt_Deb_Fle Pt1) Long)) (setq PtA1 (polar Pt4 (angle Pt4 Pt1) (/ (distance Pt4 Pt1) 2))) ;_ Fin de setq (setq PtB1 Pt1) (setq PtC1 (polar Pt1 (angle Pt1 Pt2) (/ (distance Pt1 Pt2) 2))) ;_ Fin de setq ;; (setq PtA2 (polar Pt3 (angle Pt3 Pt2) (/ (distance Pt2 Pt3) 2))) ;_ Fin de setq (setq PtB2 Pt3) (setq PtC2 (polar Pt3 (angle Pt3 Pt4) (/ (distance Pt3 Pt4) 2))) ;_ Fin de setq ) ((= OptionIns "HG") (setq p3 (polar Pt_Deb_Fle (angle Pt_Deb_Fle Pt4) Long)) (setq PtA1 (polar Pt4 (angle Pt4 Pt1) (/ (distance Pt4 Pt1) 2))) ;_ Fin de setq (setq PtB1 Pt4) (setq PtC1 (polar Pt4 (angle Pt4 Pt3) (/ (distance Pt4 Pt3) 2))) ;_ Fin de setq ;; (setq PtA2 (polar Pt2 (angle Pt2 Pt1) (/ (distance Pt2 Pt1) 2))) ;_ Fin de setq (setq PtB2 Pt2) (setq PtC2 (polar Pt2 (angle Pt2 Pt3) (/ (distance Pt2 Pt3) 2))) ;_ Fin de setq ) ((= OptionIns "HD") (setq p3 (polar Pt_Deb_Fle (angle Pt_Deb_Fle Pt3) Long)) (setq PtA1 (polar Pt3 (angle Pt3 Pt4) (/ (distance Pt3 Pt4) 2))) ;_ Fin de setq (setq PtB1 Pt3) (setq PtC1 (polar Pt3 (angle Pt3 Pt2) (/ (distance Pt3 Pt2) 2))) ;_ Fin de setq ;; (setq PtA2 (polar Pt1 (angle Pt1 Pt2) (/ (distance Pt2 Pt1) 2))) ;_ Fin de setq (setq PtB2 Pt1) (setq PtC2 (polar Pt1 (angle Pt1 Pt4) (/ (distance Pt1 Pt4) 2))) ;_ Fin de setq ) ((= OptionIns "BD") (setq p3 (polar Pt_Deb_Fle (angle Pt_Deb_Fle Pt2) Long)) (setq PtA1 (polar Pt2 (angle Pt2 Pt1) (/ (distance Pt1 Pt2) 2))) ;_ Fin de setq (setq PtB1 Pt2) (setq PtC1 (polar Pt2 (angle Pt2 Pt3) (/ (distance Pt2 Pt3) 2))) ;_ Fin de setq ;; (setq PtA2 (polar Pt4 (angle Pt4 Pt1) (/ (distance Pt4 Pt1) 2))) ;_ Fin de setq (setq PtB2 Pt4) (setq PtC2 (polar Pt4 (angle Pt4 Pt3) (/ (distance Pt4 Pt3) 2))) ;_ Fin de setq ) ) ;_ Fin de cond ;; ;; ;; ;; ;; (command "_.pline" PtA1 PtB1 PtC1 "") ;"_.pline" PtA2 PtB2 PtC2 "") ;_ Fin de command (vlax-ldata-put "DenisH" "ValIncrement" (+ ValIncrement 1)) (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement")) ) ;_ Fin de defun ;;; Active le début de l'undo (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq old_cmdecho (getvar "cmdecho") old_osmode (getvar "osmode") ) ;_ Fin de setq (setvar "clayer" "0") (setvar "cmdecho" 0) (if (not (tblsearch "layer" "MARTY-SURFACES_FRACTIONS")) (command "-calque" "e" "MARTY-SURFACES_FRACTIONS" "co" "u" "255,0,255" "MARTY-SURFACES_FRACTIONS" "") ;_ Fin de command (command "-calque" "ch" "MARTY-SURFACES_FRACTIONS" "") ) ;_ Fin de if (setq PrefixIncrement (vlax-ldata-get "DenisH" "PrefixIncrement" "VarB")) (if (= PrefixIncrement nil) (vlax-ldata-put "DenisH" "PrefixIncrement" "VarB") ) ;_ Fin de if (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement" 0)) (if (or (= ValIncrement "") (= ValIncrement nil)) (progn (vlax-ldata-put "DenisH" "ValIncrement" 0) (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement")) ) ;_ Fin de progn ) ;_ Fin de if (if (not (tblsearch "style" "Surface")) (command "-style" "Surface" "arial.ttf" "" "" "" "" "" "") ) ;_ Fin de if (command "textstyle" "Surface") (while (/= (type Option1) 'LIST) (initget "Texte Nombre Contour Polyligne") (setq Option1 (getkword (strcat "\nOptions des textes [Texte/Nombre/Contour/Polyligne] <" PrefixIncrement (itoa ValIncrement) "> : " ) ;_ Fin de strcat ) ;_ Fin de getkword ) ;_ Fin de setq (cond ((= Option1 "Texte") (setq PrefixIncrement (getstring (strcat "\nSaisir le préfix de l'incrémentation <" PrefixIncrement "> : ")) ;_ Fin de getstring ) ;_ Fin de setq (vlax-ldata-put "DenisH" "PrefixIncrement" PrefixIncrement) ) ((= Option1 "Nombre") (setq ValIncrement (getint "\nSaisir le prochain numéro de l'incrémentation : ")) ;_ Fin de getstring (if (or (= ValIncrement "") (= ValIncrement nil)) (vlax-ldata-put "DenisH" "ValIncrement" 0) (vlax-ldata-put "DenisH" "ValIncrement" ValIncrement) ) ;_ Fin de if ) ((= Option1 "Contour") (while (princ "\nChoisir le contour :") (command "-contour" "O" "O" "P" "" pause "") (EcritText)) ) ((= Option1 "Polyligne") (while (princ "\nSaisisser le contour :") (command "_.pline" (while (not (zerop (getvar "cmdactive"))) (command pause)) ;_ Fin de while ) ;_ Fin de command (EcritText) ;_ Fin de command ) ;_ Fin de while ) (T (while (princ "\nChoisir le contour :") (command "-contour" "O" "O" "P" "" pause "") (EcritText)) ) ;_ Fin de cond ) ;_ Fin de while ) ;_ Fin de while (setvar "osmode" old_osmode) (setvar "cmdecho" old_cmdecho) (setvar "plinewid" 0) ;;; Fin de l'undo (vla-endundomark doc) (princ) ) ;_ Fin de defun 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Merci beaucoup ! Effectivement on a gagne du temps, cependant j'ai l'erreur : Calcul du gisement de la flèche selon son sensparamètre de la variable AutoCAD rejeté: "clayer" nil Quand je sélectionne l'option pour l'altitude du texte.
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 On va faire un petit test, ouvre un nouveau dessin et copie/colle ça en ligne de commande puis [ENTRÉE] :(if (not (tblsearch "layer" "MARTY-SURFACES_FRACTIONS")) (command "-calque" "e" "MARTY-SURFACES_FRACTIONS" "co" "u" "255,0,255" "MARTY-SURFACES_FRACTIONS" "") ;_ Fin de command (command "-calque" "ch" "MARTY-SURFACES_FRACTIONS" "") ) ;_ Fin de ifCe code créé le calque s'il n'existe pas et le rend courant ou le rend courant s'il existe. Que ce passe t'il ? 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Cela créer le calque. Il n'y a t'il pas une commande un peu particulière pour le calcul du gisement un peu comme MXV ?
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 Cela créer le calque.Donc, si ça fonctionne en ligne de commande, je ne comprend pas pourquoi ça ne fonctionne pas en lisp... ? ? ? Il n'y a t'il pas une commande un peu particulière pour le calcul du gisement un peu comme MXV ?Si, je te l'ai déjà envoyé, je te la renvoi :;;;************************************** ;;; Calcul du gisement entre deux points ;;;************************************** (defun gisment (p1 p2 / xp1 xp2 yp1 yp2 DeltaX DeltaY) ;;;fait par didier de CaxXP.com (setq xp1 (car p1) yp1 (cadr p1) xp2 (car p2) yp2 (cadr p2) DeltaX (- xp2 xp1) DeltaY (- yp2 yp1) ) ;_ Fin de setq (cond ((and (> DeltaX 0) (> DeltaY 0)) (setq quadrant 1)) ((and (> DeltaX 0) (< DeltaY 0)) (setq quadrant 2)) ((and (< DeltaX 0) (< DeltaY 0)) (setq quadrant 3)) ((and (< DeltaX 0) (> DeltaY 0)) (setq quadrant 4)) ((and (= DeltaX 0) (> DeltaY 0)) (setq quadrant 0)) ((and (> DeltaX 0) (= DeltaY 0)) (setq quadrant 100)) ((and (= DeltaX 0) (< DeltaY 0)) (setq quadrant 200)) ((and (< DeltaX 0) (= DeltaY 0)) (setq quadrant 300)) ) ;_ Fin de cond (if (= DeltaY 0) (setq gis_tempo 0) ) ;_ Fin de if (if (= DeltaX 0) (setq gis_tempo 0) ) ;_ Fin de if (if (and (/= 0 DeltaX) (/= 0 DeltaY)) (setq gis_tempo (/ (* (atan (/ DeltaX DeltaY)) 200) pi)) ) ;_ Fin de if (if (= quadrant 1) (setq gis gis_tempo) ) ;_ Fin de if (if (= quadrant 2) (setq gis (+ 200 gis_tempo)) ) ;_ Fin de if (if (= quadrant 3) (setq gis (+ 200 gis_tempo)) ) ;_ Fin de if (if (= quadrant 4) (setq gis (+ 400 gis_tempo)) ) ;_ Fin de if (if (= quadrant 0) (setq gis (+ 0 gis_tempo)) ) ;_ Fin de if (if (= quadrant 100) (setq gis (+ 100 gis_tempo)) ) ;_ Fin de if (if (= quadrant 200) (setq gis (+ 200 gis_tempo)) ) ;_ Fin de if (if (= quadrant 300) (setq gis (+ 300 gis_tempo)) ) ;_ Fin de if gis ) ;_ Fin de defun 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 (modifié) Edit : j'ai rien dit. J'ai ajouté la fonction mais cela ne change rien. La commande continue si je supprime le calcul du gisement et le calcul des points de mtext. Modifié le 9 février 2018 par Hydro8
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 Alors tout fonctionne correctement ? 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Non malheureusement j'ai toujours l'erreur même avec la fonction pour le gisement. Si j'enlève la partie sur le gisement, ça bug sur la partie pour calculer les points. Voici mon dernier code valide : ;;; *********************************************************** ;;; Dessine un contour, puis place un texte incrémenté et la ;;; surface dans un multitexte et dans des Xdata ;;; Pour Hydro8 de CadXP.com ;;; *********************************************************** (defun c:Hydro8_Poly (/ old_osmd PrefixIncrement ValIncrement Option1 Option2 MText EcritText) (princ "\nDéveloppé par Denis H. (v:2.0)") ;; Applique une matrice de transformation à un vecteur (Vladimir Nesterovsky) (defun mxv (m v) (mapcar (function (lambda (r) (apply '+ (mapcar '* r v)))) m)) ;_ Fin de defun (defun EcritText (/ xSurf xMatri xBasse xHaute Pt_Deb_Fle) ;; (setq xMatri (strcat PrefixIncrement (itoa ValIncrement))) (SetXdataForApplication (entlast) "Matri" (list (cons 1000 xMatri))) (setq xSurf (rtos (getpropertyvalue (entlast) "Area") 2 1)) (SetXdataForApplication (entlast) "Surf" (list (cons 1000 xSurf))) ;; (setq Pt_Deb_Fle (getpoint "\nCliquer l'emplacement du texte :")) ;_ Fin de setq ;; (initget "Altitudes sansProfondeur sansHauteur sansLimite") (setq Option3 (getkword (strcat "\nChoix des textes [Altitudes/sansProfondeur/sansHauteur/sansLimite] <Altitudes> : ") ;_ Fin de strcat ) ;_ Fin de getkword ) ;_ Fin de setq (cond ( (= Option3 "Altitudes") (setq basse (getstring "Quelle est l'altitude basse ? ") ) (setq haute (getstring "Quelle est l'altitude haute ? ") ) (setq xBasse basse) (SetXdataForApplication (entlast) "Basse" (list (cons 1000 xBasse))) (setq xHaute haute) (SetXdataForApplication (entlast) "Haute" (list (cons 1000 xHaute))) (setq Opt3 (strcat basse "m et " haute "m") ) ) ( (= Option3 "sansProfondeur") (setq haute (getstring "Quelle est l'altitude haute ? ") ) (setq xBasse "----") (SetXdataForApplication (entlast) "Basse" (list (cons 1000 xBasse))) (setq xHaute haute) (SetXdataForApplication (entlast) "Haute" (list (cons 1000 xHaute))) (setq Opt3 (strcat "sans limitation\\Pen profondeur et " haute "m") ) ) ( (= Option3 "sansHauteur") (setq basse (getstring "Quelle est l'altitude basse ? ") ) (setq xBasse basse) (SetXdataForApplication (entlast) "Basse" (list (cons 1000 xBasse))) (setq xHaute "----") (SetXdataForApplication (entlast) "Haute" (list (cons 1000 xHaute))) (setq Opt3 (strcat basse "m et sans\\Plimitation en hauteur") ) ) ( (= Option3 "sansLimite") (setq xBasse "----") (SetXdataForApplication (entlast) "Basse" (list (cons 1000 xBasse))) (setq xHaute "----") (SetXdataForApplication (entlast) "Haute" (list (cons 1000 xHaute))) (setq Opt3 "sans limitation en\\Pprofondeur et en hauteur") ) (T (setq basse (getstring "Quelle est l'altitude basse ? ")) (setq haute (getstring "Quelle est l'altitude haute ? ")) (setq xBasse basse) (SetXdataForApplication (entlast) "Basse" (list (cons 1000 xBasse))) (setq xHaute haute) (SetXdataForApplication (entlast) "Haute" (list (cons 1000 xHaute))) (setq Opt3 (strcat basse "m et " haute "m")) ) ) (setq MText (strcat "\\H0.53\\o" PrefixIncrement (itoa ValIncrement) "\\o\\P\\H0.38S=" xSurf "m²\\PNGF : " Opt3)) (command "_.-MTEXT" Pt_Deb_Fle "J" "MC" "H" 1.0 Pt_Deb_Fle MText "") ;; ;; ;;;Défini les quatre coins du MText de (gile) (princ "\nDéfini les quatre coins du MText de (gile)") (setq MTxt (entlast)) (setq elst (entget (entlast))) (if (= "MTEXT" (cdr (assoc 0 (entget (entlast))))) (setq nor (cdr (assoc 210 elst)) ref (trans (cdr (assoc 10 elst)) 0 nor) rot (angle '(0 0 0) (trans (cdr (assoc 11 elst)) 0 nor)) wid (cdr (assoc 42 elst)) hgt (cdr (assoc 43 elst)) jus (cdr (assoc 71 elst)) org (list (cond ((member jus '(2 5 8)) (/ wid -2)) ((member jus '(3 6 9)) (- wid)) (T 0.0) ) ;_ Fin de cond (cond ((member jus '(1 2 3)) (- hgt)) ((member jus '(4 5 6)) (/ hgt -2)) (T 0.0) ) ;_ Fin de cond ) ;_ Fin de list plst (mapcar (function (lambda (p) (mapcar '+ org p))) (list (list (- 0.1) (- 0.1)) (list (+ wid 0.1) (- 0.1)) (list (+ wid 0.1) (+ hgt 0.1)) (list (- 0.1) (+ hgt 0.1)) ) ;_ Fin de list ) ;_ Fin de mapcar ) ;_ Fin de setq (setq box (textbox elst) ref (cdr (assoc 10 elst)) rot (cdr (assoc 50 elst)) plst (list (list (- (caar box) 0.1) (- (cadar box) 0.1)) (list (+ (caadr box) 0.1) (- (cadar box) 0.1)) (list (+ (caadr box) 0.1) (+ (cadadr box) 0.1)) (list (- (caar box) 0.1) (+ (cadadr box) 0.1)) ) ;_ Fin de list ) ;_ Fin de setq ) ;_ Fin de if (setq mat (list (list (cos rot) (- (sin rot)) 0) (list (sin rot) (cos rot) 0) '(0 0 1)) ;_ Fin de list plst (mapcar (function (lambda (p) (mapcar '+ (mxv mat p) (list (car ref) (cadr ref)))) ;_ Fin de lambda ) ;_ Fin de function plst ) ;_ Fin de mapcar ) ;_ Fin de setq (setq Pt1 (list (car (nth 0 plst)) (cadr (nth 0 plst)))) (setq Pt2 (list (car (nth 1 plst)) (cadr (nth 1 plst)))) (setq Pt3 (list (car (nth 2 plst)) (cadr (nth 2 plst)))) (setq Pt4 (list (car (nth 3 plst)) (cadr (nth 3 plst)))) ;(setvar "osmode" 0) ;; (command "_.pline" Pt1 Pt2 "") ;_ Fin de command ;;; paramètres de la flèche (c:DH_Fleche) (vlax-ldata-put "DenisH" "ValIncrement" (+ ValIncrement 1)) (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement")) ) ;_ Fin de defun ;;; Active le début de l'undo (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq old_cmdecho (getvar "cmdecho") old_osmode (getvar "osmode") ) ;_ Fin de setq (setvar "clayer" "0") (setvar "cmdecho" 0) (if (not (tblsearch "layer" "MARTY-SURFACES_FRACTIONS")) (command "-calque" "e" "MARTY-SURFACES_FRACTIONS" "co" "u" "255,0,255" "MARTY-SURFACES_FRACTIONS" "") ;_ Fin de command (command "-calque" "ch" "MARTY-SURFACES_FRACTIONS" "") ) ;_ Fin de if (setq PrefixIncrement (vlax-ldata-get "DenisH" "PrefixIncrement" "1a")) (if (= PrefixIncrement nil) (vlax-ldata-put "DenisH" "PrefixIncrement" "1a") ) ;_ Fin de if (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement" 0)) (if (or (= ValIncrement "") (= ValIncrement nil)) (progn (vlax-ldata-put "DenisH" "ValIncrement" 0) (setq ValIncrement (vlax-ldata-get "DenisH" "ValIncrement")) ) ;_ Fin de progn ) ;_ Fin de if (if (not (tblsearch "style" "Surface")) (command "-style" "Surface" "arial.ttf" "" "" "" "" "" "") ) ;_ Fin de if (command "textstyle" "Surface") (while (/= (type Option1) 'LIST) (initget "Texte Nombre Contour Polyligne") (setq Option1 (getkword (strcat "\nOptions des textes [Texte/Nombre/Contour/Polyligne] <" PrefixIncrement (itoa ValIncrement) "> : " ) ;_ Fin de strcat ) ;_ Fin de getkword ) ;_ Fin de setq (cond ((= Option1 "Texte") (setq PrefixIncrement (getstring (strcat "\nSaisir le préfix de l'incrémentation <" PrefixIncrement "> : ")) ;_ Fin de getstring ) ;_ Fin de setq (vlax-ldata-put "DenisH" "PrefixIncrement" PrefixIncrement) ) ((= Option1 "Nombre") (setq ValIncrement (getint "\nSaisir le prochain numéro de l'incrémentation : ")) ;_ Fin de getstring (if (or (= ValIncrement "") (= ValIncrement nil)) (vlax-ldata-put "DenisH" "ValIncrement" 0) (vlax-ldata-put "DenisH" "ValIncrement" ValIncrement) ) ;_ Fin de if ) ((= Option1 "Contour") (while (princ "\nChoisir le contour :") (command "-contour" "O" "O" "P" "" pause "") (EcritText)) ) ((= Option1 "Polyligne") (while (princ "\nSaisisser le contour :") (command "_.pline" (while (not (zerop (getvar "cmdactive"))) (command pause)) ;_ Fin de while ) ;_ Fin de command (EcritText) ;_ Fin de command ) ;_ Fin de while ) (T (while (princ "\nChoisir le contour :") (command "-contour" "O" "O" "P" "" pause "") (EcritText)) ) ;_ Fin de cond ) ;_ Fin de while ) ;_ Fin de while (setvar "osmode" old_osmode) (setvar "cmdecho" old_cmdecho) (setvar "plinewid" 0) ;;; Fin de l'undo (vla-endundomark doc) (princ) ) ;_ Fin de defun
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 Voici mon fichier .lsp et le résultat dans un .dwg : télécharger 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Mince du coup maintenant avec ton lisp il me dit qu'il trouve pas de fonction gisment.
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 J'ai aussi ce message quand j'ouvre un dessin, je ne sais pas si ca a un rapport : Affectation à un symbole protégé: c:bbVoulez-vous entrer une boucle d'arrêt ?
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Est-il possible pour un getstring d'avoir une valeur par défaut ? Quand j'interroge sur l'altitude j'aimerais avoir la première fois XXXX.XX et les autres fois la valeur rentrée précédemment (ou XXXX.XX si rien rentré). Peut-on également obligatoirement sauvegarder les altitudes à 2 décimales dans le xdata ? Par exemple 192 devient 192.00.
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 C'est curieux, il est à la suite dans le fichier ? ? ? Tu le charges avec la commande "load" ? 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Je l'ai mis dans un lisp à part comme pour les autres petites commandes que tu m'as demandé. Je ne peux pas l'appeler comme ça, j'imagine c'est normal ou alors il faut que je rajoute c: devant son nom de commande.
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 J'ai aussi ce message quand j'ouvre un dessin, je ne sais pas si ca a un rapport : Affectation à un symbole protégé: c:bbVoulez-vous entrer une boucle d'arrêt ?Il y a d'autres lisp qui s'exécutent à l'ouverture d'un dessin, c'est peut-être eux qui restent "lancés" et qui posent problème... Ça je n'y peux rien... la commande "c:bb" n'est pas à moi... 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 9 février 2018 Posté(e) le 9 février 2018 Est-il possible pour un getstring d'avoir une valeur par défaut ?Quand j'interroge sur l'altitude j'aimerais avoir la première fois XXXX.XX et les autres fois la valeur rentrée précédemment (ou XXXX.XX si rien rentré).Pas de problèmes... Peut-on également obligatoirement sauvegarder les altitudes à 2 décimales dans le xdata ? Par exemple 192 devient 192.00.Combien de décimales veux-tu, car il faut un nombre de décimales, au moins le même que définies dans "ddunits". 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 9 février 2018 Posté(e) le 9 février 2018 Je l'ai mis dans un lisp à part comme pour les autres petites commandes que tu m'as demandé.Alors il faut recharger ET mon fichier .lsp, ET le tien... 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)
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 Il y a d'autres lisp qui s'exécutent à l'ouverture d'un dessin, c'est peut-être eux qui restent "lancés" et qui posent problème... Ça je n'y peux rien... la commande "c:bb" n'est pas à moi... Il va falloir que je vois ça, de mémoire je n'avais pas cette erreur avant. Pas de problèmes...Combien de décimales veux-tu, car il faut un nombre de décimales, au moins le même que définies dans "ddunits". Il faudrait 2 décimales, ddunits est défini sur 4. Alors il faut recharger ET mon fichier .lsp, ET le tien... J'ai relancer autocad plusieurs fois après les changements pour être sûr.Je vais essayé de comparer nos versions pour voir de quelle ligne peut provenir le problème.
Hydro8 Posté(e) le 9 février 2018 Auteur Posté(e) le 9 février 2018 A si les décimales doivent apparaître dans le xdata mais aussi dans le texte qu'on affiche :unsure:
DenisHen Posté(e) le 9 février 2018 Posté(e) le 9 février 2018 J'ai relancer autocad plusieurs fois après les changements pour être sûr.Les fichiers que j'ai mis à télécharger en message 139 (wouaouw ! !) devraient fonctionner seuls... Télécharge le lisp, charge-le avec la commande "load" et lance "Hydro8_Poly"... Que ce passe t'il ? 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)
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