Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é