AutoCad - extraer datos y textos de una angular dimesion

 
Vista:
sin imagen de perfil

extraer datos y textos de una angular dimesion

Publicado por Milton (12 intervenciones) el 01/12/2023 17:04:08
Estimados buen día alguien me puede ayudar, cómo puedo extraer datos x, y y textos de angulos minutos y segundos de una angular dimensión.
adjunto captura de imagen en formato zip y los datos que se necesitan extraer.

X = 512928.000 Y = 9552474.000 28°50'23"
X = 512978.000 Y = 9552469.000 36°32'54"
X = 513045.000 Y = 9552509.000 2°59'25"
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
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 01/12/2023 22:26:20
Hola, entiendo que las posiciones x e y son el vértice del ángulo medido.
AutoCAD guarda los ángulos como radianes internamente, aunque la transformación, bien mediante una Lisp, bien después en una hoja Excel, es algo trivial.

Si son pocas cotas, no merece la pena escribir una Lisp, ya que seleccionándolas, te da esos valores en propiedades.

Para ver como guarda autocad una cota angular, y sus valores, puedes dibujar una y teclear en barra de comandos lo siguiente:

(princ (entget (entlast)))

y darle intro. Esto te imprime en barra una lista de valores que es como autocad guarda la cota. los valores los guarda así (indice . valor) y en la cota angular, el punto x y es el indice 15, y el valor de los radianes el indice 42. por ejemplo:

((-1 . <Nombre entidad: 7ff44c7103f0>) (0 . DIMENSION) (5 . 4A7) (102 . {ACAD_XDICTIONARY) (360 . <Nombre entidad: 7ff44c7104c0>) (102 . }) (102 . {ACAD_REACTORS) (330 . <Nombre entidad: 7ff44c710560>) (102 . }) (330 . <Nombre entidad: 7ff44c7039f0>) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 0) (100 . AcDbDimension) (280 . 0) (2 . *D6) (10 4225.0 1299.39 0.0) (11 3701.7 1617.51 0.0) (12 0.0 0.0 0.0) (70 . 34) (1 . ) (71 . 5) (72 . 1) (41 . 1.0) (42 . 0.785398) (73 . 0) (74 . 0) (75 . 0) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0) (210 0.0 0.0 1.0) (3 . ISO-25) (100 . AcDb2LineAngularDimension) (13 2933.68 1299.39 0.0) (14 3884.29 2250.0 0.0) (15 2933.68 1299.39 0.0) (16 3734.59 1513.99 0.0) (40 . 0.0) (50 . 0.0))

Sabiendo esto, solo hay que crear una lisp que seleccionando las cotas angulares estraiga los valores requeridos, (tal vez haga la conversión a grados, minutos, segundos) y los guarde en un texto multiple, para luego copiar a excel.

no creo que hoy me de tiempo a programar eso, pero si mañana o pasado tengo un rato, intentaré programar una lisp que haga eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 02/12/2023 00:50:18
Al final no pude resistir la tentación de intentarlo, y salió esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
(defun c:excoang (/		seleccion     contador
		  nombreent	p1	      radianesmedidos
		  textox	textoy	      textocompleto
		 )
 
  (setq textocompleto "")
 
  (while (not seleccion)
 
    (setq seleccion (ssget '((0 . "DIMENSION")))
	  contador 0
    )
  )
  (repeat (sslength seleccion)
    (setq nombreent	  (ssname seleccion contador)
	  contador	  (1+ contador)
	  p1		  (cdr (assoc 15 (entget nombreent)))
	  radianesmedidos
			  (cdr (assoc 42 (entget nombreent)))
	  textox
			  (strcat "X= " (rtos (car p1) 2 6))
	  textoy
			  (strcat "Y= " (rtos (cadr p1) 2 6))
	  textocompleto
			  (strcat textocompleto
				  "\n"
				  textox
				  "\t"
				  textoy
				  "\t"
				  (rtos radianesmedidos 2 6)
			  )
    )
  )
(princ textocompleto)
  (command "_mtext"  pause "a" 100  "@0,0" textocompleto "")
)

espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

extraer datos y textos de una angular dimesion

Publicado por Milton (12 intervenciones) el 05/12/2023 02:03:08
Excelente estimado Juanma, muchas gracias me sirve de mucha ayuda, muy agradecido por tu apoyo.
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
sin imagen de perfil

extraer datos y textos de una angular dimesion

Publicado por Milton (12 intervenciones) el 15/12/2023 03:22:18
Estimado Juanma buenas noches, te tengo una rutina lisp y necesito de tu apoyo, no se si me puedes apoyar en complementarlo, el lisp me da un reporte de las coordenadas X, Y, Z, distancia entre vertices y progresiva entre vertices.
Lo que requiero en mi reporte es algo similar a esto: incluir en el reporte los angulos de los vertices de la polilinea y la dirección de giro I=izquierda y D=derecha.
Te envío en un archivo zipeado un reporte en excel, con lo que mas o menos necesito que arroje el reporte en autocad, la polilinea en autocad y la rutina lisp, espero me puedas ayudar mi estimado. Lo más complicado es como sacar los angulos en grados minutos y segundos y los quiebres de la polilinea, que genere el reporte sin estar acotando los angulos manualmente.

I.L. 496853 9546751 0.00 0.00
V1 496861 9546737 16.12 16.12 35°37'54" DI
V2 496933 9546704 79.20 95.32 16°49'54" DD
V3 497113 9546545 240.17 335.49 20°53'57" DI
V4 497361 9546452 264.86 600.35 39°30'45" DD
V5 497608 9546023 495.03 1,095.38 55°6'55" DI
V6 497758 9546010 150.56 1,245.94 4°30'8" DI
V7 497885 9546009 127.00 1,372.94 13°9'53" DI
V8 498213 9546083 336.25 1,709.19 33°57'51" DD
V9 498411 9546006 212.45 1,921.64 6°11'57" DI
V10 498768 9545910 369.68 2,291.32 24°39'39" DI
V11 498957 9545942 191.69 2,483.01 5°9'15" DD
V12 499034 9545948 77.23 2,560.24 37°9'1" DD
V13 499464 9545672 510.96 3,071.20 44°12'48" DI
V14 499675 9545715 215.34 3,286.54 10°1'27" DD
V15 499790 9545718 115.04 3,401.58 7°19'34" DI
V16 499906 9545736 117.39 3,518.97 14°32'7" DI
V17 499950 9545755 47.93 3,566.90 20°19'12" DD
V18 500082 9545762 132.19 3,699.09 3°57'35" DD
V19 500392 9545757 310.04 4,009.13 25°56'45" DD
V20 500542 9545681 168.15 4,177.28 33°45'60" DI
F.L. 501253 9545767 716.18 4,893.46 46°26'21" DD
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
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 15/12/2023 23:31:51
una vez que ya tienes los vértices, se podría programar de dos enfoques distintos, bien colocando las cotas angulares (automáticamente) y luego leer sus valores, o bien, directamente haciendo el calculo del ángulo entre puntos consecutivos, e ir recorriendo la polilínea.

sería cuestión de saber si necesitas acotar las polilíneas, o solo obtener los datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

extraer datos y textos de una angular dimesion

Publicado por Milton (12 intervenciones) el 16/12/2023 01:07:56
Hola Juanma gracias por tu respuesta, no necesito la acotación en el dibujo, solo obtener el reporte con los datos reales de la polilinea, sobre todo los angulos y sentido de giro.
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
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 16/12/2023 02:38:51
te adjunto tu rutina modificada, que te da los datos que quieres en un mtexto.

te lo pongo en mtexto porque se respetan las tabulaciones, por lo que al pegar en un Excel, queda cada cosa en su columna.

te aviso de que he detectado algunos errores leves:
- pega puntos en lugar de comas, por lo que tienes que cambiarlos en Excel
- a veces, si un ángulo es muy próximo a un grado exacto pero no llega, puede que te ponga cosas raras como " 89º59'60" eso es por que los segundos están redondeados.

espero que te sirva.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
(defun c:ReporteVertices (/ ent i pt prevPt lengthi cumulativeLength)
 
  (setq	anggrprev 0
 
	textocompleto
	 ""
 
  )
 
 
  (defun jm:grados-gms
	 (grados / gradoent minutos minutoent segundos segundosent)
 
    (setq
      gradoent	 (fix grados)
      minutos	 (* 60 (- grados gradoent))
      minutoent	 (fix minutos)
      segundos	 (* 60 (- minutos minutoent))
      segundoent
		 (rtos segundos 2 0)
    )
 
    (setq gradominutosegundo
	   (strcat (itoa gradoent)
		   "%%d "
		   (itoa minutoent)
		   "' "
		   segundoent
		   "\""
	   )
    )
  )
  (defun angulototal (punti1 punti2 / x1 x2 y1 y2 m angh anggr)
    (setq x1	(car punti1)
	  y1	(cadr punti1)
	  x2	(car punti2)
	  y2	(cadr punti2)
	  dy	(- y2 y1)
	  dx	(- x2 x1)
	  m	(if (/= 0 dx)
		  (/ dy dx)
		)
	  angh	(if (= dx 0)
		  (/ pi 2)
		  (if (> dx 0)
		    (atan m)
		    (+ 180 (atan m))
		  )
		)
	  anggr	(* 180 (/ angh pi))
    )
  )
  (setq ent (car (entsel "\nSelecciona una LWPOLYLINE: ")))
  (if ent
    (progn
      (setq i 0
	    cumulativeLength
	     0.0
      )
      (while (<= i (vlax-curve-getEndParam ent))
	(setq pt (vlax-curve-getPointAtParam ent i))
;;;	(princ (strcat "\n"
;;;		       (rtos (car pt) 2 2)
;;;		       ", "
;;;		       (rtos (cadr pt) 2 2)
;;;		       ", "
;;;;;;		       (rtos (caddr pt) 2 2)
;;;	       )
;;;	)
 
					; Calcula la longitud entre vértices
 
 
 
	(if prevPt
	  (setq lengthi (distance prevPt pt))
 
 
 
	  (progn
 
	    (setq prevPt (list (- (car pt) 10) (cadr pt) (caddr pt)))
	    (setq lengthi 0.0)
	  )
 
	)
 
					;-----------------------
 
	(setq angulito (angulototal prevPt pt)
	      giro     (if anggrprev
			 (- angulito anggrprev)
			 0
		       )
	      sentido  (if (< giro 0)
			 "DD"
			 (if (> giro 0)
			   "DI"
			   "recto"
			 )
		       )
	      giro     (abs giro)
	)
 
 
 
	(setq cumulativeLength (+ cumulativeLength lengthi))
 
					; Muestra la longitud y la progresiva en el informe
	(if (< 0 i)
	  (setq	textocompleto
		 (strcat textocompleto
			 "\n"
			 (rtos (car prevPt) 2 2)
			 "\t "
			 (rtos (cadr prevPt) 2 2)
 
			  "\t "
			 (rtos lengthiant 2 2)
			 "\t "
			 (rtos cumulativeLengthant 2 2)
			 "\t "
 
			 (if (< 1 i)
			   (strcat (jm:grados-gms giro)
				   "\t "
				   sentido
			   )
			   "\t "
			 )
 
		 )
	  )
	)
 
 
 
 
					; Almacena el punto actual para el próximo cálculo
	(setq prevPt pt)
	(setq anggrprev angulito)
 
	(setq lengthiant lengthi)
	(setq cumulativeLengthant 0)
	(setq cumulativeLengthant (+ cumulativeLengthant lengthiant))
 
	(setq i (+ i 1.0))
      )
    )
 
 
    (princ "\nNo se seleccionó ninguna LWPOLYLINE.")
  )
 
(setq	textocompleto
		 (strcat textocompleto
			 "\n"
			 (rtos (car Pt) 2 2)
			 "\t "
			 (rtos (cadr Pt) 2 2)
 
			  "\t "
			 (rtos lengthi 2 2)
			 "\t "
			 (rtos cumulativeLength 2 2)))
 
 
  (command "_mtext" pause "a" 100 "@0,0" textocompleto "")
  (princ)
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 16/12/2023 04:17:32
un par de correcciones



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
(defun c:ReporteVertices (/ ent i pt prevPt lengthi cumulativeLength)
 
  (setq	anggrprev 0
 
	textocompleto
	 ""
 
  )
 
 
  (defun jm:grados-gms
	 (grados / gradoent minutos minutoent segundos segundosent)
 
    (setq
      grados2 (atof (rtos grados 2 4))
      gradoent	 (fix grados2)
      minutos	 (* 60 (- grados gradoent))
      minutoent	 (fix minutos)
      segundos	 (* 60 (- minutos minutoent))
      segundoent
		 (rtos segundos 2 0)
    )
 
    (setq gradominutosegundo
	   (strcat (itoa gradoent)
		   "%%d "
		   (itoa minutoent)
		   "' "
		   segundoent
		   "\""
	   )
    )
  )
  (defun angulototal (punti1 punti2 / x1 x2 y1 y2 m angh anggr)
    (setq x1	(car punti1)
	  y1	(cadr punti1)
	  x2	(car punti2)
	  y2	(cadr punti2)
	  dy	(- y2 y1)
	  dx	(- x2 x1)
	  m	(if (/= 0 dx)
		  (/ dy dx)
		)
	  angh	(if (= dx 0)
		  (if (< 0 dy)
		    (/ pi 2)
		    (/ pi -2)
		  )
		  (if (> dx 0)
		    (atan m)
		    (+ 180 (atan m))
		  )
		)
	  anggr	(* 180 (/ angh pi))
    )
  )
  (setq ent (car (entsel "\nSelecciona una LWPOLYLINE: ")))
  (if ent
    (progn
      (setq i 0
	    cumulativeLength
	     0.0
      )
      (while (<= i (vlax-curve-getEndParam ent))
	(setq pt (vlax-curve-getPointAtParam ent i))
;;;	(princ (strcat "\n"
;;;		       (rtos (car pt) 2 2)
;;;		       ", "
;;;		       (rtos (cadr pt) 2 2)
;;;		       ", "
;;;;;;		       (rtos (caddr pt) 2 2)
;;;	       )
;;;	)
 
					; Calcula la longitud entre vértices
 
 
 
	(if prevPt
	  (setq lengthi (distance prevPt pt))
 
 
 
	  (progn
 
	    (setq prevPt (list (- (car pt) 10) (cadr pt) (caddr pt)))
	    (setq lengthi 0.0)
	  )
 
	)
 
					;-----------------------
 
	(setq angulito (angulototal prevPt pt)
	      giro     (if anggrprev
			 (- angulito anggrprev)
			 0
		       )
	      sentido  (if (< giro 0)
			 "DD"
			 (if (> giro 0)
			   "DI"
			   "recto"
			 )
		       )
	      giro     (abs giro)
	)
 
 
 
	(setq cumulativeLength (+ cumulativeLength lengthi))
 
					; Muestra la longitud y la progresiva en el informe
	(if (< 0 i)
	  (setq	textocompleto
		 (strcat textocompleto
			 "\n"
			 (rtos (car prevPt) 2 2)
			 "\t "
			 (rtos (cadr prevPt) 2 2)
 
			 "\t "
			 (rtos lengthiant 2 2)
			 "\t "
			 (rtos cumulativeLengthant 2 2)
			 "\t "
 
			 (if (< 1 i)
			   (strcat (jm:grados-gms giro)
				   "\t "
				   sentido
			   )
			   "\t "
			 )
 
		 )
	  )
	)
 
 
 
 
					; Almacena el punto actual para el próximo cálculo
	(setq prevPt pt)
	(setq anggrprev angulito)
 
	(setq lengthiant lengthi)
	(setq cumulativeLengthant 0)
	(setq cumulativeLengthant (+ cumulativeLengthant lengthiant))
 
	(setq i (+ i 1.0))
      )
    )
 
 
    (princ "\nNo se seleccionó ninguna LWPOLYLINE.")
  )
 
  (setq	textocompleto
	 (strcat textocompleto
		 "\n"
		 (rtos (car Pt) 2 2)
		 "\t "
		 (rtos (cadr Pt) 2 2)
 
		 "\t "
		 (rtos lengthi 2 2)
		 "\t "
		 (rtos cumulativeLength 2 2)
	 )
  )
 
 
  (command "_mtext" pause "a" 100 "@0,0" textocompleto "")
  (princ)
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

extraer datos y textos de una angular dimesion

Publicado por Milton (12 intervenciones) el 16/12/2023 06:39:41
Juanma, me da un error, a que se debe estoy trabajando con autocad 2022 en ingles

Command: _appload reporte_vertices_okOK.LSP successfully loaded.
Command:
Command:
Command: REPORTEVERTICES
Selecciona una LWPOLYLINE: _mtext
Current text style: "Standard" Text height: 2.5 Annotative: No
Specify first corner:
Specify opposite corner or [Height/Justify/Line spacing/Rotation/Style/Width/Columns]: a
2D point or option keyword required.
; error: Function cancelled
Specify opposite corner or [Height/Justify/Line spacing/Rotation/Style/Width/Columns]:
MText:
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
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 16/12/2023 12:10:33
entra en el estilo de texto, y dale altura 0
puede ser eso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 16/12/2023 12:58:26
vale, error localizado, creo:
busca esta línea casi al final del lisp:
1
(command "_mtext" pause "a" 100 "@0,0" textocompleto "")

cámbiala por esta otra:

1
(command "_mtext" pause "_h" 100 "@0,0" textocompleto "")

es practicamente lo mismo, pero la primera solo funciona en AutoCAD en español, ya que la altura de texto se indica con una "a", y en ingles con una "h".

al poner "_h" le estoy diciendo que tome el comando en ingles y por tanto, sirve para todos los AutoCAD, ya que todos son el ingles "traducido".

Recuerda verificar los resultados, no sea que tenga un error en algún sitio.

Y puedes dar valoración positiva si lo estimas correcto.

espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

extraer datos y textos de una angular dimesion

Publicado por Milton (12 intervenciones) el 16/12/2023 17:24:30
Buen día estima Juanma, con el cambio en esa última línea la rutina corre perfecto, pero en los datos de la progresiva entre vértices la rutina está tomando los mismo datos de la longitud entre vértices, excepto la primera progresiva y la longitud total que sí están bien.

496808.04 9547930.25 0 0
497505.55 9547293.9 944.18 944.18 42° 22' 28" DI
498910.7 9547293.9 1405.14 1405.14 14° 31' 24" DI toma el mismo valor de la longitud entre vértices
500548.35 9547718.13 1691.7 1691.7 20° 20' 3" DD toma el mismo valor de la longitud entre vértices
503823.64 9547384.81 3292.21 3292.21 16° 24' 19" DI toma el mismo valor de la longitud entre vértices
507927.87 9548152.47 4175.4 4175.4 27° 3' 13" DD toma el mismo valor de la longitud entre vértices
510970.66 9547253.5 3172.81 14681.45
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
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 16/12/2023 17:55:59
Ok, es un error de colocación de variable.

Copia está línea (casi al final, línea 149 o así)

(setq cumulativeLengthant 0)

Y pégala casi al principio, sobre la línea 9 o 10, justo antes de la segunda que pone (defun......) .la primera es el comienzo del programa.
A la del final, que has copiado, escríbele delante un ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

extraer datos y textos de una angular dimesion

Publicado por Milton (12 intervenciones) el 16/12/2023 19:39:41
Estimado Juanma, el error persiste, realice lo indicado copié la línea antes del segundo defun con ; al inicio del codigo pero no soluciona lo de la progresiva.
Aquí el codigo modificado

(defun c:ReporteVertices (/ ent i pt prevPt lengthi cumulativeLength)

(setq anggrprev 0

textocompleto
""

)

; (setq cumulativeLengthant 0)

(defun jm:grados-gms
(grados / gradoent minutos minutoent segundos segundosent)

(setq
grados2 (atof (rtos grados 2 4))
gradoent (fix grados2)
minutos (* 60 (- grados gradoent))
minutoent (fix minutos)
segundos (* 60 (- minutos minutoent))
segundoent
(rtos segundos 2 0)
)

(setq gradominutosegundo
(strcat (itoa gradoent)
"%%d "
(itoa minutoent)
"' "
segundoent
"\""
)
)
)
(defun angulototal (punti1 punti2 / x1 x2 y1 y2 m angh anggr)
(setq x1 (car punti1)
y1 (cadr punti1)
x2 (car punti2)
y2 (cadr punti2)
dy (- y2 y1)
dx (- x2 x1)
m (if (/= 0 dx)
(/ dy dx)
)
angh (if (= dx 0)
(if (< 0 dy)
(/ pi 2)
(/ pi -2)
)
(if (> dx 0)
(atan m)
(+ 180 (atan m))
)
)
anggr (* 180 (/ angh pi))
)
)
(setq ent (car (entsel "\nSelecciona una LWPOLYLINE: ")))
(if ent
(progn
(setq i 0
cumulativeLength
0.0
)
(while (<= i (vlax-curve-getEndParam ent))
(setq pt (vlax-curve-getPointAtParam ent i))
;;; (princ (strcat "\n"
;;; (rtos (car pt) 2 2)
;;; ", "
;;; (rtos (cadr pt) 2 2)
;;; ", "
;;;;;; (rtos (caddr pt) 2 2)
;;; )
;;; )

; Calcula la longitud entre vértices



(if prevPt
(setq lengthi (distance prevPt pt))



(progn

(setq prevPt (list (- (car pt) 10) (cadr pt) (caddr pt)))
(setq lengthi 0.0)
)

)

;-----------------------

(setq angulito (angulototal prevPt pt)
giro (if anggrprev
(- angulito anggrprev)
0
)
sentido (if (< giro 0)
"DD"
(if (> giro 0)
"DI"
"recto"
)
)
giro (abs giro)
)



(setq cumulativeLength (+ cumulativeLength lengthi))

; Muestra la longitud y la progresiva en el informe
(if (< 0 i)
(setq textocompleto
(strcat textocompleto
"\n"
(rtos (car prevPt) 2 2)
"\t "
(rtos (cadr prevPt) 2 2)

"\t "
(rtos lengthiant 2 2)
"\t "
(rtos cumulativeLengthant 2 2)
"\t "

(if (< 1 i)
(strcat (jm:grados-gms giro)
"\t "
sentido
)
"\t "
)

)
)
)




; Almacena el punto actual para el próximo cálculo
(setq prevPt pt)
(setq anggrprev angulito)

(setq lengthiant lengthi)
(setq cumulativeLengthant 0)
(setq cumulativeLengthant (+ cumulativeLengthant lengthiant))

(setq i (+ i 1.0))
)
)


(princ "\nNo se seleccionó ninguna LWPOLYLINE.")
)

(setq textocompleto
(strcat textocompleto
"\n"
(rtos (car Pt) 2 2)
"\t "
(rtos (cadr Pt) 2 2)

"\t "
(rtos lengthi 2 2)
"\t "
(rtos cumulativeLength 2 2)
)
)


(command "_mtext" pause "h" 100 "@0,0" textocompleto "")
(princ)
)
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
Imágen de perfil de Juanma
Val: 171
Bronce
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

extraer datos y textos de una angular dimesion

Publicado por Juanma (140 intervenciones) el 16/12/2023 20:40:49
Me entendiste mal o yo me expliqué mal

El ; quítalo de la linea esa que has pegado,
Y colocalo en la igual del final que copiaste.

El ; lo que hace es " anular" esa línea, por lo que pretendo desactivar la del final.

Tú desactivaste la misma que pegaste, por lo que no hiciste nada.

Si lo prefieres, corta y pega, quitándola del final
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

extraer datos y textos de una angular dimesion

Publicado por Milton (12 intervenciones) el 16/12/2023 22:29:49
Quedo excelente mi estimado Juanma, la rutina corre a la perfección, gracias por tu ayuda amigo.

496207.58 9549148.26 0 0
498416.27 9547512.1 2748.7 2748.7 60° 45' 52" DI
500980.39 9548666.29 2811.91 5560.61 36° 3' 35" DD
505765.89 9547664.3 4889.28 10449.88 29° 12' 47" DI
510221.36 9549059.48 4668.8 15118.69
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