14 jun 2008

Rutina que sirve para cerrar grupos de polilíneas abiertas.


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:close-plines (/ sel cant index obj origen final)
(vl-load-com)
(prompt "****\nSeleccione polilineas a cerrar\n****")
(setq sel (ssget '((0 . "*POLYLINE")))
cant (sslength sel)
index 0
)
(repeat cant
(setq obj (ssname sel index))
(setq origen (vlax-curve-getstartpoint obj)
final (vlax-curve-getendpoint obj)
)
(if (equal origen final 0.001)
(alert "Pline cerrada....")
(command "_pedit" obj "_c" "")
);if
(setq index (1+ index))
);repeat
(princ)
);fin
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

11 jun 2008

Rutina que sirve para obtener el volumen y centroide de un sólido 3d:


;| rutina "vol_solid" sirve para medir
volumen de un solido seleccionado.
****************************************
(c)by Prexem - Victor Adolfo Bracamonte*
WWW.Prexem.BlogSpot.Com
****************************************|;
(defun c:vol_solid (/ sol vsol vol centr)
(vl-load-com)
(setq sol(car(entsel "\nseleccione un solido:"))
vsol (vlax-ename->vla-object sol)
vol (vlax-get vsol 'volume)
centr (vlax-get vsol 'centroid)
);setq
(princ "\ncentroide del solido: ")(princ centr)
(princ "\nvolumen del solido: ")(princ vol)
(princ)
);defun

9 jun 2008

Rutina para medir el ángulo entre dos rectas, sean líneas o polilíneas:


;| rutina "ang_entre_pl" sirve para medir
el angulo existente entre dos lineas
o polilineas rectas indicandolas.
****************************************
(c)by Prexem - Victor Adolfo Bracamonte*
WWW.Prexem.BlogSpot.Com
****************************************|;
(defun c:ang_entre_pl (/ pl1 vpl1 in1 fin1 ang1 pl2 vpl2
in2 fin2 ang2 angmax angmin
ang_entr ang_grad)
(vl-load-com)
(setq pl1(car(entsel "\nseleccione polilinea recta 1:"))
vpl1 (vlax-ename->vla-object pl1)
in1 (vlax-curve-getstartpoint vpl1)
fin1 (vlax-curve-getendpoint vpl1)
ang1 (angle in1 fin1)
pl2(car(entsel "\nseleccione polilinea recta 2:"))
vpl2 (vlax-ename->vla-object pl2)
in2 (vlax-curve-getstartpoint vpl2)
fin2 (vlax-curve-getendpoint vpl2)
ang2 (angle in2 fin2)
angmax (max ang1 ang2)
angmin (min ang1 ang2)
ang_entr (- angmax angmin)
ang_grad(* (/ ang_entr (* 2 PI)) 360)
);setq
(princ "\nAngulo entre lineas: ")(princ ang_grad)
(princ)
);defun