Cerrar
¿Te gusta hispacad? Compártelo
Llámenos: 668 83 00 83

eliminar y crear estilo de dimensionamiento

El lenguaje de programación principal que tiene AutoCAD® para la personalización, permitiendo crear programas o rutinas que mejoran o complementan las herramientas existentes. Con unas nociones básicas de este lenguaje de programación es posible realizar programas que optimicen tareas repetitivas o incluso realicen tareas de gran complejidad. Trate de plantear sus dudas exponiendo ejemplos de lo que desea conseguir. Evite pedir la realización de un programa completo. Este foro está dedicado a la resolución de dudas concretas de un determinado código o parte del mismo.

Moderadores: Jorge_BH, Yoland, SpeedCAD, Acad version, devitg

eliminar y crear estilo de dimensionamiento

Notapor cybor » Vie 18 Feb, 2005 15:58

Un favor, necesito crear una rutina que cuando la carge.. busque si esta creado en dimstyle STANDARD y eliminarla, si no está crearla... es que necesito agregarla dentro de otra rutina para que cuando corra junto a la otra no ocurra ningun problema....
cybor
 
Mensajes: 64
Registrado: Mié 16 Feb, 2005 21:19

Re: eliminar y crear estilo de dimensionamiento

Notapor SpeedCAD » Vie 18 Feb, 2005 16:39

cybor, Hola...

Puedes hacerlo de la siguiente forma:

Código: Seleccionar todo
(if (not (tblsearch "Dimstyle" "Standard"))
    (progn
        ...codigo para crearla...
    )
)
Vamos por Visual .NET :yes:
SpeedCAD
 
Mensajes: 4610
Registrado: Jue 11 Sep, 2003 13:43
Ubicación: Santiago - CHILE

: eliminar y crear estilo de dimensionamiento

Notapor cybor » Vie 18 Feb, 2005 17:18

Gracias SpeedCAD por tu aporte ... una más si no es mucho pedir ...
como puedo convertir una entidad POLYFACE MESH a polilinea?
cybor
 
Mensajes: 64
Registrado: Mié 16 Feb, 2005 21:19

Re: eliminar y crear estilo de dimensionamiento

Notapor SpeedCAD » Vie 18 Feb, 2005 17:27

cybor, Hola...

Una forma es que ocupes el comando wmfout, seleccionas la POLYFACE y luego lo guardas en alguna parte de tu computador, luego ejecutas el comando wmfin y abres lo que exportaste. Despues lo explotas y te quedara como una polilinea 2D, y finalmente para optimizarla ejecutas el comando convert. Y listo, son varios comandos pero el proceso es rapido...
Vamos por Visual .NET :yes:
SpeedCAD
 
Mensajes: 4610
Registrado: Jue 11 Sep, 2003 13:43
Ubicación: Santiago - CHILE

: eliminar y crear estilo de dimensionamiento

Notapor cybor » Vie 18 Feb, 2005 17:57

una vez más ... muchas gracias SpeedCAD....
cybor
 
Mensajes: 64
Registrado: Mié 16 Feb, 2005 21:19

Re: eliminar y crear estilo de dimensionamiento

Notapor SpeedCAD » Vie 18 Feb, 2005 19:02

cybor, de nada ;)
Vamos por Visual .NET :yes:
SpeedCAD
 
Mensajes: 4610
Registrado: Jue 11 Sep, 2003 13:43
Ubicación: Santiago - CHILE

: eliminar y crear estilo de dimensionamiento

Notapor LM2Arq » Sab 19 Feb, 2005 12:57

Hola cybor.

A fin de crear con éxito el código específico que deseas respecto del "estilo de acotación" y colocarlo en la ubicación que SpeedCAD te indica en la rutina que te ha propuesto, debes tener un especial cuidado en observar la siguientes consideraciones y peculiaridades que diferencian, en cuanto a comportamiento bajo AutoCAD, a los "estilos de acotación" (objetos "DIMSTYLE") respecto, por ejemplo, de los "estilos de texto" (objetos "STYLE") o de las "capas" (objetos "LAYER") de un dibujo:

1) Mientras que en los "estilos de texto" siempre tiene que existir un estilo de nombre "STANDARD" y en las "capas" siempre tiene que existir una de nombre "0" (que en ambos casos nunca nunca nunca se pueden eliminar, aunque no estén siendo usados), en cambio en los "estilos de acotación" no existe uno que deba tener un nombre específico prefijado por AutoCAD, de modo que al abrir un nuevo dibujo existirá definido el "estilo de acotación" que exista en la plantilla o dibujo prototipo usado, pudiendo ser cualquiera ("estilo de acotación" de nombre "STANDARD" si usas una plantilla de formato inglés, o de nombre "ISO-25" si usas una plantilla de formato métrico).

2) Para eliminar un "estilo de acotación" con la orden LIMPIA (_PURGE) de AutoCAD, la únicas dos condiciones son:

- Que no haya sido ya referido o usado dicho "estilo de acotación" con ninguna entidad de acotación que permanezca existente en el dibujo.

- Que no esté "definido como actual" el referido "estilo de acotación", aunque no se haya dibujado con él ninguna entidad de dibujo. Para comprobar que no es el estilo actual, desde una rutina LISP se puede ver que no sea el valor guardado en la variable de sistema "DIMSTYLE" con la función GETVAR.

El código para "Limpiar" o "Crear" un estilo de acotación podría basarse genéricamente en algo como lo siguiente que te propongo:
Código: Seleccionar todo
(IF (TBLSEARCH "DIMSTYLE" "STANDARD") ;_control para ver si existe la definición del estilo de acotación
   ;;Si existe la definición del estilo de acotación...:
   (IF (/= (STRCASE (GETVAR "DIMSTYLE")) "STANDARD") ;_control para ver si es el actual
      ;;...Y no es el actual estilo de acotación... lo limpia del dibujo (si no ha sido usado):
      (COMMAND "_.-PURGE" "_Dimstyles" "STANDARD" "_No")
   ) ;_fin If
   ;;Si no existe la definición del estilo de acotación... la crea:
   (ENTMAKE
      (LIST
         '(0 . "DIMSTYLE")
         '(100 . "AcDbSymbolTableRecord")
         '(100 . "AcDbDimStyleTableRecord")
         '(2 . "STANDARD") ;_Nombre del estilo de acotación a crear
         '(70 . 0)
      )
   ) ;_fin Entmake
)

A la hora de "crear" con ENTMAKE el "estilo de acotación", en el anterior código te he puesto tan sólo aquellos códigos DXF que como mínimo son necesarios para que se pueda crear la tabla de definición del objeto no gráfico del "estilo de acotación", anque no obstante tú puedes incluir en la lista que lo definiría tantos otros códigos DXF como creas conveniente para definirla a tu gusto y adaptarla a tus necesidades de trabajo. Te cito a continuación, a modo de ejemplo algunos códigos DXF y las variables de acotación a que corresponderían y que por tanto estarías definiendo en el "estilo de acotación" así creado:

Cód. DXF / Variable de acotación
41 DIMASZ (tamaño de la línea de cota, de los extremos de flecha en directrices y de las líneas de conexión)
42 DIMEXO (separación de las líneas de referencia respecto de sus puntos de origen)
43 DIMDLI (espaciado de las líneas de cota cuando se acota con línea de base)
44 DIMEXE (extensión de la línea de referencia por encima de la línea de cota)
...
73 DIMTIH
74 DIMTOH
77 DIMTAD
78 DIMZIN
...
140 DIMTXT
141 DIMCEN
143 DIMALTF
147 DIMGAP
171 DIMALTD
172 DIMTOFL
...
271 DIMDEC
272 DIMTDEC
274 DIMALTTD
278 DIMDSEP
283 DIMTOLJ
284 DIMTZIN
...
340 DIMTXSTY (estilo del texto de la cota)

Un saludo.
LM2Ark.
Última edición por LM2Arq el Vie 04 Ago, 2006 18:39, editado 1 vez en total
MIGUEL A. LAZARO, desarrollador de LM2Ark
(aplicación para arquitectura y construcción)
http://perso.wanadoo.es/lm2ark/index.htm
LM2Arq
 
Mensajes: 221
Registrado: Dom 16 Nov, 2003 03:01
Ubicación: Córdoba (ESPAÑA)

: eliminar y crear estilo de dimensionamiento

Notapor cybor » Lun 21 Feb, 2005 23:15

Muchas Gracias LM2arq....disculpa que recien lea tu respuesta ....pero de verdad que me la graficastes muy bien .... acabo de probar el codigo sobre mi rutina y funciona de las mil maravillas .... sin desmerecer a SpeedCad que me ayudo desde el primer momento.... muchas gracias a los 2.
cybor
 
Mensajes: 64
Registrado: Mié 16 Feb, 2005 21:19

Re: eliminar y crear estilo de dimensionamiento

Notapor Florencia » Lun 31 Jul, 2006 01:32

Hola!
He estado trabajando con estos datos que han posteado, pero me ha surgido un error!

No puedo colocarle al estilo de cota, un estilo de texto ya creado, el cual se llama "Estructura", y no me toma la flecha "oblique".

Les paso el codigo.
Nota: si quito la linea '(340 . "Estructura") funciona.
Nota2: tengo ACAD 2006

Código: Seleccionar todo
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DIMSTYLE 1-100
(defun c:dim-1-100 ()
(terpri)
(IF (TBLSEARCH "DIMSTYLE" "1-100") ;_control para ver si existe la definición del estilo de acotación
   ;;Si existe la definición del estilo de acotación ... lo activa...!
   (IF (/= (STRCASE (GETVAR "DIMSTYLE")) " 1-100")
   (COMMAND "_-Dimstyle" "r" "1-100")
   ) ;_fin If
   ;;Si no existe la definición del estilo de acotación... la crea:
   (progn
     (ENTMAKE
      (LIST
         '(0 . "DIMSTYLE")
         '(100 . "AcDbSymbolTableRecord")
         '(100 . "AcDbDimStyleTableRecord")
         '(2 . "1-100") ;_Nombre del estilo de acotación a crear
         '(70 . 0)
         '(3 . "")
         '(4 . "")
         '(5 . "Oblique")
         '(6 . "")
         '(7 . "")
         '(40 . 1.0)
         '(41 . 0.1)
         '(42 . 0.06)
         '(43 . 0.3)
         '(44 . 0.07)
         '(45 . 0.0)
         '(46 . 0.07)
         '(47 . 0.0)
         '(48 . 0.0)
         '(140 . 0.15)
         '(141 . 0.02)
         '(142 . 0.0)
         '(143 . 25.4)
         '(144 . 1.0)
         '(145 . 0.0)
         '(146 . 0.5)
         '(147 . 0.03)
         '(71 . 0)
         '(72 . 0)
         '(73 . 0)
         '(74 . 0)
         '(75 . 0)
         '(76 . 0)
         '(77 . 1)
         '(78 . 1)
         '(170 . 0)
         '(171 . 2)
         '(172 . 0)
         '(173 . 0)
         '(174 . 0)
         '(175 . 0)
         '(176 . 2)
         '(177 . 1)
         '(178 . 0)
         '(270 . 2)
         '(271 . 2)
         '(272 . 2)
         '(273 . 2)
         '(274 . 2)
         '(275 . 0)
         '(280 . 0)
         '(281 . 0)
         '(282 . 0)
         '(283 . 1)
         '(284 . 0)
         '(285 . 0)
         '(286 . 0)
         '(287 . 3)
         '(288 . 0)
         '(340 . "Estructura")
) ;_fin List
   ) ;_fin Entmake
      (COMMAND "_-Dimstyle" "r" "1-100") ;lo activa...!
     ) ;Fin progn
   ) ;_fin IF
(terpri)
) ;_fin defun
Florencia
 
Mensajes: 49
Registrado: Lun 03 Jul, 2006 15:00

Re: eliminar y crear estilo de dimensionamiento

Notapor medina19678 » Lun 31 Jul, 2006 15:53

Usa 3 en lugar de 340 -> '(3 . "Estructura")

Saludos.
medina19678
 
Mensajes: 286
Registrado: Mié 09 Feb, 2005 23:26
Ubicación: Zacatecas, Mex.

Notapor Florencia » Mié 02 Ago, 2006 01:09

No!
Con la opcion 3, se me aplica el texto en el sufijo de las cotas!
Gracias igualmente por responder.

Yo lo que hice, fue crear un estilo con todos sus parametros normalemente en autocad, y luego con: (TBLSEARCH "DIMSTYLE" "1-100") extraje los valores del estilo, para averiguar cada dxf y sus correspondientes valores...

Código: Seleccionar todo
Command: (TBLSEARCH "DIMSTYLE" "1-100")
((0 . "DIMSTYLE") (2 . "1-100") (70 . 0) (3 . "") (4 . "") (5 . "") (6 . "") (7
. "") (40 . 1.0) (41 . 0.1) (42 . 0.06) (43 . 0.3) (44 . 0.07) (45 . 0.0) (46 .
0.07) (47 . 0.0) (48 . 0.0) (140 . 0.15) (141 . 0.02) (142 . 0.0) (143 . 25.4)
(144 . 1.0) (145 . 0.0) (146 . 0.5) (147 . 0.03) (71 . 0) (72 . 0) (73 . 0) (74
. 0) (75 . 0) (76 . 0) (77 . 1) (78 . 1) (170 . 0) (171 . 2) (172 . 0) (173 .
0) (174 . 0) (175 . 0) (176 . 2) (177 . 1) (178 . 0) (270 . 2) (271 . 2) (272 .
2) (273 . 2) (274 . 2) (340 . <Entity name: 7ef67c18>) (275 . 0) (280 . 0) (281
. 0) (282 . 0) (283 . 1) (284 . 0) (285 . 0) (286 . 0) (287 . 3) (288 . 0))


aqui veran que en el 340, en vez de aparecerme estructura, me aparece esto (340 . <Entity name: 7ef67c18>)

POR QUE?
Gracias desde ya!

Flor.
Florencia
 
Mensajes: 49
Registrado: Lun 03 Jul, 2006 15:00

Notapor medina19678 » Mié 02 Ago, 2006 02:15

Estaba confundido, una disculpa de aqui a la luna, dos vueltas y de regreso.
Lo que tienes que hacer es agregar dos lineas:
Código: Seleccionar todo
(setq txtst (tblobjname "style" "Estructura"))

entre "progn" y "entmake".
Y la linea:
Código: Seleccionar todo
(cons 340 txtst)

en lugar de:
'(340 . "Estructura")
medina19678
 
Mensajes: 286
Registrado: Mié 09 Feb, 2005 23:26
Ubicación: Zacatecas, Mex.


Volver a AUTOLISP / VISUAL LISP

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado