;-----------------------------------------------------------------------------
; LSP- zur Stuecklistenersstellung aus Bloecken  AW 12.8.92
; Eingabevariablen:
; 1. Name der Stuecklistendatei
; 2. Auswahlsatz - frei definierbar
;
; - es wird eine *.adf-Datei im Zeichnungsverzeichnis erstellt
; - die Symbole werden einzeln ausgeschrieben und spaeter mit Clipper addiert
; - ST/STL/ap60/AP110/APG110/DRT80/RT8080/HFSPROF/HFSFOR werden in Variablen abgelegt 
;   und am Ende der Datei angefuegt - als LAYR:43,etc.
; 20.12.2006 - AutoCAD 2007 - alles auf GROSSSCHREIBUNG angepasst
;-----------------------------------------------------------------------------

(defun LAENGEN_EINTRAGEN ()
		(if (> st 0)		; ST
			(progn
			(princ "\n" datei)
			(princ (strcat (chr 34) "LAYR:43" (chr 34) "," (rtos (/ st 1000))) datei)
			)
		)
		(if (> stl 0)	; STL
			(progn
	    (princ "\n" datei)
	    (princ (strcat (chr 34) "LAYR:44" (chr 34) "," (rtos (/ stl 1000))) datei)
	    )
		)
		(if (> ap110 0)
			(progn
	    (princ "\n" datei)
	    (princ (strcat (chr 34) "LAYR:187" (chr 34) "," (rtos (/ ap110 1000))) datei)
			)
		)	
		(if (> apg110 0)	
			(progn
	    (princ "\n" datei)
	    (princ (strcat (chr 34) "LAYR:182" (chr 34) "," (rtos (/ apg110 1000))) datei)
	    )
		)
		(if (> ap60 0)	
			(progn
	    (princ "\n" datei)
	    (princ (strcat (chr 34) "LAYR:184" (chr 34) "," (rtos (/ ap60 1000))) datei)
	    )
		)
		(if (> drt80 0)	
			(progn
	    (princ "\n" datei)
	    (princ (strcat (chr 34) "LAYR:60" (chr 34) "," (rtos (/ drt80 1000))) datei)
	    )
		)
		(if (> rt8080 0)	
			(progn
	    (princ "\n" datei)
	    (princ (strcat (chr 34) "LAYR:62" (chr 34) "," (rtos (/ rt8080 1000))) datei)
	    )
		)
		(if (> hfsprof 0)
			(progn
	    (princ "\n" datei)
	    (princ (strcat (chr 34) "LAYR:HFS" (chr 34) "," (rtos (/ HFSPROF 1000))) datei)
	    )
		)
		(if (> hfsfor 0)	
			(progn
	    (princ "\n" datei)
	    (princ (strcat (chr 34) "L:HFSFOR" (chr 34) "," (rtos (/ HFSFOR 1000))) datei)
	    )
		)
  (princ)
	(close datei)                                    ;Datei schliessen
)


(defun LAENGE_BERECHNEN()
	(setq startpunkt	(cdr (assoc 10 (entget (ssname asatz alauf)))))		;Startpunkt berechnen
	(setq endpunkt		(cdr (assoc 11 (entget (ssname asatz alauf)))))		;Endpunkt berechnen
	(setq laenge			(distance startpunkt endpunkt))   								;Laenge berechnen
)

;---------------------------------------------------------------------------------------------------
(defun c:stueckl(/ datei datei1 asatz alen alauf name typ st 
                   stl ap60 ap110 apg110 drt80 rt8080 hfsprof hfsfor
                   startpunkt endpunkt laenge
                )

	;Laengen-Variablen initialisieren
	(setq st 0 stl 0 ap60 0 ap110 0 apg110 0 drt80 0 rt8080 0 hfsprof 0 hfsfor 0)
	;Ausgabedatei abfragen und eroeffnen
        (Setq 
        datei1 (Getfiled "Auswahl Stuecklistendatei" (strcat lw "/daten/") "adf" 9 ))

	(setq datei (open datei1 "w")) 

	; Auswahlsatz bilden

	(setq asatz (ssget) 
		alen (sslength asatz)
		alauf 0
	)
;	(alert "richtige liste")
	(while (< alauf alen)                                          
		; In TYP speichern was gefunden worden ist

		(setq typ (cdr (assoc 0 (entget (ssname asatz alauf)))))
		(princ typ)
		(terpri)

		; Analyse des gefundenen Teiles

		;--> ein Block gefunden
		(if (equal typ "INSERT")
			(progn
				(setq blockname (strcase (cdr (assoc 2 (entget (ssname asatz alauf))))))
				(princ "\n" datei)
				(princ (strcat (chr 34) blockname (chr 34) ",1") datei)
;				(print blockname datei)                ;Ausgabe der Assoziationsliste
			)
		)

		;--> b) Linie gefunden
		;** ST
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "L-2") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "l-2"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq st	(+ st laenge))
				)
		)
		;** STL
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "L-7") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "l-7"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq stl	(+ stl laenge))
				)
		)
		;** AP110
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "A-7") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "a-7"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq ap110	(+ ap110 laenge))
				)
		)
		;** APG110
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "A-2") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "a-2"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq apg110	(+ apg110 laenge))
				)
		)
		;** AP60
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "A-4") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "a-4"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq ap60	(+ ap60 laenge))
				)
		)
		;** DRT80
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "D-1") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "d-1"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq drt80	(+ drt80 laenge))
				)
		)
		;** RT8080
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "D-5") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "d-5"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq rt8080	(+ rt8080 laenge))
				)
		)
		;** HFS - Lagerstrecke
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "H-2") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "h-2"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq hfsprof	(+ hfsprof laenge))
				)
		)
		;** HFS - Förderstrecke
		(if (and (equal (cdr (assoc 0 (entget (ssname asatz alauf)))) "LINE")
				(or (equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "H-1") 
						(equal (cdr (assoc 8 (entget (ssname asatz alauf)))) "h-1"))
				)
				(progn
					(LAENGE_BERECHNEN)
					(setq hfsfor	(+ hfsfor laenge))
				)
		)
	
		(setq alauf (1+ alauf))
	)  ; end while
	(LAENGEN_EINTRAGEN)
)

