



;=====================================================================================================================================================
;																									
;	( PIEL-10 )	 HACE LO MISMO QUE ( PIEL-09 ) CON ALGORIZMOS MEJORADOS		*** FUNCIONA ***									
;																									
;					DESAROLLA PIEL ENTRE (DOS SECCIONES PLANAS) SPLINES ABIERTAS Por Bandas (INPENDIENTES)						
;																									
;=====================================================================================================================================================
;																									
;																									
;					** SPLINES-PLANAS ** ABIERTAS ** en PLANOS NO PARALELOS **											
;																									
;		(SPLI-X)  	  	GRADUA (DISgra) (SPLINE-A) (SPLINE-B) => Puntos ( LIS-PA++ ) ( LIS-PB++ )								
;																									
;		(TRAZA-AB)		INTERSECCION PLANO (SPLINE-A) com PLANO (SPLINE-B) => (TRAZ-1) (TRAZ-2)									
;																									
;		(ANG-PX)		ANGULO con TRAZA de la TANGENTE en P2 al CIRCULO OSCULADOR de P1 P2 P3=>  LIS-AngX+1 = ( LIST AgT P2U T2U DISx PtraU )	
;																									
;		(MARCA-Tramos)	MARCA TRAMOS entre PUNTOS de INFLEXION y MAXIMOS y MINIMOS ( con CIRCULO y TEXTO)							
;					Toma datos de ( LIS-AngX+1 )->(LIST AgT P2U T2U DISx PtraU ) =>										
;									=> debuelve ( LIS-TRAMOS ) -> (( LIS-Tra0 )...( LIS-Tra0 )) -> ( LIST Ng1 Dg1 Pg1  Dg2 Pg2 )	
;																									
;		(GRAFICA-DIS)	GRAFICA DISTANCIAS POR TRAMOS	 	*** COMPROBACION ***											
;																									
;		(PLANO-TAG)		PLANOS TANGENTES (TAG-PA PB) Por Distancia Interseccion Tangente en Traza								
;											(SETQ LIS-Planos (CONS (LIST Pa Pia Pb1 NRA NRB ) LIS-Planos))	; LIS-PLANOS	
;											(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA  NB ) LIS-Planos))	; LIS-PLANOS	
;											(SETQ LIS-PLA-Tg (CONS LIS-Planos LIS-PLA-Tg))		; LISTA PLANOS TANGENTES	
;																									
;		(PINTA-3DC)		PINTAMOS 3D-CARAS en 3D y 2D ( PLANIFICA ( 3DC NO PLANAS ) PROYECTANDO 3A2 sobre ( 3B1 3A1 3B2 ))				
;																									
;																									
;=====================================================================================================================================================



;=====================================================================================================================================================
;									*** ***  SUB-PROGRAMAS  *** ***											
;=====================================================================================================================================================


;	PINTA PUNTOS de (LIS-PX) con Texto-Nº   (COMPROVACION)															

	(DEFUN PINTA-PUN ( / )

		(SETQ N1 -1 )
		(REPEAT (LENGTH LIS-PINTA-P)
			(SETQ N1 (+ N1 1))
			(SETQ PAAn (NTH N1 LIS-PINTA-P))
			(COMMAND "COLOR" COLO "PUNTO" PAAn)  ; COLO
			; (COMMAND "TEXTO" PAAn 0.02 90 N1)
		) ; repeat

	) ; PINTA-PUN

;																									


;-----------------------------------------------------------------------------------------------------------------------------------------------------
;	SPLINE-X   GRADUA SPLINE ( NX00 ) con ( DISgra ) => LISTA PUNTOS ( LIS-PX+2 )  											
;-----------------------------------------------------------------------------------------------------------------------------------------------------

	(DEFUN SPLI-X ( / )

		(SETQ ALIS  (ENTGET NX00))  									; lista Spline A
		(SETQ AELE  (ASSOC 10 ALIS))  								; 1º Punto Asociado a 10 (10.punto)
		(SETQ AELES (MEMBER AELE ALIS)) 								; lista a partir del Alterior (10.punto)....(11.punto)
		(SETQ X-primer (CDR (NTH 0 AELES))) 							; primer elemento (10.punto)
		(SETQ X-ultimo (CDR (NTH (- (LENGTH AELES) 1) AELES)))				; ultimo elemento (11.punto)
		(COMMAND "COLOR" COLO "TEXTO" X-primer 0.2 90 TEX)					; TEXTO = A
		(COMMAND "PUNTO" X-primer)									; PINTA 1ª punto A
		(SETQ N-enti-A1 (ENTLAST))									; nombre ultima entidad principal 1º punto A
		(COMMAND "GRADUA" NX00 DISgra)								; GRADUA SPLI-A
		(COMMAND "PUNTO" X-ultimo)									; PINTA Ultimo Punto A
	
		;	PUNTOS SECCION-A (PA1-PAn) =>   LIS-PX  Lon-LPA															
		(SETQ LIS-PX nil)											; LISTA  PUNTOS-A
		(SETQ LIS-PX (CONS (CDR (ASSOC 10 (ENTGET N-enti-A1))) LIS-PX))			; lista entidad -> (1º Punto-A)
		(SETQ W1A T)
		(WHILE W1A
			(SETQ N-enti-A2 (ENTNEXT N-enti-A1))						; Nombre entidad siguiente
			(COMMAND "BORRA" N-enti-A1 "")
			(IF (= N-enti-A2 nil)  (SETQ W1A nil)
				(PROGN
					(SETQ LIS-PX (CONS (CDR (ASSOC 10 (ENTGET N-enti-A2))) LIS-PX))
					(SETQ N-enti-A1  N-enti-A2 )
				);progn
			);if
		) ;While W1A

		;	LISTA ( LIS-PX ) Ordenada																		

		(SETQ LIS-PX  (REVERSE LIS-PX ))	; ( LIS-PX Ordenada al Derecho )  (LENGTH LIS-PX)

		;																							


		;-----------------------------------------------------------------------------------------------------------------------------------------
		;	AÑADE MARGEN ( MAR ) <SOLAPE> a ( LIS-PX ) por DETRAS ( MAR ) Primeros y por DELANTE ( MAR ) Ultimos => ( LIS-PX+M* )			
		;-----------------------------------------------------------------------------------------------------------------------------------------
		;																							
			(SETQ MAR 1 )	; Nº de PUNTOS QUE AÑADE A (LIS-PX) COMO MARGEN por DELANTE y por DETRAS => 2 x MAR => (LIS-PX++)			
		;																							
		;-----------------------------------------------------------------------------------------------------------------------------------------

		;	AÑADE a ( LIS-PX Ordenada ) como PRIMEROS los ( MAR Ultimos) de ( LIS-PX Ordenada )			

		(SETQ LIS-PX++ LIS-PX)

		(SETQ Nu 0)
		(REPEAT MAR
			(SETQ Nu (+ Nu 1))
			(SETQ LIS-PX++ (CONS (NTH (- (LENGTH LIS-PX) Nu ) LIS-PX ) LIS-PX++ ))
		) ;repe

		;	AÑADE a ( LIS-PX+M* Ordenada ) como ULTIMOS los ( MAR Primeros) de ( LIS-PX Ordenada )		

		(SETQ LIS-PX++ (REVERSE LIS-PX++ ))	; ( LIS-PX Invertida )

		(SETQ Np -1)
		(REPEAT MAR
			(SETQ Np (+ Np 1))
			(SETQ LIS-PX++ (CONS (NTH Np LIS-PX ) LIS-PX++ ))
		) ;repe

		;	LISTA ( LIS-PX++ ) Ordenada																		

		(SETQ LIS-PX++ (REVERSE LIS-PX++ ))	; ( LIS-PX Ordenada )

		;																							


		;	PINTA PUNTOS de ( LIS-PINTA-P ) con Texto-Nº   (COMPROVACION)		

		; (SETQ LIS-PINTA-P LIS-PX   )  (PINTA-PUN)
		; (SETQ LIS-PINTA-P LIS-PX++ )  (PINTA-PUN)	; CON MARGEN

		;													


	) ; Defun SPLI-X

;																									


;-----------------------------------------------------------------------------------------------------------------------------------------------------
;	Puntos ** TRAZA ** de PLANOS de Secciones (A) y (B) => (TRAZ-1) (TRAZ-2) (TRAZ-12)											
;-----------------------------------------------------------------------------------------------------------------------------------------------------


	(DEFUN TRAZA-AB ( / )

		(COMMAND "SCP" "B" NA00 )		; PLANO S-a
 			(SETQ Sa0 (TRANS (LIST    0   0 0) 1 0))
 			(SETQ Sa1 (TRANS (LIST  100 100 0) 1 0))
 			(SETQ Sa2 (TRANS (LIST -100 100 0) 1 0))
		(COMMAND "SCP" "U")

		(COMMAND "SCP" "B" NB00 )		; PLANO S-b
 			(SETQ Sa0b (TRANS Sa0 0 1))
 			(SETQ Sa1b (TRANS Sa1 0 1))
 			(SETQ Sa2b (TRANS Sa2 0 1))
 			(SETQ Sb0 (TRANS (LIST (CAR Sa0b) (CADR Sa0b) 0) 1 0))
 			(SETQ Sb1 (TRANS (LIST (CAR Sa1b) (CADR Sa1b) 0) 1 0))
 			(SETQ Sb2 (TRANS (LIST (CAR Sa2b) (CADR Sa2b) 0) 1 0))
		(COMMAND "SCP" "U")

		(SETQ TRAZ-1  (INTERS Sa0 Sa1 Sb0 Sb1 nil))
		(SETQ TRAZ-2  (INTERS Sa0 Sa2 Sb0 Sb2 nil))

		(SETQ TRAZ-12 (LIST 	(+ (CAR   TRAZ-2) (/ (- (CAR   TRAZ-1) (CAR   TRAZ-2)) 2 ))		; PUNTO MEDIO 
						(+ (CADR  TRAZ-2) (/ (- (CADR  TRAZ-1) (CADR  TRAZ-2)) 2 ))
						(+ (CADDR TRAZ-2) (/ (- (CADDR TRAZ-1) (CADDR TRAZ-2)) 2 )) ) )

		; (COMMAND "COLOR" 7 "LINEA" TRAZ-1 TRAZ-2 "" )

	) ; Defun TRAZA-AB

;																									


;-----------------------------------------------------------------------------------------------------------------------------------------------------
;	ANGULO con la TRAZA de la TANGENTE en P2 al CIRCULO OSCULADOR de P1 P2 P3	=>  LIS-AngX+1 = ( LIST AgT P2U T2U DISx PtraU )			
;-----------------------------------------------------------------------------------------------------------------------------------------------------


	(DEFUN ANG-PX ( / )

		(COMMAND "SCP" "3P" TRAZ-12 TRAZ-1 (NTH 0 LIS-P++) )								; PLANO TRAZ-SPLINE-X

			(SETQ LIS-AngX+1 nil)
			(SETQ Nag -1 )
			(REPEAT (- (LENGTH LIS-P++) 2)

				(SETQ Nag (+ Nag 1))
				(SETQ P1U (NTH (+ Nag 0) LIS-P++))  (SETQ P1  (TRANS P1U 0 1))
				(SETQ P2U (NTH (+ Nag 1) LIS-P++))  (SETQ P2  (TRANS P2U 0 1))
				(SETQ P3U (NTH (+ Nag 2) LIS-P++))  (SETQ P3  (TRANS P3U 0 1))

				;	PUNTOS MEDIOS entre P1 P2 P3 => ( M12 M23 ) en SCP											

				(SETQ M12  (LIST (+ (CAR P1) (/ (- (CAR P2) (CAR P1)) 2)) (+ (CADR P1) (/ (- (CADR P2) (CADR P1)) 2)) 0))
				(SETQ M23  (LIST (+ (CAR P2) (/ (- (CAR P3) (CAR P2)) 2)) (+ (CADR P2) (/ (- (CADR P3) (CADR P2)) 2)) 0))

				;	PERPENDICULAR AL PUNTO MEDIO ( M12 M23 ) => ( P12 P23 ) en SCP									

				(SETQ P12 (LIST (+ (CAR M12) (- (CADR P2) (CADR M12)) ) (- (CADR M12) (- (CAR P2) (CAR M12)) ) 0))
				(SETQ P23 (LIST (+ (CAR M23) (- (CADR P3) (CADR M23)) ) (- (CADR M23) (- (CAR P3) (CAR M23)) ) 0))

				;	INTERSECCION PERPENDICULARES P-Mediaos (CENTRO CIRCULO OSCULADOR P1 P2 P3 ) => ( CEN )					

				(SETQ CEN (INTERS M12 P12  M23 P23 nil))	; SCP

				;	NORMAL AL RADIO ( P2 - CEN ) en P2 => TANGENTE ( P2 - T2 ) en SCP									

				(IF (/= CEN nil)
					(PROGN
						(SETQ T2 (LIST (- (CAR P2) (- (CADR P2) (CADR CEN)) ) (- (CADR P2) (- (CAR CEN) (CAR P2)) ) 0))
						(SETQ T2U (TRANS T2 1 0) )
						(SETQ AgT (ANGLE P2 T2 ))
						(SETQ DISx (CAR (INTERS P2 T2 (LIST 0 0 0) (LIST 10 0 0) nil) ))

						(IF (/= DISx nil)
							(PROGN
 								(SETQ PtraU (TRANS (LIST DISx 0 0) 1 0))				; PUNTO INTERS. TANG (P2 T2) con TRAZA SCU
								(SETQ LIS-AngX+1 (CONS (LIST AgT P2U T2U DISx PtraU ) LIS-AngX+1))	; *** LISTA-AngX ***
							) ;progn

							(PROGN
								(TERPRI) (PROMPT "  NO DISTANCIA TRAZA ? ")
							) ;progn
						) ;if
					) ;progn

					(PROGN
						(TERPRI) (PROMPT "  NO CENTRO OSCULADOR ? ")
					) ;progn


				) ;if IN
			) ; repeat
 
		(COMMAND "SCP" "U")

		(SETQ LIS-AngX+1   (REVERSE LIS-AngX+1))

		;																							

	) ; Defun ANG-PX

;																									


;-----------------------------------------------------------------------------------------------------------------------------------------------------
;	MARCA TRAMOS entre PUNTOS de INFLEXION y MAXIMOS y MINIMOS ( con CIRCULO y TEXTO)											
;	toma datos de ( LIS-AngX+1 )->(LIST AgT P2U T2U DISx PtraU ) =>														
;									=> debuelve ( LIS-TRAMOS ) -> (( LIS-Tra0 )...( LIS-Tra0 )) -> ( LIST Ng1 Dg1 Pg1  Dg2 Pg2 )	
;-----------------------------------------------------------------------------------------------------------------------------------------------------

	(DEFUN MARCA-Tramos ( / )

		(SETQ LIS-TRAMOS nil)
		(SETQ LIS-TraESE nil)
		(SETQ PRINER-TRA  T )
		(SETQ WW1  T )

		;(SETQ NN0 10 )
		(SETQ NN0 (- (LENGTH LIS-Ang+1) 20) )

		(WHILE WW1

			(SETQ NN0 (+ NN0 1))

			(SETQ Ng1 (REM    NN0    (LENGTH LIS-Ang+1)))
			(SETQ Ng2 (REM (+ NN0 1) (LENGTH LIS-Ang+1)))

			(SETQ LL1 (NTH Ng1 LIS-Ang+1) )			; (LIST AgT P2U T2U DISx PtraU )
			(SETQ LL2 (NTH Ng2 LIS-Ang+1) )

			(SETQ  Ag1 (NTH 0 LL1)   Ag2 (NTH 0 LL2))		; Angulo Tang en TRAZA
			(SETQ  Pg1 (NTH 1 LL1)   Pg2 (NTH 1 LL2))		; Punto P2U (Tang P2U T2U)
			(SETQ  Tg1 (NTH 2 LL1)   Tg2 (NTH 2 LL2))		; Punto T2U (Tang P2U T2U)
			(SETQ  Dg1 (NTH 3 LL1)   Dg2 (NTH 3 LL2))		; Distancia a la INTERSECCION de TANG en TRAZA
			(SETQ  Pi1 (NTH 4 LL1)   Pi2 (NTH 4 LL2))		; PUNTO INTERSECCION de TANG en TRAZA
			
			;	( LIS-TraESE ) => (LIST Ng1 Dg1 Pg1 Pi1) o (LIST Ng2 Dg2 Pg2 Pi2)											
			;																						
			;	LISTA DE TRAMOS ENTRE PUNTOS DE INFLESION Y MAXIMOS	 (LIS-TRAMOS) => 	( ( LIS-TraESE ) ... ( LIS-TraESE ) )			

			;	POR CADA DOS CUADRANDES 																	
			(COND
				( (OR (= Ag1 0 ) (= Ag1 PI ) (= Ag1 (* 2 PI)) )
					(COMMAND "COLOR" 7  "CIRCULO" Pg1 0.03 )
					(PROMPT " ****** ( TANG-1 ) => PARALELA a TRAZA en Ng1 = ") 	(PRIN1 Ng1) (TERPRI) )

				( (OR (= Ag2 0 ) (= Ag2 PI ) (= Ag2 (* 2 PI)) )
					(COMMAND "COLOR" 7  "CIRCULO" Pg2 0.03 )
					(PROMPT " ****** ( TANG-2 ) => PARALELA a TRAZA en Ng1 = ") 	(PRIN1 Ng1) (TERPRI) )

				( (OR (= Ag1 (* 0.5 PI) ) (= Ag1 (* 1.5 PI)) )
					(COMMAND "COLOR" 7  "CIRCULO" Pg1 0.03 )
					(PROMPT " ****** ( TANG-1 ) => PERTENDICULAR a TRAZA en Ng1 = ") 	(PRIN1 Ng1) (TERPRI) )

				( (OR (= Ag2 (* 0.5 PI) ) (= Ag2 (* 1.5 PI)) )
					(COMMAND "COLOR" 7  "CIRCULO" Pg2 0.03 )
					(PROMPT " ****** ( TANG-2 ) => PERTENDICULAR a TRAZA en Ng1 = ") 	(PRIN1 Ng1) (TERPRI) )

				;																					
				;	NO PARALELO O PERPENDICULAR																

				( (OR (AND (< (* 0 PI)  Ag1  (* 1 PI) )  (< (* 1 PI)  Ag2  (* 2 PI)))	; (Ag1) Emcima y (Ag2) Debajo del EJE-X
				      (AND (< (* 0 PI)  Ag2  (* 1 PI) )  (< (* 1 PI)  Ag1  (* 2 PI))) )	; (Ag1) Debajo y (Ag2) Emcima del EJE-X

					(COND

						;	(1º) PUNTO DE MAXIMO O MINIMO    (Ag1) y (Ag2) al MISMO LADO del EJE-Y  =>       					

						( (AND (= PRINER-TRA T)
							(OR (AND (< (* 0.5 PI)  Ag1  (* 1.5 PI)) (< (* 0.5 PI) Ag2 (* 1.5 PI)) )	; (Ag1)(Ag2) en 2º-3º Cuadrante
						 	    (AND (OR (< (* 0.0 PI)  Ag1  (* 0.5 PI)) (< (* 1.5 PI) Ag1 (* 2.0 PI)) )	; (Ag1)(Ag2) en 1º-4º Cuadrante
								   (OR (< (* 0.0 PI)  Ag2  (* 0.5 PI)) (< (* 1.5 PI) Ag2 (* 2.0 PI)) ))))

							; ( Primeros 2 Puntos) MAXIMO O MINIMO 							

							(COMMAND "COLOR" 2 "CIRCULO" "2P" Pg1 Pg2 )
							(COMMAND "COLOR" COLO "TEXTO" Pg1 0.04 90 Ng1  "TEXTO" Pg2 0.04 90 Ng2 )

							(SETQ LIS-TRAMOS  nil)
							(SETQ LIS-TraESE  nil)

							(SETQ LIS-TraESE (CONS (LIST Ng2 Dg2 Pg2 Pi2) LIS-TraESE) )				;**************** EMPIEZA (2)

							(SETQ Nºsegun Ng2)
							(SETQ P-Fin1  Pg1)
							(SETQ P-Fin2  Pg2)

							(SETQ PRINER-TRA nil)
						)

						;	(OTROS) PUNTOS DE MAXIMO O MINIMO   (Ag1) y (Ag2) al MISMO LADO del EJE-Y  =>       				

						( (AND (= PRINER-TRA nil)
							(OR (AND (< (* 0.5 PI)  Ag1  (* 1.5 PI)) (< (* 0.5 PI) Ag2 (* 1.5 PI)) )	; (Ag1)(Ag2) en 2º-3º Cuadrante
						          (AND (OR (< (* 0.0 PI)  Ag1  (* 0.5 PI)) (< (* 1.5 PI) Ag1 (* 2.0 PI)) )	; (Ag1)(Ag2) en 1º-4º Cuadrante
							         (OR (< (* 0.0 PI)  Ag2  (* 0.5 PI)) (< (* 1.5 PI) Ag2 (* 2.0 PI)) ))))

							; ( Siguientes 2 Puntos) MAXIMO O MINIMO  						

							(COMMAND "COLOR" 2 "CIRCULO" "2P" Pg1 Pg2 )
							(COMMAND "COLOR" COLO "TEXTO" Pg1 0.04 90 Ng1  "TEXTO" Pg2 0.04 90 Ng2 )

							(IF (AND (EQUAL Pg1 P-Fin1 0.00001) (EQUAL Pg2 P-Fin2 0.00001))

								(PROGN
									(SETQ LIS-TraESE  (CONS (LIST Ng1 Dg1 Pg1 Pi1)   LIS-TraESE))	;**************** TERMINA (1)
									(SETQ LIS-TRAMOS  (CONS (REVERSE LIS-TraESE) LIS-TRAMOS))

									(SETQ WW1 nil)
								) ;progn

								(PROGN
									(SETQ LIS-TraESE  (CONS (LIST Ng1 Dg1 Pg1 Pi1)   LIS-TraESE))	;**************** TERMINA (1)
									(SETQ LIS-TRAMOS  (CONS (REVERSE LIS-TraESE) LIS-TRAMOS))

									(SETQ LIS-TraESE  nil )
									(SETQ LIS-TraESE  (CONS (LIST Ng2 Dg2 Pg2 Pi2) LIS-TraESE))		;**************** EMPIEZA (2)
									(SETQ Nºsegun  Ng2)
								) ;progn
							) ;if
						)

						;	(OTROS) PUNTOS DE INFLESION (ESE)    (Ag1) y (Ag2) a DISTINTO LADO del EJE-Y  =>     				

						( (AND (= PRINER-TRA nil)
						     (OR (AND (< (* 0.5 PI)  Ag1  (* 1.5 PI)) (OR (< (* 0.0 PI)  Ag2  (* 0.5 PI)) (< (* 1.5 PI) Ag2 (* 2.0 PI))))
							   (AND (< (* 0.5 PI)  Ag2  (* 1.5 PI)) (OR (< (* 0.0 PI)  Ag1  (* 0.5 PI)) (< (* 1.5 PI) Ag1 (* 2.0 PI))))))

							; ( Siguientes 2 Puntos) INFLESION 									

							(COMMAND "COLOR" 3 "CIRCULO" "2P" Pg1 Pg2 )
							(COMMAND "COLOR" COLO "TEXTO" Pg1 0.04 90 Ng1  "TEXTO" Pg2 0.04 90 Ng2 )

							(SETQ LIS-TraESE  (CONS (LIST Ng1 Dg1 Pg1 Pi1)   LIS-TraESE))			;**************** TERMINA (1)
							(SETQ LIS-TRAMOS  (CONS (REVERSE LIS-TraESE) LIS-TRAMOS))

							(SETQ LIS-TraESE  nil )
							(SETQ LIS-TraESE  (CONS (LIST Ng2 Dg2 Pg2 Pi2) LIS-TraESE))				;**************** EMPIEZA (2)
							(SETQ Nºsegun  Ng2)
						)

					) ;con
				)

				;	(PROMPT " *** ANGULOS NO SIGULARES en Ng1 = ") (PRIN1 Ng1) (TERPRI)									

				( T (IF (AND (= PRINER-TRA nil) (NOT (EQUAL Ng1 Nºsegun 0.00001)))
					       (SETQ LIS-TraESE (CONS (LIST Ng1 Dg1 Pg1 Pi1) LIS-TraESE))))				;************ INTERMEDIOS (1)

			) ;con

		) ;repeat While

		(SETQ LIS-TRAMOS (REVERSE LIS-TRAMOS) )

	) ; Defun MARCA-Tramos


;																									



;																									
;	GRAFICA DISTANCIAS POR TRAMOS	 *** COMPROBACION ***																
;																									


(DEFUN GRAFICA-DIS ( / )

		(COMMAND "COLOR" 7 "LINEA" (LIST 0 0 0) (LIST 500 0 0) "" )
		;(SETQ GGA -1)
		;(SETQ GGB -1)
		(SETQ TTA -1)
		(REPEAT (LENGTH LIS-TRAMOS-A)
			(SETQ TTA (+ TTA 1))

			(SETQ LIS-TRA1A (NTH TTA LIS-TRAMOS-A))
			(SETQ LIS-TRA1B (NTH TTA LIS-TRAMOS-B))

			(SETQ RRA -1)
			(REPEAT (- (LENGTH LIS-TRA1A) 1)
				(SETQ RRA (+ RRA 1))
				;(SETQ GGA (+ GGA 1))

				(SETQ PDA1 (LIST (NTH 0 (NTH    RRA    LIS-TRA1A))  (NTH 1 (NTH    RRA    LIS-TRA1A))  0))
				(SETQ PDA2 (LIST (NTH 0 (NTH (+ RRA 1) LIS-TRA1A))  (NTH 1 (NTH (+ RRA 1) LIS-TRA1A))  0))

				(IF (= RRA 0) (SETQ 1ºPDA1 PDA1))

				(COMMAND "COLOR" 1 "LINEA" PDA1 PDA2 "" "PUNTO" PDA2)
			) ; repe

			(SETQ RRB -1)
			(REPEAT (- (LENGTH LIS-TRA1B) 1)
				(SETQ RRB (+ RRB 1))
				;(SETQ GGB (+ GGB 1))

				(SETQ PDB1 (LIST (NTH 0 (NTH    RRB    LIS-TRA1B))  (NTH 1 (NTH    RRB    LIS-TRA1B))  0))
				(SETQ PDB2 (LIST (NTH 0 (NTH (+ RRB 1) LIS-TRA1B))  (NTH 1 (NTH (+ RRB 1) LIS-TRA1B))  0))

				(IF (= RRB 0) (SETQ 1ºPDB1 PDB1))

				(COMMAND "COLOR" 5 "LINEA" PDB1 PDB2 "" "PUNTO" PDB2)
			) ; repe

			;(SETQ GGA (+ GGA 1))
			;(SETQ GGB (+ GGB 1))

			(COMMAND "COLOR" 1 "PUNTO" 1ºPDA1)
			(COMMAND "COLOR" 5 "PUNTO" 1ºPDB1)
			(COMMAND "COLOR" 2 "LINEA" 1ºPDA1 1ºPDB1 "")
			(COMMAND "COLOR" 2 "LINEA"   PDA2   PDB2 "")

		) ; repe



) ;  GRAFICA-DIS

;	GRAFICA																							


;																									
;	PLANOS TANGENTES (TAG-PA PB) Por Distancia Interseccion Tangente en Traza												
;											(SETQ LIS-Planos (CONS (LIST Pa Pia Pb1 NRA NRB ) LIS-Planos))	; LIS-PLANOS	
;											(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA  NB ) LIS-Planos))	; LIS-PLANOS	
;											(SETQ LIS-PLA-Tg (CONS LIS-Planos LIS-PLA-Tg))		; LISTA PLANOS TANGENTES	

(DEFUN PLANO-TAG ( / )

		(IF ( = (LENGTH LIS-TRAMOS-A) (LENGTH LIS-TRAMOS-B))

			(PROGN

				(SETQ LIS-PLA-Tg nil)	; ( (Pa Pia PbT) ... (Pa Pia PbT) )	
				(SETQ LIS-Planos nil)	;   (Pa Pia PbT)				

				(SETQ NTA -1)
				(REPEAT (LENGTH LIS-TRAMOS-A)		; TODOS LOS TRAMOS
					(SETQ NTA (+ NTA 1))

				;	(SETQ NTA 1 )			; UN TRAMO **************** COMPROBACION

					(SETQ LIS-TRA-A (NTH NTA LIS-TRAMOS-A))
					(SETQ LIS-TRA-B (NTH NTA LIS-TRAMOS-B))

					(SETQ P-LINE nil)
					(SETQ NRA -1)
					(REPEAT (LENGTH LIS-TRA-A)

			  			(SETQ NRA (+ NRA 1))
						(SETQ L-PA (NTH NRA LIS-TRA-A))  ; ( Ng1 Dg1 Pg1 Pi1 )

						;(SETQ Na  (NTH 0 L-PA))
						(SETQ Da  (NTH 1 L-PA))		; Distancia a la INTERSECCION de TANG en TRAZA
						(SETQ Pa  (NTH 2 L-PA))		; Punto P2U (Tang P2U T2U)
						(SETQ Pia (NTH 3 L-PA))		; PUNTO INTERSECCION de TANG en TRAZA

						(SETQ NRB -1)
						(REPEAT (- (LENGTH LIS-TRA-B) 1)

							(SETQ NRB (+ NRB 1))
							(SETQ L-PB1 (NTH    NRB    LIS-TRA-B))  ; ( Ng1 Dg1 Pg1 Pi1 )
							(SETQ L-PB2 (NTH (+ NRB 1) LIS-TRA-B))

							;(SETQ  Nb1 (NTH 0 L-PB1)  Nb2 (NTH 0 L-PB2) )  
							(SETQ  Db1  (NTH 1 L-PB1)   Db2  (NTH 1 L-PB2) )
							(SETQ  Pb1  (NTH 2 L-PB1)   Pb2  (NTH 2 L-PB2) )
							(SETQ  Pib1 (NTH 3 L-PB1)   Pib2 (NTH 3 L-PB2) )

							(COND
								;  (1) Condicion											
								(  (= Da Db1)

									;(COMMAND "COLOR" 8 "LINEA" Pa Pb1 "")
									(SETQ P-LINE T)

									(SETQ LIS-Planos (CONS (LIST Pa Pia Pb1 NRA    NRB   ) LIS-Planos)))			; LIS-PLANOS

								;  (2) Condicion											
								(  (= Da Db2)

									;(COMMAND "COLOR" 8 "LINEA" Pa Pb2 "")
									(SETQ P-LINE T)

									(SETQ LIS-Planos (CONS (LIST Pa Pia Pb2 NRA (+ NRB 1)) LIS-Planos)))			; LIS-PLANOS

								;  (3) Condicion											
								(  (OR (< Db1  Da  Db2) (> Db1  Da  Db2))

										;	PUNTO MAS CERCANO						
									(COND
										(  (< (DISTANCE Pib1 Pia) (DISTANCE Pib2 Pia))

											;(COMMAND "COLOR" 8 "LINEA" Pa Pb1 "")
											(SETQ P-LINE T)

											(SETQ LIS-Planos (CONS (LIST Pa Pia Pb1 NRA    NRB   ) LIS-Planos)))	; LIS-PLANOS

										(  (> (DISTANCE Pib1 Pia) (DISTANCE Pib2 Pia))

											;(COMMAND "COLOR" 8 "LINEA" Pa Pb2 "")
											(SETQ P-LINE T)

											(SETQ LIS-Planos (CONS (LIST Pa Pia Pb2 NRA (+ NRB 1)) LIS-Planos)))	; LIS-PLANOS
									) ;con
								) ;or
							) ;con
						) ; repe TRA-B
					) ; repe TRA-A

					(SETQ LIS-Planos (REVERSE LIS-Planos))			;   (1º VUELTA LIS-Planos)

					(IF (= P-LINE nil) (PROGN (TERPRI) (PROMPT "   NINGUN ELEMENTO EN (LIS-Planos) DEL TRAMO =  ") (PRIN1 NTA) (TERPRI)))


					;																				
					;	DETERMINA PUNTOS (LIBRES) QUE NO SON DE PLANO TANGENTE (POR TRAMO)								
					;																				
					;	PRIMEROS y ULTIMOS PUNTOS (A B) (POR TRAMO) DE LISTA-PLANOS 									

					(SETQ NºprimerA (NTH 3 (NTH 0 LIS-Planos)))	; LIS-Planos (LIST Pa Pia Pb1 NRA NRB 'TAG)
					(SETQ NºprimerB (NTH 4 (NTH 0 LIS-Planos)))
					(SETQ NºultimoA (NTH 3 (LAST  LIS-Planos)))
					(SETQ NºultimoB (NTH 4 (LAST  LIS-Planos)))

				;	(COMMAND "COLOR" 7
				;		   "TEXTO" (NTH 0 (NTH 0 LIS-Planos)) 0.05 90 NºprimerA
				;		   "TEXTO" (NTH 2 (NTH 0 LIS-Planos)) 0.05 90 NºprimerB
				;		   "TEXTO" (NTH 0 (LAST  LIS-Planos)) 0.05 90 NºultimoA
				;		   "TEXTO" (NTH 2 (LAST  LIS-Planos)) 0.05 90 NºultimoB )



					;																				
					;	PUNTOS AL PRINCIPIO DEL TRAMO															

					(COND
						; (1)-(PRINCIPIO) IGUAL Puntos LIBRES de (A) = (B)  =>   *| 0 =< ((A)=(B)) |* 

						(  (= NºprimerA  NºprimerB)

							(SETQ NA NºprimerA)
							(SETQ NB NºprimerB)
							(REPEAT NºprimerA
								(SETQ NA (- NA 1))
								(SETQ NB (- NB 1))
								(SETQ PPB (NTH 2 (NTH NB LIS-TRA-B)))  	; ( Ng1 Dg1 Pg1 Pi1 )
								(SETQ PPA (NTH 2 (NTH NA LIS-TRA-A)))
								;(COMMAND "COLOR" 3 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe
						)

						; (2)-(PRINCIPIO) MENOS Puntos LIBRES de (A) < (B)  =>   *| 0 =< (A)<(B) |* 

						(  (< NºprimerA  NºprimerB)

							(SETQ NA NºprimerA)
							(SETQ NB NºprimerB)
							(REPEAT NºprimerA
								(SETQ NA (- NA 1))
								(SETQ NB (- NB 1))
								(SETQ PPB (NTH 2 (NTH NB LIS-TRA-B)))  	; ( Ng1 Dg1 Pg1 Pi1 )
								(SETQ PPA (NTH 2 (NTH NA LIS-TRA-A)))
								;(COMMAND "COLOR" 4 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe

							(SETQ NB (- NºprimerB  NºprimerA))
							(REPEAT (- NºprimerB NºprimerA)
								(SETQ NB (- NB 1))
								(SETQ PPB (NTH 2 (NTH NB LIS-TRA-B)))
								(SETQ PPA (NTH 2 (NTH  0 LIS-TRA-A)))
								;(COMMAND "COLOR" 1 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe
						)

						; (3)-(PRINCIPIO)   MAS Puntos LIBRES de (A) > (B)  =>   *| (A)>(B) >=0 |* 

						(  (> NºprimerA  NºprimerB)

							(SETQ NA NºprimerA)
							(SETQ NB NºprimerB)
							(REPEAT NºprimerB
								(SETQ NA (- NA 1))
								(SETQ NB (- NB 1))
								(SETQ PPB (NTH 2 (NTH NB LIS-TRA-B)))  	; ( Ng1 Dg1 Pg1 Pi1 )
								(SETQ PPA (NTH 2 (NTH NA LIS-TRA-A)))
								;(COMMAND "COLOR" 4 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe

							(SETQ NA (- NºprimerA  NºprimerB))
							(REPEAT (- NºprimerA NºprimerB)
								(SETQ NA (- NA 1))
								(SETQ PPA (NTH 2 (NTH NA LIS-TRA-A)))
								(SETQ PPB (NTH 2 (NTH  0 LIS-TRA-B)))
								;(COMMAND "COLOR" 1 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe
						)
					) ;con



					;																				
					;	PUNTOS AL FINAL DEL TRAMO															

					(SETQ LIS-Planos (REVERSE LIS-Planos))			;   (2º VUELTA LIS-Planos)

					(COND
						; (1)-(FINAL) IGUAL Puntos LIBRES de (A) = (B)  =>   *| 0 =< ((A)=(B)) |* 

						(  (= (- (- (LENGTH LIS-TRA-A) 1) NºultimoA) (- (- (LENGTH LIS-TRA-B) 1) NºultimoB))

							(SETQ NA NºultimoA)
							(SETQ NB NºultimoB)
							(REPEAT (- (- (LENGTH LIS-TRA-B) 1) NºultimoB)
								(SETQ NA (+ NA 1))
								(SETQ NB (+ NB 1))
								(SETQ PPB (NTH 2 (NTH NB LIS-TRA-B)))  ; ( Ng1 Dg1 Pg1 Pi1 )
								(SETQ PPA (NTH 2 (NTH NA LIS-TRA-A)))
								;(COMMAND "COLOR" 3 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe
						)

						; (2)-(FINAL) MENOS Puntos LIBRES de (A) < (B)  =>   *| 0 =< (A)<(B) |* 

						(  (< (- (- (LENGTH LIS-TRA-A) 1) NºultimoA) (- (- (LENGTH LIS-TRA-B) 1) NºultimoB))

							(SETQ NA NºultimoA)
							(SETQ NB NºultimoB)
							(REPEAT (- (- (LENGTH LIS-TRA-A) 1) NºultimoA)
								(SETQ NA (+ NA 1))
								(SETQ NB (+ NB 1))
								(SETQ PPB (NTH 2 (NTH NB LIS-TRA-B)))  ; ( Ng1 Dg1 Pg1 Pi1 )
								(SETQ PPA (NTH 2 (NTH NA LIS-TRA-A)))
								;(COMMAND "COLOR" 4 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe

							(SETQ NB (- (- (LENGTH LIS-TRA-B) 1)
									(- (- (- (LENGTH LIS-TRA-B) 1) NºultimoB) (- (- (LENGTH LIS-TRA-A) 1) NºultimoA))))

							(REPEAT  (-  (- (- (LENGTH LIS-TRA-B) 1) NºultimoB) (- (- (LENGTH LIS-TRA-A) 1) NºultimoA))
								(SETQ NB (+ NB 1))
								(SETQ PPB (NTH 2 (NTH NB LIS-TRA-B)))
								(SETQ PPA (NTH 2 (NTH (- (LENGTH LIS-TRA-A) 1) LIS-TRA-A)))
								;(COMMAND "COLOR" 1 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe
						)


						; (3)-(FINAL)  MAS Puntos LIBRES de (A) > (B)  =>   *| (A)>(B) >=0 |* 

						(  (> (- (- (LENGTH LIS-TRA-A) 1) NºultimoA) (- (- (LENGTH LIS-TRA-B) 1) NºultimoB))

							(SETQ NA NºultimoA)
							(SETQ NB NºultimoB)
							(REPEAT (- (- (LENGTH LIS-TRA-B) 1) NºultimoB)
								(SETQ NA (+ NA 1))
								(SETQ NB (+ NB 1))
								(SETQ PPB (NTH 2 (NTH NB LIS-TRA-B)))  ; ( Ng1 Dg1 Pg1 Pi1 )
								(SETQ PPA (NTH 2 (NTH NA LIS-TRA-A)))
								;(COMMAND "COLOR" 4 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe

							(SETQ NA (- (- (LENGTH LIS-TRA-A) 1)
									(- (- (- (LENGTH LIS-TRA-A) 1) NºultimoA) (- (- (LENGTH LIS-TRA-B) 1) NºultimoB))))

							(REPEAT  (- (- (- (LENGTH LIS-TRA-A) 1) NºultimoA) (- (- (LENGTH LIS-TRA-B) 1) NºultimoB))
								(SETQ NA (+ NA 1))
								(SETQ PPA (NTH 2 (NTH NA LIS-TRA-A)))
								(SETQ PPB (NTH 2 (NTH (- (LENGTH LIS-TRA-B) 1) LIS-TRA-B)))
								;(COMMAND "COLOR" 1 "LINEA" PPA PPB "")
								(SETQ LIS-Planos (CONS (LIST PPA 'NO PPB NA NB ) LIS-Planos))	; LIS-PLANOS
							) ;repe
						)
					) ;con

					(SETQ LIS-Planos (REVERSE LIS-Planos))			;   (3º VUELTA LIS-Planos)

					;	LIS-PLA-Tg (TODOS LOS TRAMOS)															

					(SETQ LIS-PLA-Tg (CONS LIS-Planos LIS-PLA-Tg))		; LISTA PLANOS TANGENTES

					(SETQ LIS-Planos nil)

				) ; repe TRAMOS

				(SETQ LIS-PLA-Tg (REVERSE LIS-PLA-Tg))				;   (LENGTH LIS-PLA-Tg)

 			) ;pro

			(PROGN (TERPRI) (PROMPT " ¿ NO SON IGUALES (LENGTH LIS-TRAMOS-A) y (LENGTH LIS-TRAMOS-B) ? ") (TERPRI))
		) ;if

) ;  PLANO-TAG

;	PLANOS TANGENTES																						


;-----------------------------------------------------------------------------------------------------------------------------------------------------
;	PINTAMOS 3D-CARAS en 3D y 2D ( PLANIFICA ( 3DC NO PLANAS ) PROYECTANDO 3A2 sobre ( 3B1 3A1 3B2 ))								
;-----------------------------------------------------------------------------------------------------------------------------------------------------


(DEFUN PINTA-3DC ( / )

	(COND

		;  (1)   CUADRO LADOS 3DCara (3A1/=3A2 3B1/=3B2) ***************************************************************************************

		( (AND (NOT (EQUAL 3A1 3A2 0.00001)) (NOT (EQUAL 3B1 3B2 0.00001)) )

			(SETQ D1 (DISTANCE 3B1 3B2))
			(SETQ D2 (DISTANCE 3B2 3A2))
			(SETQ D3 (DISTANCE 3B1 3A2))
			(SETQ D4 (DISTANCE 3A1 3A2))
			(SETQ D5 (DISTANCE 3B1 3A1))

			(SETQ XJ (/ (- (+ (* D3 D3) (* D1 D1)) (* D2 D2)) (* 2 D3)))	; SCP-J = 3P(3B1 3A2 3B2)
			(SETQ YJ (SQRT (- (* D1 D1) (* XJ XJ)) ))
			;(SETQ 3B2J (LIST XJ YJ 0))

			(SETQ XK (/ (- (+ (* D5 D5) (* D3 D3)) (* D4 D4)) (* 2 D5)))	; SCP-K = 3P(3B1 3A1 3A2)
			(SETQ YK (SQRT (- (* D3 D3) (* XK XK)) ))
			(SETQ 3A2K (LIST XK YK 0 ))

			(SETQ SenK (/ YK D3))
			(SETQ CosK (/ XK D3))
			(SETQ 3B2K (LIST (- (* XJ CosK) (* YJ SenK))  (+ (* XJ SenK) (* YJ CosK)) 0 ))	; ROTACION DE EJES (SCP-J=>SCP-K)

			(SETQ 3A1K (LIST D5 0 0 ))
			(SETQ 3B1K (LIST  0 0 0 ))

			; ROTACION Y TRASLACION DE EJES (SCP-K=>SCP-KK)									NO SALE BIEN ? 
		;	(SETQ SenKK (SIN (ANGLE 2KKB 2KKA)))					; SCP-KK = 3P(2KKB 2KKA "")
		;	(SETQ CosKK (COS (ANGLE 2KKB 2KKA)))
		;	(SETQ aKK (CAR  2KKB))
		;	(SETQ bKK (CADR 2KKB))
		;	(SETQ 2A1 (LIST (+ (* (- (CAR  3A1K) aKK) CosKK) (* (- (CADR 3A1K) bKK) SenKK))
		;			    (- (* (- (CADR 3A1K) bKK) CosKK) (* (- (CAR  3A1K) aKK) SenKK)) 0 ))
		;	(SETQ 2B1 (LIST (+ (* (- (CAR  3B1K) aKK) CosKK) (* (- (CADR 3B1K) bKK) SenKK))
		;			    (- (* (- (CADR 3B1K) bKK) CosKK) (* (- (CAR  3B1K) aKK) SenKK)) 0 ))
		;	(SETQ 2A2 (LIST (+ (* (- (CAR  3A2K) aKK) CosKK) (* (- (CADR 3A2K) bKK) SenKK))
		;			    (- (* (- (CADR 3A2K) bKK) CosKK) (* (- (CAR  3A2K) aKK) SenKK)) 0 ))
		;	(SETQ 2B2 (LIST (+ (* (- (CAR  3B2K) aKK) CosKK) (* (- (CADR 3B2K) bKK) SenKK))
		;			    (- (* (- (CADR 3B2K) bKK) CosKK) (* (- (CAR  3B2K) aKK) SenKK)) 0 ))

			(COMMAND "SCP" "3P" 2KKB 2KKA "")		; SCP-2D = SCP-KK
				(SETQ 2A1 (TRANS 3A1K 1 0))
				(SETQ 2B1 (TRANS 3B1K 1 0))
				(SETQ 2A2 (TRANS 3A2K 1 0))
				(SETQ 2B2 (TRANS 3B2K 1 0))
			(COMMAND "SCP" "U")

			(IF (EQUAL 2KKB (LIST 0 0 0) 0.00001)			; PINTA SOLO LA PRINERA

				(PROGN 
					;	PINTA en 2D				
					(COMMAND "COLOR" 5 "TEXTO" (LIST -0.85 -0.46 0) 0.3 90 NºCapa)	; TEXTO en Patron (Nº CAPA)
					(SETQ TXT-CAPA (ENTLAST))
			  		(COMMAND "COLOR" 7 "LINEA" 2A1 2B2 "" )	; PINTA ASPA NEGRA
			  		(COMMAND "COLOR" 7 "LINEA" 2B1 2A2 "" )
			  		(COMMAND "COLOR" 7 "LINEA" 2A1 2B1 "" )	; PINTA 1ª GENERATRIZ
			  		(COMMAND "COLOR" 8 "LINEA" 2A2 2B2 "" )	; PINTA 2ª GENERATRIZ
					(COMMAND "COLOR" 1 "LINEA" 2A1 2A2 "" )	; PINTA (Color 1 y 5) DELANTE (Color 8)
					(COMMAND "COLOR" 5 "LINEA" 2B1 2B2 "" )
					;	PINTA en 3D				
			  		(COMMAND "COLOR" 7 "LINEA"  3A1 3B2 "" )	; PINTA ASPA NEGRA
			  		(COMMAND "COLOR" 7 "LINEA"  3B1 3A2 "" )
					(COMMAND "COLOR" 2 "3DCARA" 3A1 3B1 3B2 3A2 "" )
			  		(COMMAND "COLOR" 7 "LINEA"  3A1 3B1 "" )	; PINTA 1ª GENERATRIZ
				) ;pro

				(PROGN 
					;	PINTA en 2D				
			  		(COMMAND "COLOR" 8 "LINEA" 2A2 2B2 "" )	; PINTA SIGUIENTES 2ª GENERATRIZ
					(COMMAND "COLOR" 1 "LINEA" 2A1 2A2 "" )	; PINTA (Color 1 y 5) DELANTE (Color 8)
					(COMMAND "COLOR" 5 "LINEA" 2B1 2B2 "" )
					;	PINTA en 3D				
					(COMMAND "COLOR" 2 "3DCARA" 3A1 3B1 3B2 3A2 "" )
				) ;pro
			) ;if

			(SETQ 2KKB 2B2 2KKA 2A2)
		)

		;  (2)   TRES LADOS 3DCara (3A1 = 3A2) *************************************************************************************************

		( (EQUAL 3A1 3A2 0.00001)		; EL LADO (3A1 3A2) NO ESISTE 

			(COMMAND "SCP" "3P" 3B1 3A1 3B2)		; SCP-A
				(SETQ 2A1a (TRANS 3A1 0 1))
				(SETQ 2B1a (TRANS 3B1 0 1))
				(SETQ 2B2a (TRANS 3B2 0 1))
			(COMMAND "SCP" "U")

			(COMMAND "SCP" "3P" 2KKB 2KKA "")		; SCP-2D
				(SETQ 2A1 (TRANS 2A1a 1 0))
				(SETQ 2B1 (TRANS 2B1a 1 0))
				(SETQ 2B2 (TRANS 2B2a 1 0))
			(COMMAND "SCP" "U")

			(IF (EQUAL 2KKB (LIST 0 0 0) 0.00001)		; PINTA SOLO LA PRINERA

				(PROGN 
					;	PINTA en 2D				
					(COMMAND "COLOR" 5 "TEXTO" (LIST -0.85 -0.46 0) 0.3 90 NºCapa)	; TEXTO en Patron (Nº CAPA)
					(SETQ TXT-CAPA (ENTLAST))
			  		(COMMAND "COLOR" 7 "LINEA" 2A1 2B1 "" )	; PINTA 1ª GENERATRIZ
			  		(COMMAND "COLOR" 8 "LINEA" 2A1 2B2 "" )	; PINTA 2ª GENERATRIZ
					(COMMAND "COLOR" 5 "LINEA" 2B1 2B2 "" )	; PINTA (Color 1 y 5) DELANTE (Color 8)
					;	PINTA en 3D				
					(COMMAND "COLOR" 2 "3DCARA" 3A1 3B1 3B2 3A2 "" )
			  		(COMMAND "COLOR" 7 "LINEA"  3A1 3B1 "" )	; PINTA 1ª GENERATRIZ
				) ;pro

				(PROGN 
					;	PINTA en 2D				
			  		(COMMAND "COLOR" 8 "LINEA" 2A1 2B2 "" )	; PINTA SIGUIENTES 2ª GENERATRIZ
					(COMMAND "COLOR" 5 "LINEA" 2B1 2B2 "" )	; PINTA (Color 1 y 5) DELANTE (Color 8)
					;	PINTA en 3D				
					(COMMAND "COLOR" 2 "3DCARA" 3A1 3B1 3B2 3A2 "" )
				) ;pro
			) ;if

			(SETQ 2KKB 2B2 2KKA 2A1)
		)

		;  (3)   TRES LADOS 3DCara (3B1 = 3B2) *************************************************************************************************

		( (EQUAL 3B1 3B2 0.00001)		; EL LADO (3B1 3B2) NO ESISTE 

			(COMMAND "SCP" "3P" 3B1 3A1 3A2)		; SCP-A
				(SETQ 2A1a (TRANS 3A1 0 1))
				(SETQ 2B1a (TRANS 3B1 0 1))
				(SETQ 2A2a (TRANS 3A2 0 1))
			(COMMAND "SCP" "U")

			(COMMAND "SCP" "3P" 2KKB 2KKA "")		; SCP-2D
				(SETQ 2A1 (TRANS 2A1a 1 0))
				(SETQ 2B1 (TRANS 2B1a 1 0))
				(SETQ 2A2 (TRANS 2A2a 1 0))
			(COMMAND "SCP" "U")

			(IF (EQUAL 2KKB (LIST 0 0 0) 0.00001)		; PINTA SOLO LA PRINERA

				(PROGN 
					;	PINTA en 2D				
					(COMMAND "COLOR" 5 "TEXTO" (LIST -0.85 -0.46 0) 0.3 90 NºCapa)	; TEXTO en Patron (Nº CAPA)
					(SETQ TXT-CAPA (ENTLAST))
			  		(COMMAND "COLOR" 7 "LINEA" 2A1 2B1 "" )	; PINTA 1ª GENERATRIZ
			  		(COMMAND "COLOR" 8 "LINEA" 2A2 2B1 "" )	; PINTA 2ª GENERATRIZ
					(COMMAND "COLOR" 1 "LINEA" 2A1 2A2 "" )	; PINTA (Color 1 y 5) DELANTE (Color 8)
					;	PINTA en 3D				
					(COMMAND "COLOR" 2 "3DCARA" 3A1 3B1 3B2 3A2 "" )
			  		(COMMAND "COLOR" 7 "LINEA"  3A1 3B1 "" )	; PINTA 1ª GENERATRIZ
				) ;pro

				(PROGN 
					;	PINTA en 2D				
			  		(COMMAND "COLOR" 8 "LINEA" 2A2 2B1 "" )	; PINTA SIGUIENTES 2ª GENERATRIZ
					(COMMAND "COLOR" 1 "LINEA" 2A1 2A2 "" )	; PINTA (Color 1 y 5) DELANTE (Color 8)
					;	PINTA en 3D				
					(COMMAND "COLOR" 2 "3DCARA" 3A1 3B1 3B2 3A2 "" )
				) ;pro
			) ;if

			(SETQ 2KKB 2B1 2KKA 2A2)
		)
		
		( (AND (EQUAL 3A1 3A2 0.00001) (EQUAL 3B1 3B2 0.00001) )  (TERPRI) (PROMPT "  3DCARA ES UNA LINEA ") (TERPRI) )

		(  T  (TERPRI) (PROMPT "  *** NO CUMPLE CONDICIONES *** ") (TERPRI) )

	) ;cond

) ; PINTA-3DC

;																									




;=====================================================================================================================================================
;=====================================================================================================================================================
;																									
;	  *** PROGRAMA *** PROGRAMA *** PROGRAMA *** PROGRAMA *** PROGRAMA *** PROGRAMA *** PROGRAMA *** PROGRAMA *** PROGRAMA *** PROGRAMA ***		
;																									
;=====================================================================================================================================================
;=====================================================================================================================================================


(DEFUN C:PIEL-10 (/ )
  
	;	ARRANCANDO																						
	(SETVAR "blipmode" 0) (SETVAR "cmdecho" 0) (GRAPHSCR) (COMMAND "-REFENT" "DES"  "SCP" "U"  "ORTO" "DES")


	;-----------------------------------------------------------------------------------------------------------------------------------------------
	;	FIJA PARAMETROS																					
	;-----------------------------------------------------------------------------------------------------------------------------------------------
	;																								
				(SETQ DISgra  0.1 )		; DISTANCIA para GRADUA  0.1												
	;																								
	;-----------------------------------------------------------------------------------------------------------------------------------------------


	;	NOMBRE DE CAPAS																					
	(SETQ NºCapa  (GETINT " NOMBRE de 1ª-CAPA ( 1000 ? ) = ")) (TERPRI)					; Nº NOMBRE DE 1ª CAPA
	(SETQ NºCapa (- NºCapa 1))

	(TERPRI) (SETQ NA00  (CAR (ENTSEL" MARCA --- SPLINE ABIERTA-3D --- SECCION-A ? "))) 	; nombre Spline A 

	(SETQ Wca T)
	(WHILE Wca

		(SETQ NºCapa (+ NºCapa 1))
		(COMMAND "CAPA" "E" NºCapa "") 									; crea y activa CAPA NºCapa

		;																							
		;	SELECCCION DE SECCION (ESPLINE)																	

		(TERPRI) (SETQ NB00  (CAR (ENTSEL" MARCA --- SPLINE ABIERTA-3D --- SECCION-B ? "))) ; nombre Spline B

		;																							
		;	GRADUA ( SPLINE-X ) con ( DISgra ) =>  (LENGTH LIS-PX+2)													

		(TERPRI) (SETQ NX00 NA00  COLO 1 TEX "A" )  (SPLI-X)  (SETQ  LIS-PA++ LIS-PX++ )	; (LENGTH LIS-PA++) 
		(TERPRI) (SETQ NX00 NB00  COLO 5 TEX "B" )  (SPLI-X)  (SETQ  LIS-PB++ LIS-PX++ )	; (LENGTH LIS-PB++) 

		;																							
		;	INTERSECCION PLANOS SPLINE-A SPLINE-B => (TRAZ-1) (TRAZ-2)													
  
		(TRAZA-AB)							; DETERMINA INTERSECCION DE PLANOS DE SECCIONES

		;																							
		;	TANGENTE CIRTULO OSCULADO 3-Punto-X ( LIS-AngX+1 ) => (LIST AgT P2U T2U DISx PtraU )								

		(SETQ LIS-P++ LIS-PA++   COLO 1 ) (ANG-PX) (SETQ LIS-AngA+1 LIS-AngX+1)
		(SETQ LIS-P++ LIS-PB++   COLO 5 ) (ANG-PX) (SETQ LIS-AngB+1 LIS-AngX+1)

		;																							
		;	LOCALIZA PUNTOS (INFLEXION)  (MAXIMOS y MINIMOS) PINTA CIRCULOS Y Nº DE LOS PUNTOS									
		;	=> (LIS-TRAMOS) ( SUBLISTA de TODOS los TRAMOS ) 	(LIS-TRAMOS)     	=> ( (LIS-ese-A) ... ... (LIS-ese-A) )				
		;										(LIS-ese-A) 	=> (  LIST Ng1 Dg1 Pg1 Pi1 )						

		(SETQ LIS-Ang+1 LIS-AngA+1   COLO 1 ) (MARCA-Tramos) 	(SETQ LIS-TRAMOS-A  LIS-TRAMOS)		; (LENGTH LIS-TRAMOS-A)
		(SETQ LIS-Ang+1 LIS-AngB+1   COLO 5 ) (MARCA-Tramos) 	(SETQ LIS-TRAMOS-B  LIS-TRAMOS)		; (LENGTH LIS-TRAMOS-B)

		;																							
		;	TRAZA GRAFICAS DE DISTANCIAS EN EJE-X DE LATRAZA DE LA INTERSECCION DE LAS TANGENTES A LAS DOS SECCIONES					
		;	(GRAFICA-DIS) 					; GRAFICA DE COMPROBACION											

		;																							
		;	PLANOS TANGENTES (TAG-PA PB) Por Distancia Interseccion Tangente Traza 											
		;																							
		;							( LIS-PLA-Tg ( LIS-Planos  (LIST Pa Pia Pb2 NRA (+ NRB 1)) .... (LIST PPA 'NO PPB NA NB )	))	

			(PLANO-TAG)							; LISTA PLANOS TANGENTES

		;																							

		(SETQ LIS-DIRECTRIZ nil)


		(SETQ NNN1 -1)
		(REPEAT (LENGTH LIS-PLA-Tg) 			; ( LIS-PLA-Tg ( LIS-Planos  (LIST Pa Pia Pb2 NRA (+ NRB 1)) .... (LIST PPA 'NO PPB NA NB )))
			(SETQ NNN1 (+ NNN1 1))
			(SETQ L-Planos (NTH NNN1 LIS-PLA-Tg))

			(SETQ NNN2 -1)
			(REPEAT (LENGTH L-Planos)	 	; ( LIS-Planos  (LIST Pa Pia Pb2 NRA (+ NRB 1)) .... (LIST PPA 'NO PPB NA NB ))
				(SETQ NNN2 (+ NNN2 1))
				(SETQ L-Pun (NTH NNN2 L-Planos))

				(SETQ PPA1 (NTH 0 L-Pun))
		  		(SETQ PPB1 (NTH 2 L-Pun))

				(SETQ LIS-DIRECTRIZ (CONS (LIST PPA1 PPB1) LIS-DIRECTRIZ))		; LISTA DIRECTRICES

			) ;repe
		) ;repe

		(SETQ LIS-DIRECTRIZ (REVERSE LIS-DIRECTRIZ))
		(SETQ LIS-DIRECTRIZ (CONS ( LAST LIS-DIRECTRIZ) LIS-DIRECTRIZ))		; COPIA EL ULTIMO EL PRIMERO

		(SETQ 2KKA (LIST -1 0 0))
		(SETQ 2KKB (LIST  0 0 0))


		;	(SETQ NNN3 500)


		(SETQ NNN3 -1)
		(REPEAT (- (LENGTH LIS-DIRECTRIZ) 1)
			(SETQ NNN3 (+ NNN3 1))
			(SETQ L-Pun1 (NTH    NNN3    LIS-DIRECTRIZ))
			(SETQ L-Pun2 (NTH (+ NNN3 1) LIS-DIRECTRIZ))

			(SETQ 3A1 (NTH 0 L-Pun1))
			(SETQ 3A2 (NTH 0 L-Pun2))
		  	(SETQ 3B1 (NTH 1 L-Pun1))
		  	(SETQ 3B2 (NTH 1 L-Pun2))

			(PINTA-3DC)

		) ;repe



	  
		;																							



		;																							

		(TERPRI) (SETQ NW1 (GETSTRING "QUIERE SEGUIR (S) o N : "))

		(IF (EQUAL NW1 "N")
			(SETQ  Wca nil           )
			(SETQ  Wca  T  NA00 NB00 ))

	) ;CIERRE WHILE Wca
  
	;																								

	;	PARANDO																						
	(SETVAR "blipmode" 1) (SETVAR "cmdecho" 1)

) ;CIERRE DEFUN PIEL-10

;=====================================================================================================================================================

