AutoCad - AUTOLISP: Evitar ciertas cosas en la linea de comandos

   
Vista:
Imágen de perfil de Nicolás

AUTOLISP: Evitar ciertas cosas en la linea de comandos

Publicado por Nicolás (21 intervenciones) el 18/07/2016 16:30:48
Buenas programadores! hace ya un buen tiempo que tengo esta molestia y no encuentro como hacerla desaparecer, son casos en los que al usar en autolisp las funciones que utilizan (command "..." y luego una serie de determinados atributos, estos aparecen en la linea de comandos.

Ejemplo para hacerme entender mejor... Tengo la siguiente porción de autolisp:

(command "-estilo" "ROMAND" "romand.shx" 1.8 0.9 0 "N" "N" "N") En el cual creo un estilo de letra que usaré a continuación.

Pero no quiero que ande apareciendo en la linea de comandos todo esto:

Precise nombre completo de tipo de letra o nombre de archivo de tipos de letra (TTF o SHX) <romand.shx>: romand.shx Precise altura de texto o [Anotativo] <1.800>: 1.800000000000000 Precise factor de anchura <0.900>: 0.900000000000000
Precise ángulo de oblicuidad <0d0'0.0">: 0 ¿Mostrar texto hacia la izquierda? [Sí/No] <No>: N ¿Mostrar texto cabeza abajo? [Sí/No] <No>: N ¿Vertical? [Sí/No] <No>: N
"ROMAND" es ahora el estilo de texto actual.

Hay alguna manera, comando, o modificación para que no aparezca todo eso?

Tuve la esperanza que CMDECHO me salvara pero no...
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

AUTOLISP: Evitar ciertas cosas en la linea de comandos

Publicado por Gerardo (446 intervenciones) el 18/07/2016 23:15:46
Me parece que estas equivocado.

Si ejecuto el codigo que pusiste de ejemplo con cmdecho en 1 me sale lo siguiente

1
2
3
4
5
6
Command: 'VLIDE -style Enter name of text style or [?] <ROMAND6>: ROMAND
New style.
Specify font name or font filename (for SHX) <txt>: romand.shx Specify height of text or [Annotative] <0.0000>: 1.800000000000000 Specify width factor <1.0000>: 0.900000000000000
Specify obliquing angle <0.0>: 0 Display text backwards? [Yes/No] <No>: N Display text upside-down? [Yes/No] <No>: N Vertical? [Yes/No] <No>: N
"ROMAND" is now the current text style.
Command:

y si lo cambio a 0 no sale nada:
1
Command

Eso si, ten presente que el valor que devuelve una rutina es lo ultimo que procesa. Puede ser que si la ultima línea de la rutina es un command te muestre la secuencia de ese command como resultado de la rutina, pero eso se soluciona agregandole un (princ) al final.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AUTOLISP: Evitar ciertas cosas en la linea de comandos

Publicado por Gerardo (446 intervenciones) el 18/07/2016 23:37:40
Por cierto, no lo estas preguntando pero yo tengo un gran consejo sobre la funcion "command": No usarla. Desde luego que cuando estamos aprendiendo es lo más simple e intuitivo, pero tiene muchos problemas. Por ejemplo, requiere control de errores, es muy dependiente de los archivos y de la version e idioma del cad, un "deshacer" no deshace toda la rutina sino que hay que aplicarlo varias veces o programar el "undo" anidado para que funcione bien, se ejecuta bastante más lento... así es que para progresar en la programación sobre AutoCad hay que irlo intentando sin comandos.

he aquí dos ejemplos de como hacer lo del mismo codigo de tu ejemplo sin usar command

;Metodo 1 - Entmake (codigos DXF)
1
2
3
4
(if (null (tblsearch "STYLE" "Romand"))
	(entmake '((0 . "STYLE") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord")
				  (2 . "Romand") (70 . 0) (40 . 1.8) (41 . 0.9) (3 . "romand.shx") ) )
)

;Metodo 2 - Objectos activeX
1
2
3
4
5
6
7
8
9
(setq styles (vla-get-TextStyles (vla-get-activedocument (vlax-get-acad-object))))
(if (= (type (vl-catch-all-apply 'vla-item (list styles "Romand"))) 'VL-CATCH-ALL-APPLY-ERROR)
	(progn
		(setq style (vla-add styles "Romand"))
		(vla-put-fontFile style "romand.shx")
		(vla-put-Height style 1.8)
		(vla-put-Width style 0.9)
	)
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Nicolás

AUTOLISP: Evitar ciertas cosas en la linea de comandos

Publicado por Nicolás (21 intervenciones) el 19/07/2016 01:08:05
Muy impresionante tus conocimientos con respecto al tema, hace tiempo que me vengo pasando más al entmake y dejando de lado al command por esta razón de que siga apareciendo los pasos en la linea de comandos, quizás no lo este usando al cmdecho bien, es más, acabo de hacer una pausa escribiendo aquí y probando el cmdecho funcionó, mañana cuando vaya a la oficina corroboraré como desarrollé el programa.

Por suerte hace algunos minutos pude deshacerme de la principal traba por la cual no usaba el entmake, y era como crear los pares puntuados con variables, suponiendo un texto="texto"

(cons 1 texto) => (1 . "texto") lo peor es que algo tan sencillo no lo encontraba por ningún lado

Muchas gracias! cualquier cosa volveré a escribir!

PD: me gusto lo de (if (null (tblsearch "STYLE" "Romand"))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AUTOLISP: Evitar ciertas cosas en la linea de comandos

Publicado por Gerardo (446 intervenciones) el 19/07/2016 03:48:45
Buenisimo que te haya sido de utilidad.

En lo que te pueda ayudar, sera un gusto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AUTOLISP: Evitar ciertas cosas en la linea de comandos

Publicado por Jonatan (1 intervención) el 30/09/2016 14:42:00
Buen dia Gerardo, leyendo aca llegue a la conclusion de que debe ser el abuso de "command" lo que me hace super lento mi programa, pero no encuentro la vuelta al entmake o entmod para crear presentaciones y sus ventanas de presentacion. Y no encuentro manuales para aprender a usar Vlisp o ActiveX (de hecho no encuentro una definicion clara de que son) Estoy usando Autolisp y programando en un block de notas jaja
Podrias tirarme algun consejo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar