AutoCad - DCL

 
Vista:

DCL

Publicado por Nacho Garrido (10 intervenciones) el 14/07/2006 14:42:47
Hola a todos.Hasta la fecha he programado con visual lisp, y es ahora cuando estoy empezando a descubrir DCL para darle a las aplicaciones un aspecto gráfico. Voy a copiar aquí lo que estoy haciendo porqué cuando ejecuto el boton "seleccionar polilinea" se me queda colgado autocad ¿ alguien sabe decirme que puede fallar?

Salutacions,

NAcho


Pd : la función que le asigno al button funciona perfectamnet epor separado por lo que sospecho que es algo que hago mal al asignarle la acción al button.He probado múltiples formas y siempre se me cuelga.Además esto me pasa con muchas asignaciones ¿ como se le asigna una función a un button?¿hay excepciones?

Código dcl.

acp:dialog {label = "quadre de coordenades";

:row {

:edit_box {label="El dibuix es fara a la capa :";key="cact";}
}
:row {

:button {label="Seleccio polilinea";key="spol";}
}
:row {ok_only;key="aceptar";
}
}

còdigo lisp

(defun c:acp ()

(setq ind (load_dialog "c:/dcl/acp.dcl"))
(new_dialog "acp" ind)
(set_tile "cact" (getvar "clayer" ))
(action_tile "spol" "(nachos)")
(start_dialog)
(unload_dialog ind)

)

(defun nachos (/ vert nume cont membre np
pinici xtext1 ytext1 eqq erer pf
ytext2 xtext2 pinicit vert1 dvert1 cadnp
xdvert1 cadx ydvert1 cady cad mpxdvert1
mpydvert1 afina areart mpxy pfd ptarea ptareax ptareay areap ptenca ptencax ptencay comptador ext extr cartxt arear
)

;Configuracio dels parametres


;Seleccio de la polilinea

(setq vert (entget (ssname (ssget) 0)))
(setq nume (cdr (assoc 90 vert)))
(command "_area" "o" "_L" "")
(graphscr)
(setq arear (getvar "area"))

;Localitzar el primer vertex

(setq cartxt 0)
(setq comptador 0)

(while (/= cartxt 10)

(setq ext (nth comptador vert))
(setq extr (car ext))
(setq cartxt extr)
(setq comptador (1+ comptador))
(setq membre (- comptador 1))
)







;Configuracio de variables

(setq cont 0)
(setq np 1)
(setq eqq 0.0)
(setq xtext1 0.0)
(setq ytext1 0.0)
(setq xtext2 0.0)
(setq ytext2 0.0)

;Quadre de coordenades

(setq pinici (getpoint "Indica el punt d'insercio:"))
(setq xtext1 (nth 0 pinici))
(setq ytext1 (nth 1 pinici))
(command "_line" pinici "@52<0" "")

(repeat (+ nume 2)

(command "_offset" "6" (ssget "_L") "0,-10000" "")

)

(setq eqq (* 6 (+ 2 nume)))
(setq pf (list xtext1 (- ytext1 eqq)))
(command "_line" pinici pf "")
(command "_offset" "52" (ssget "_L") "1000000,0" "")
(setq pf (list (+ 8 xtext1) (+ 6 (- ytext1 eqq))))
(setq pfd (list (+ 8 xtext1) ytext1 ))
(command "_line" pf pfd "")
(command "_offset" "22" (ssget "_L") "1000000,0" "")


;Determinacio del punt d'inici del text

(setq ytext2 (- ytext1 10))
(setq xtext2 (+ xtext1 3))
(setq pinicit (list xtext2 ytext2))







(while (< cont nume)

(setq vert1 (nth membre vert))
(setq dvert1 (cdr vert1))
(command "_point" dvert1)

(setq mpxdvert1 (+ 2 (car dvert1)))
(setq mpydvert1 (+ 2 (nth 1 dvert1)))
(setq mpxy (list mpxdvert1 mpydvert1))

(command "_text" mpxy "2" "0" np)
(setq cadnp (itoa np))
(setq cont (1+ cont))
(setq membre (+ 4 membre))

(setq xdvert1 (nth 0 dvert1))
(setq cadx (rtos xdvert1 2 2))
(setq ydvert1 (nth 1 dvert1))
(setq cady (rtos ydvert1 2 2))

(if (<= np 9)

(setq
cad (strcat " " cadnp " " cadx " " cady "")
)
(setq
cad (strcat "" cadnp " " cadx " " cady "")
)
)

(command "_text" pinicit "2" "0" cad)
(setq ytext2 (- ytext2 6))
(setq pinicit (list xtext2 ytext2))

(setq np (1+ np))


)

;Determinacio de l'area i el text corresponent





(setq ptareax (+ 3 xtext1))
(setq ptareay (+ 2 (- ytext1 eqq)))
(setq ptarea (list ptareax ptareay))
(setq areart (rtos arear 2 2))
(setq afina (strcat " Área : " areart " m2"))
(command "_text" ptarea "2.25" "0" afina )

;Posar N X Y en text

(setq ptencax (+ xtext1 4))
(setq ptencay (- ytext1 4))
(setq ptenca (list ptencax ptencay))
(command "_text" ptenca "2" "0" "N X Y")


)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder