Textos en Linea de Centros

Ver el tema anterior Ver el tema siguiente Ir abajo

Textos en Linea de Centros

Mensaje por saulo2016 el Mar Abr 26, 2016 10:36 pm

Maestros necesito de su ayuda, en esta ocasión tengo este problema, quiero en una linea de centros agregar un texto que yo pueda teclear la descripcion que yo quiera, pero al seleccionar la linea quiero que agregue una L y una C empalmadas, aqui esta un ejemplo y el codigo que tengo hecho hasta ahora pero no me funciona, haber si me pueden ayudar o si alguien tiene una mejor idea o si ya tienen hecho un codigo les agradezco de su apoyo:





Código:
(defun C:lc (/ pt1 pt2 ang ng1 ng2 ng3 pt3 pt4 pt5 pt6 TP1 TP2 TP3 TP4 BT dtr rtd)

(setq CMO (getvar "CMDECHO"))
(setq BMO (getvar "BLIPMODE"))
(setvar "CMDECHO" 0)(setvar "BLIPMODE" 0)(setq lay (getvar "clayer"))
(setq txt (getvar "dimasz"))(setq es (/ txt 2.0))

 (txtosclam)
  (setvar "CMDECHO" CMO)
  (command "layer" "s" LAY "" )
  (setvar "BLIPMODE" BMO)(princ));defun

  (command "STYLE" "ROMANS" "Romans" txt "1" "" "N" "N" "N")
       (cond ((= nil (tblsearch "layer" "TEX"))
       (command "layer" "n" "TEX" "c" "3" "TEX" ""))))


(defun dtr (x) (* pi (/ x 180.0))); convertir grados a radianes
(defun rtd (a) (* 180.0 (/ a pi)));convertir radianes a grados



 (setvar "osmode" 512)
 (setq pt1 (getpoint "\nPunto de Linea Centro: ")
       pt2 (getpoint pt1 "\nDireccion del Texto: ")
       ang (angle pt1 pt2)
       ng1 (+ ang (dtr 90))
       ng2 (+ ang (dtr -90))
       ng3 (+ ang (dtr 25))
        an (rtd ang)
       pt3 (polar pt1 ng1 (* 2.5 es))
       pt4 (polar pt3 ng2 (* 5 es))
       pt5 (polar pt1 ng3 (* 1.8 es))
       pt6 (polar pt4 ang (* 1.6 es))

);setq


(setvar "osmode" 0)
(command "layer" "s" "tex" ""
         "line" pt3 pt4 pt6 ""
         "text" "M" pt1 an "C"

);COMMAND

    (princ))


Saludos Maestros

saulo2016

Mensajes : 84
Fecha de inscripción : 17/03/2016
Edad : 51
Localización : Monterrey, Nuevo León, Mexico

Ver perfil de usuario

Volver arriba Ir abajo

Re: Textos en Linea de Centros

Mensaje por eliasp el Miér Abr 27, 2016 12:14 am

Que tal Saulo2016, buen día.

Antes que nada, yo no soy un experto, ni maestro, pero.... una pregunta: ¿Usaste el código que publicas?

El asunto es que inicias tu código con un defun (lc) que llama a otra defun que no existe (txtosclam).... luego, al cargar la rutina, comienzas a ejecutar el pedir los puntos, pero necesitas un valor (es) que aún no calculas...

Si ya lo usaste, vuelve a copiarlo, porque está fallo. Si no lo has usado, comienza por imaginar cual sería secuencia "natural" y así prográmalo. De entrada, yo sacaría el código de la función lc para que se ejecute antes de pedir los puntos y buscaría que hace la función (txtosclam) y la colocaría.

Saludos y suerte

eliasp

Mensajes : 37
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Textos en Linea de Centros

Mensaje por saulo2016 el Miér Abr 27, 2016 12:40 am

Perdon aqui esta como lo tenia antes de comenzar a batallar, pero no me funciona:



Código:
(defun C:lc (/ pt1 pt2 ang ng1 ng2 ng3 pt3 pt4 pt5 pt6 TP1 TP2 TP3 TP4 BT dtr rtd)

(setq CMO (getvar "CMDECHO"))
(setq BMO (getvar "BLIPMODE"))
(setvar "CMDECHO" 0)(setvar "BLIPMODE" 0)(setq lay (getvar "clayer"))
(setq txt (getvar "dimasz"))(setq es (/ txt 2.0))

 (txtosclam)
  (setvar "CMDECHO" CMO)
  (command "layer" "s" LAY "" )
  (setvar "BLIPMODE" BMO)(princ));defun

  (command "STYLE" "ROMANS" "Romans" txt "1" "" "N" "N" "N")
       (cond ((= nil (tblsearch "layer" "TEX"))
       (command "layer" "n" "TEX" "c" "3" "TEX" ""))))


(defun dtr (x) (* pi (/ x 180.0))); convertir grados a radianes
(defun rtd (a) (* 180.0 (/ a pi)));convertir radianes a grados



 (setvar "osmode" 512)
 (setq pt1 (getpoint "\nPunto de Linea Centro: ")
       pt2 (getpoint pt1 "\nDireccion del Texto: ")
       ang (angle pt1 pt2)
       ng1 (+ ang (dtr 90))
       ng2 (+ ang (dtr -90))
       ng3 (+ ang (dtr 25))
        an (rtd ang)
       pt3 (polar pt1 ng1 (* 2.5 es))
       pt4 (polar pt3 ng2 (* 5 es))
       pt5 (polar pt1 ng3 (* 1.8 es))
       pt6 (polar pt4 ang (* 1.6 es))

);setq


(setvar "osmode" 0)
(command "layer" "s" "tex" ""
         "line" pt3 pt4 pt6 ""
         "text" "M" pt1 an "C"

);COMMAND




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun C:txtosclam (/ TP1 TP2 TP3 TP4 BT)
    (command "layer" "s" "tex" "")
        (setq TP1 PT5)
        (setq TP2 (polar TP1 ng1 txt)
              TP3 (polar TP1 ang (* 30 es))
              TP4 (polar TP3 ng1 txt))
                      (grdraw TP1 TP2 7 -1)
                      (grdraw TP2 TP4 7 -1)
                      (grdraw TP4 TP3 7 -1)
                      (grdraw TP3 TP1 7 -1)
       (setq BT (getstring T "\nTexto del Nivel: "))
                      (grdraw TP1 TP2 0)
                      (grdraw TP2 TP4 0)
                      (grdraw TP4 TP3 0)
                      (grdraw TP3 TP1 0)
    (command "text" pt5 AN BT)
     (princ))


saulo2016

Mensajes : 84
Fecha de inscripción : 17/03/2016
Edad : 51
Localización : Monterrey, Nuevo León, Mexico

Ver perfil de usuario

Volver arriba Ir abajo

Re: Textos en Linea de Centros

Mensaje por eliasp el Miér Abr 27, 2016 1:07 am

A ver saulo. O lo copiaste mal o te lo pasaron mal, pero en fin. Aquí lo tienes corregido. Una sugerencia, no metas los nombres de las funciones auxiliares como variables locales....

Código:

(defun dtr(x) (* pi (/ x 180.0))); convertir grados a radianes
(defun rtd(a) (* 180.0 (/ a pi)));convertir radianes a grados

(defun C:lc (/ pt1 pt2 ang ng1 ng2 ng3 pt3 pt4 pt5 pt6 TP1 TP2 TP3 TP4 BT); dtr rtd)
  (setq CMO (getvar "CMDECHO"))
  (setq BMO (getvar "BLIPMODE"))
  (setvar "CMDECHO" 0)(setvar "BLIPMODE" 0)(setq lay (getvar "clayer"))
  (setq txt (getvar "dimasz"))(setq es (/ txt 2.0))
  
  (setvar "CMDECHO" CMO)
  (command "layer" "s" LAY "" )
  (setvar "BLIPMODE" BMO)
  (princ)
  
(command "STYLE" "ROMANS" "Romans" txt "1" "" "N" "N" "N")
(cond ((= nil (tblsearch "layer" "TEX"))
       (command "layer" "n" "TEX" "c" "3" "TEX" ""))
      )
(setvar "osmode" 512)
(setq pt1 (getpoint "\nPunto de Linea Centro: ")
      pt2 (getpoint pt1 "\nDireccion del Texto: ")
      ang (angle pt1 pt2)
      ng1 (+ ang (dtr 90))
      ng2 (+ ang (dtr -90))
      ng3 (+ ang (dtr 25))
      an (rtd ang)
      pt3 (polar pt1 ng1 (* 2.5 es))
      pt4 (polar pt3 ng2 (* 5 es))
      pt5 (polar pt1 ng3 (* 1.8 es))
      pt6 (polar pt4 ang (* 1.6 es))
      );setq
(setvar "osmode" 0)
(command "layer" "s" "tex" ""
    "line" pt3 pt4 pt6 ""
    "text" "M" pt1 an "C"
    );COMMAND
(txtosclam)
);defun
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun txtosclam (/ TP1 TP2 TP3 TP4 BT)
  (command "layer" "s" "tex" "")
  (setq TP1 PT5)
  (setq TP2 (polar TP1 ng1 txt)
   TP3 (polar TP1 ang (* 30 es))
   TP4 (polar TP3 ng1 txt))
  (grdraw TP1 TP2 7 -1)
  (grdraw TP2 TP4 7 -1)
  (grdraw TP4 TP3 7 -1)
  (grdraw TP3 TP1 7 -1)
  (setq BT (getstring T "\nTexto del Nivel: "))
  (grdraw TP1 TP2 0)
  (grdraw TP2 TP4 0)
  (grdraw TP4 TP3 0)
  (grdraw TP3 TP1 0)
  (command "text" pt5 AN BT)
  (princ)
  )
Por enseñanzas del maestro Devitg, las funciones auxiliares, como dtr rtd y textosclam se deben definir por fuera del defun principal. Otra observación, la función textosclam la tenías definida como c:, pero al llamarla lo hacías como si no tuviera c:.... En fín, ahí está

Saludos

eliasp

Mensajes : 37
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

simbolo de linea de centro

Mensaje por Admin el Miér Abr 27, 2016 3:54 am

En Acad existe el símbolo para linea de centro

Se puede obtener mediante el comando MTEXT y picando en el símbolo en la parte superior derecha





Se lo puede convertir en un bloque , previamente justificar como MIDDLE CENTER o CENTRO MEDIO

Hay un código , que no sé como aplicarlo  \u+2104


SIMBOLO LINEA DE CENMTRO








Última edición por Admin el Miér Abr 27, 2016 3:57 am, editado 2 veces (Razón : corrección ortográfica)

Admin
Admin

Mensajes : 124
Fecha de inscripción : 16/03/2016
Edad : 68
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Textos en Linea de Centros

Mensaje por saulo2016 el Miér Abr 27, 2016 2:43 pm

Gracias Eliasp y Devitg, asi era como yo queria que quedara, pero como estoy aprendiendo todavia, la rutina la fui armando mas o menos como yo entiendo......y hay muchas cosas que revuelvo, cambio de lugar o simplemente no me queda claro....

Pero asi era como lo necesitaba, gracias



Saludos

saulo2016

Mensajes : 84
Fecha de inscripción : 17/03/2016
Edad : 51
Localización : Monterrey, Nuevo León, Mexico

Ver perfil de usuario

Volver arriba Ir abajo

Re: Textos en Linea de Centros

Mensaje por Contenido patrocinado Hoy a las 11:02 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.