Hola favor agradeceré ayudarme con esta runina. no me corre en civil3d.
me aparece este mensaje : ; error: no function definition: VLAX-ENAME->VLA-OBJECT (usando civil3D). Saludos
Nota: La rutina sirve para seleccionar dos textos (numericos) entre una longitud de lineas o curvas o pilineas).
(defun C:cit2 ()
(setq color 1)
(setq puntodeturno (entsel "Seleccione cota Inicial:"))
(setq cicar (car puntodeturno))
(setq cieg (entget cicar))
(setq ci (atof(cdr(assoc 1 cieg))))
(setq nci (/ (length puntodeturno)2))
(princ " Cota seleccionada:")
(command "change" puntodeturno "" "p" "c" "2" "")
(princ ci)
(terpri)
(setq cfent (entsel "\nSpecify Cota End: "))
(setq cfcar (car cfent))
(setq cfeg (entget cfcar))
(setq cf (atof(cdr(assoc 1 cfeg))))
(setq ncf (/ (length puntodeturno)2))
(princ " Cota seleccionada:")
(princ cf)
(terpri)
(print "SELECCION DE TRAMOS TOTALES")
(setq T1 (ssget (list (cons -4 "<or")
(cons 0 "LINE")
(cons 0 "LWPOLYLINE")
(cons 0 "ARC")
(cons -4 "<and")
(cons 0 "POLYLINE")
(cons -4 "<not")
(cons -4 "&") (cons 70 (+ 16 32 64))
(cons -4 "not>")
(cons -4 "and>")
(cons -4 "or>"))))
(setq s1 0.0)
(setq s2 0.0)
(setq s3 0.0)
(setq s4 0.0)
(setq X1 0.0)
(setq X2 0.0)
(setq X3 0.0)
(setq X4 0.0)
(if T1
(progn
(setq l 0)
(repeat (sslength T1)
(cond
((= "LINE" (cdr (assoc 0 (setq e (entget (ssname T1 l))))))
(setq sxy (cdr (assoc 10 e)))
(setq exy (cdr (assoc 11 e)))
(setq d1 (distance sxy exy))
(setq s1 (+ s1 d1))
(terpri)
)
((= "LWPOLYLINE" (cdr (assoc 0 (entget (setq e (ssname T1 l))))))
(command "_.area" "_E" e)
(setq s2 (+ s2 (getvar "perimeter")))
(terpri)
)
((= "POLYLINE" (cdr (assoc 0 (entget (setq e (ssname T1 l))))))
(command "_.area" "_E" e)
(setq s2 (+ s2 (getvar "perimeter")))
(terpri)
)
((= "ARC" (cdr (assoc 0 (entget (setq e (ssname T1 l))))))
(setq hnd (ssname T1 l))
(setq ep1 (vlax-curve-getEndPoint (vlax-ename->vla-object hnd)))
(setq cen (vlax-safearray->list (vlax-variant-value (vlax-get-property
(vlax-ename->vla-object hnd) "center"))))
(setq arclong (vlax-curve-getDistAtPoint (vlax-ename->vla-object hnd)
(vlax-curve-getendPoint (vlax-ename->vla-object hnd))))
(setq s3 (+ s3 arclong))
(terpri)
)
)
(setq l (1+ l))
)
)
)
(command "change" t1 "" "p" "c" "5" "")
(setq s4 (+ s1 s2 s3))
(SETQ L1 (/ (- ci cf) s4))
(while
(print "SELECCION TRAMO PARCIAL")
(setq T2 (ssget (list (cons -4 "<or")
(cons 0 "LINE")
(cons 0 "LWPOLYLINE")
(cons 0 "ARC")
(cons -4 "<and")
(cons 0 "POLYLINE")
(cons -4 "<not")
(cons -4 "&") (cons 70 (+ 16 32 64))
(cons -4 "not>")
(cons -4 "and>")
(cons -4 "or>"))))
(if T2
(progn
(setq U 0)
(repeat (sslength T2)
(cond
((= "LINE" (cdr (assoc 0 (setq e (entget (ssname T2 U))))))
(setq sxy (cdr (assoc 10 e)))
(setq exy (cdr (assoc 11 e)))
(setq d1 (distance sxy exy))
(setq X1 (+ X1 d1))
(terpri)
)
((= "LWPOLYLINE" (cdr (assoc 0 (entget (setq e (ssname T2 U))))))
(command "_.area" "_E" e)
(setq X2 (+ X2 (getvar "perimeter")))
(terpri)
)
((= "POLYLINE" (cdr (assoc 0 (entget (setq e (ssname T2 U))))))
(command "_.area" "_E" e)
(setq X2 (+ X2 (getvar "perimeter")))
(terpri)
)
((= "ARC" (cdr (assoc 0 (entget (setq e (ssname T2 U))))))
(setq hnd (ssname T2 U))
(setq ep1 (vlax-curve-getEndPoint (vlax-ename->vla-object hnd)))
(setq cen (vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object hnd) "center"))))
(setq arclong (vlax-curve-getDistAtPoint (vlax-ename->vla-object hnd) (vlax-curve-getendPoint (vlax-ename->vla-object hnd))))
(setq X3 (+ X3 arclong))
(terpri)
)
)
(setq U (1+ U))
)
)
)
(command "change" t2 "" "p" "c" color "")
(setq X4 (+ X1 X2 X3))
(SETQ P (/ (- cf ci) s4))
(setq dh (* P s4))
(setq dh2 (* P X4))
(setq c2 (+ ci dh2))
(setq rot (rtos c2 2 3))
(initget)
(setq txci (entsel "\nSpecify Cota Intermdia: "))
(setq ccop2 (car txci))
(setq copen2 (entget ccop2))
(setq copass2 (assoc 1 copen2))
(setq e2 (subst (cons 1 rot) copass2 copen2))
(entmod e2)
(princ (strcat "\n La Longitud Total es:"))
(princ (rtos s4 2 3))
(PRINC (STRCAT " " "metros."))
(princ (strcat "\n La Pendiente es:"))
(princ (rtos P 2 5))
(PRINC (STRCAT " " "%."))(TERPRI)
(setq ci (atof(cdr(assoc 1 cieg))))
(setq nci (/ (length puntodeturno)2))
(princ nci)
(princ " Cota seleccionada:")
(command "change" t2 "" "p" "c" color "")
(terpri)
(princ)
)
)
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.