pierrevigneux Posté(e) le 15 février 2010 Posté(e) le 15 février 2010 Merci Beaucoup BonusCAD! Ça vas m'aider beaucoup, si tu permet je voudrais l'adapter à mes besoins. Pourrais-tu m'indiquer comment modifier la hauteur de texte, le style et le P.K 1+000 c.ad. 3chiffres et ça sera parfait merci encore. @+ [Edité le 15/2/2010 par pierrevigneux] Acadnadien
bonuscad Posté(e) le 15 février 2010 Posté(e) le 15 février 2010 J' ai édité le code. Le +000 n'était pas trop évident à mettre en place.J'ai rajouté la possibilité de démarrer à un PK quelconque (rentrer par exemple 52+356 sous la forme [surligneur]52.356 [/surligneur])Pour le style j'ai mis ce coup-ci : (3 . "ARIAL.TTF")Tu peut mettre une autre fonte, c'est dans la partie (defun make_blk_measure ....) Les quelques tests rapides que j'ai pu faire, cela à l'air bon (contrôler quand même les résultats). Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
pierrevigneux Posté(e) le 15 février 2010 Posté(e) le 15 février 2010 Merci BonusCAD!La réponse est ceçi. error: bad argument value: AutoCAD command: # Les quelques tests rapides que j'ai pu faire, cela à l'air bon (contrôler quand même les résultats). Si tu y comprend quelques chose? bien moi pas.@+ Acadnadien
bonuscad Posté(e) le 15 février 2010 Posté(e) le 15 février 2010 Quelle version? Sous 2008 et 2009 pas de problème... C'est peut être la ligne (command "_.textsize" (while (not (zerop (getvar "cmdactive"))) (command pause))) Essayes en remplaçant par: (initget 6) (setq tmp_var (getdist (strcat "Entrez une nouvelle valeur pour TEXTSIZE <" (rtos (getvar "TEXTSIZE")) ">: "))) (if (not tmp_var) (setq tmp_var (getvar "TEXTSIZE"))) (setvar "TEXTSIZE" tmp_var) [Edité le 15/2/2010 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
pierrevigneux Posté(e) le 16 février 2010 Posté(e) le 16 février 2010 initget 6) (setq tmp_var (getdist (strcat "Entrez une nouvelle valeur pour TEXTSIZE <" (rtos (getvar "TEXTSIZE")) ">: ")) [surligneur] )[/surligneur] (if (not tmp_var) (setq tmp_var (getvar "TEXTSIZE"))setvar "TEXTSIZE" tmp_var) Une Parenthèse de trop.J'ai essayé le code, mais il ne fonctionne pas comme avant c.a.d. ne cote pas toutes les entitées.- Comment puis-je rapprocher la côte ? la mettre plus près de ma polyligne soit à 5m. excemple?Je crois qu'on y est presque, Merci de ton aide! Acadnadien
bonuscad Posté(e) le 16 février 2010 Posté(e) le 16 février 2010 Une Parenthèse de trop. Au début de [surligneur] initget 6) [/surligneur] il en manque une :casstet: ne cote pas toutes les entitées. Bon si tu penses connaitre le sens de parcours des éléments que tu veux coter.... Je crois qu' [surligneur]on [/surligneur] y est presque C'est une boutade ?? Dernier post du code complet. A toi les adaptations mineures ;) (defun draw_pt (pt col / rap) (setq rap (/ (getvar "viewsize") 50)) (foreach n (mapcar '(lambda (x) (list ((eval (car x)) (car pt) rap) ((eval (cadr x)) (cadr pt) rap) ) ) '((+ +) (+ -) (- +) (- -)) ) (grdraw (trans pt 0 1) (trans n 0 1) col) ) ) (defun make_blk_measure ( / ) (if (not (tblsearch "STYLE" "$BLK_MEAS")) (entmake '((0 . "STYLE") (5 . "40") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "$BLK_MEAS") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 0.1) (3 . "ARIAL.TTF") (4 . "") ) ) ) (if (not (tblsearch "BLOCK" "BLK_MEASURE_CURVE")) (progn (entmake '((0 . "BLOCK") (8 . "0") (2 . "BLK_MEASURE_CURVE") (70 . 2) (4 . "") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (10 0.0 0.0 0.0)) ) (entmake (append '((0 . "LINE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (100 . "AcDbLine")) (list (list 10 0.0 (/ (- (getvar "TEXTSIZE")) 100.0) 0.0)) (list (list 11 0.0 (/ (getvar "TEXTSIZE") 100.0) 0.0)) '((210 0.0 0.0 1.0)) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (100 . "AcDbText") (10 0.5 0.05 0.0) (40 . 1.0) (1 . "0.0") (50 . 1.570796326794896) (41 . 1.0) (51 . 0.0) (7 . "$BLK_MEAS") (71 . 0) (72 . 0) (11 0.0 0.05 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (3 . "measure") (2 . "VALUE_MEASURE") (70 . 0) (73 . 2) (74 . 2) ) ) (entmake '((0 . "ENDBLK") (8 . "0") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2))) ) ) ) (defun z_dir (p1 p2 / ) (trans '(0.0 1.0 0.0) (mapcar '(lambda (k) (/ k (sqrt (apply '+ (mapcar '(lambda (x) (* x x)) (mapcar '- p2 p1) ) ) ) ) ) (mapcar '- p2 p1) ) 0 ) ) (defun c:mesure_PK ( / js nb dxf_obj obj_vlax pt_start pt_end total_dist partial_dist ori_dist tmp_var lst_pt increment_dist sv_luprec sv_dzin ang dxf_210 p_fix mantiss) (princ "\nSélectionner les objets curvilignes à mesurer: ") (while (not (setq js (ssget (list (cons 0 "*POLYLINE,LINE,ARC,CIRCLE,ELLIPSE,SPLINE") (cons 67 (if (eq (getvar "CVPORT") 2) 0 1)) (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB"))) (cons -4 " (cons -4 "&") (cons 70 112) (cons -4 "NOT>") ) ) ) ) (princ "\nPas d'objets valable ou sélection vide!") ) (setq nb -1) (vl-load-com) (repeat (sslength js) (setq dxf_obj (entget (ssname js (setq nb (1+ nb)))) obj_vlax (vlax-ename->vla-object (ssname js nb)) pt_start (vlax-curve-getStartPoint obj_vlax) pt_end (vlax-curve-getEndPoint obj_vlax) total_dist (vlax-curve-getDistAtParam obj_vlax (vlax-curve-getEndParam obj_vlax)) partial_dist 1000.0 ) (redraw (cdar dxf_obj) 3) (draw_pt pt_start 3) (setq ori_dist (getreal "\nPK de départ 0+000 <0.0>: ")) (if (not ori_dist) (setq ori_dist 0.0)) (cond ((> total_dist partial_dist) ;(command "_.textsize" (while (not (zerop (getvar "cmdactive"))) (command pause))) (initget 6) (setq tmp_var (getdist (strcat "Entrez une nouvelle valeur pour TEXTSIZE <" (rtos (getvar "TEXTSIZE")) ">: "))) (if (not tmp_var) (setq tmp_var (getvar "TEXTSIZE"))) (setvar "TEXTSIZE" tmp_var) (make_blk_measure) (setq lst_pt (list pt_start) increment_dist (- 1000.0 (atoi (substr (rtos ori_dist 2 3) (+ 2 (vl-string-search "." (rtos ori_dist 2 3)))))) sv_luprec (getvar "LUPREC") sv_dzin (getvar "DIMZIN") ) (setvar "CMDECHO" 1) (setvar "DIMZIN" 0) (command "_.luprec" 0) (while (< increment_dist total_dist) (setq lst_pt (cons (vlax-curve-getPointAtDist obj_vlax increment_dist) lst_pt) increment_dist (+ increment_dist partial_dist) ) ) (setq lst_pt (reverse (cons pt_end lst_pt))) (foreach n lst_pt (setq ang (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv obj_vlax (vlax-curve-getParamAtPoint obj_vlax n))) dxf_210 (z_dir n (polar n ang (* 0.1 partial_dist))) p_fix (atoi (rtos (/ (vlax-curve-getDistAtPoint obj_vlax n) 1000.0) 2 3)) mantiss (+ (- (vlax-curve-getDistAtPoint obj_vlax n) (* p_fix 1000.0) ) (atoi (substr (rtos ori_dist 2 3) (+ 2 (vl-string-search "." (rtos ori_dist 2 3))))) ) ) (if (or (equal mantiss 1000.0 1E-3) (> mantiss 1000.0)) (setq p_fix (1+ p_fix) mantiss (- mantiss 1000))) (if (zerop (fix mantiss)) (setq mantiss "000") (setq mantiss (rtos mantiss 2 0))) (entmake (list (cons 0 "INSERT") (cons 100 "AcDbEntity") (assoc 67 dxf_obj) (assoc 410 dxf_obj) (cons 8 (getvar "CLAYER")) (cons 100 "AcDbBlockReference") (cons 66 1) (cons 2 "BLK_MEASURE_CURVE") (cons 10 (trans n 0 dxf_210)) (cons 41 (* 0.1 partial_dist)) (cons 42 (* 0.1 partial_dist)) (cons 43 (* 0.1 partial_dist)) (cons 50 ang) (cons 210 dxf_210) ) ) (entmake (list (cons 0 "ATTRIB") (cons 100 "AcDbEntity") (assoc 67 dxf_obj) (assoc 410 dxf_obj) (cons 8 (getvar "CLAYER")) (cons 100 "AcDbText") (cons 10 (polar (polar (trans n 0 dxf_210) (+ (/ pi 2) ang) (* 0.05 partial_dist)) ang (* 0.5 partial_dist) ) ) (cons 40 (getvar "TEXTSIZE")) (cons 1 (strcat "PK " (itoa (+ p_fix (fix ori_dist))) "+" mantiss ) ) (cons 50 (+ (/ pi 2) ang)) (cons 41 1.0) (cons 51 0.0) (cons 7 "$BLK_MEAS") (cons 71 0) (cons 72 0) (cons 11 (polar (trans n 0 dxf_210) (+ (/ pi 2) ang) (* 0.05 partial_dist))) (cons 210 dxf_210) (cons 100 "AcDbAttribute") (cons 2 "VALUE_MEASURE") (cons 70 0) (cons 73 2) (cons 74 2) ) ) (entmake (list (cons 0 "SEQEND") (cons 8 (getvar "CLAYER")) (cons 62 0) (cons 6 "ByBlock") (cons 370 -2))) ) (setvar "LUPREC" sv_luprec) (setvar "DIMZIN" sv_dzin) ) (T (princ "\nLa longueur est trop grande pour l'objet!")) ) (draw_pt pt_start -1) (redraw (cdar dxf_obj) 4) ) (redraw) (prin1) ) [Edité le 16/2/2010 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
pierrevigneux Posté(e) le 16 février 2010 Posté(e) le 16 février 2010 Merci! Beaucoup BonusCAD!C'est super je te remercie également pour ta patience.Ça me suffit, je vais domir la dessus,comme on dit.Je verrai pour les adaptations. @+ Acadnadien
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