;;;Programm um Koordinaten einer 3d-Polylinie in Datei zu schreiben ;;;Programm mit 3pxyz starten (defun c:3pxyz(/ Otyp dxf Objkt VTP LDAT SCHR VTPX VTPY VTPZ) (defun dxf (num Obj) (cdr (assoc num Obj)) ) ;;;ASSCODE-PROGRAMM (while (/= Otyp "AcDb3dPolyline") ;;;So lange bis 3D-Polylinie gewählt (setq Objkt (car(entsel ":\n3d-Polylinie Wählen:"))) ;;;Objekt wählen (setq Otyp (cdr (assoc 100 (reverse (entget Objkt))))) ;;;Elementtyp prüfen (if (/= Otyp "AcDb3dPolyline") (alert "Keine 3d-Polylinie!")) ;;;Info wenn keine 3d-Polylinie ) ;;;Endwhile (setq Objkt (entnext Objkt) VTP T) ;;;1.Unterelement (setq LDAT "C:\\3DPOLXYZ.TXT") ;;;Name der Koordinatendatei (setq SCHR (open LDAT "w")) ;;;Datei zum schreiben öffnen (write-Line "--X--,--Y--,--Z--" SCHR) ;;;Überschrift (while (/= VTP nil) ;;;Bis kein Punkt mehr (setq VTP (dxf 10 (entget Objkt ))) ;;;Punkt ermitteln (setq Objkt (entnext Objkt)) ;;;nächstes Unterelement (if (/= VTP nil) (setq ;;;Wenn Punkt VTPX (rtos (car VTP) 2 2) ;;;X-Koordinate VTPY (rtos (cadr VTP) 2 2) ;;;Y-Koordinate VTPZ (rtos (last VTP) 2 2) ) ;;;Z-Koordinate ) ;;;Endif (if (/= VTP nil)(write-line (strcat VTPX "," VTPY "," VTPZ) SCHR)) ;;;X,Y,Z im Textformat mit 2Kommas ) ;;;Endwhile (close SCHR) ;;;Datei wieder schliessen (alert "Koordinaten wurden in DATEI \n c:\\3DPOLXYZ.TXT geschrieben.") (princ) )