| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Hilfe zur Lisp-Ergänzung bzw. Veränderung gesucht! (682 mal gelesen)
|
die wölfin Mitglied Bauzeichnerin, FB Hochbau, Schwerpunkt Senioren- und Behindertengerechtes
Beiträge: 108 Registriert: 09.05.2003 Win 7 Professional (64 Bit), AutoCAD Architecture 2015, HP DesignJet T730, Ricoh Aficio MP C3001
|
erstellt am: 16. Aug. 2010 13:06 <-- editieren / zitieren --> Unities abgeben:
Hallöle an alle, ich würde gern einige Daten einer Zeichnung in Excel exportieren und habe dazu >hier< auch schon einen sehr guten Ansatz gefunden. Allerdings würde ich gern darin noch etwas verändern bzw. ergänzen: Und zwar hätte ich gern in der ersten Spalte den Winkel der Linie, in der zweiten die X-Koordinaten, in der dritten die Y-Koordinaten, sowie in der vierten die Linienlänge. Ich habe schon versucht irgendwie rauszufinden, wie ich das machen kann (und mir auch schon ein wenig die auch in dem Beitrag gelinkte Seite autolisp-tutorial.mapcar.net angeguckt) bin dafür aber dann wohl doch noch zu unwissend. Kann mir vielleicht einer von Euch irgendwie beim Umschreiben des dort gelisteten Befehls len2excel helfen??? Gnadenlos optimistisch schon mal besten Dank vorab! wölfin ------------------ Sollte ich eines Tages erfahren, dass ich schon morgen sterben muss, will ich mich nicht darüber ärgern, mir nicht genügend Zeit für die schönen Dinge im Leben genommen zu haben, sondern lächelnd in Erinnerungen schwelgen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 16. Aug. 2010 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für die wölfin
|
die wölfin Mitglied Bauzeichnerin, FB Hochbau, Schwerpunkt Senioren- und Behindertengerechtes
Beiträge: 108 Registriert: 09.05.2003 Win 7 Professional (64 Bit), AutoCAD Architecture 2015, HP DesignJet T730, Ricoh Aficio MP C3001
|
erstellt am: 16. Aug. 2010 13:38 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium: du brauchst nicht zu x-posten ... die entsprechenden Leute haben dein Erstposting sicherlich gelesen ... aber das ist nunmal nicht nur n 5-Zeiler
Ich blinde Kuh habe erst nachher gemerkt, dass ich es eigentlich ins falsche Forum gebracht hab... (Habe den Erstbeitrag aber auch schon mit einem entsprechendem Vermerk versehen!) ------------------ Sollte ich eines Tages erfahren, dass ich schon morgen sterben muss, will ich mich nicht darüber ärgern, mir nicht genügend Zeit für die schönen Dinge im Leben genommen zu haben, sondern lächelnd in Erinnerungen schwelgen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 17. Aug. 2010 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für die wölfin
Hallo wölfin, CADmium hat recht, es ist sicher kein 5 Zeiler, wenn man es richtig machen wollte. Ich habe mir dennoch den Code aus dem von dir verlinkten Beitrag mal hergenommen, und die notwendigen Änderungen bzw. Ergänzungen vorgenommen. Ich bin zwar überhaupt kein Freund davon, die Macht-mir-mal-Mentalität zu unterstützen, und habe es dennoch getan: In diesem Beispiel kann man recht gut sehen, wie aus dem statischen Code, der lediglich die 2 Spalten mit den festgelegten Werten füllen kann, ein dynamisch verwendbarer Code geworden ist. Ich habe auf eine zu starke Strukturierung in Subroutinen und Trennung von Befehls und Arbeitsfunktion verzichtet, damit der ungeübte Betrachter sich allein auf die relevanten Änderungen konzentrieren kann. Ich habe den Befehl auch umbenannt, und die Auswertung der LWPolylinien entfernt. Sollte man letztere ebenfalls auswerten wollen (die einzelnen Segmente einer LWPolyline), dann würde der Code doch etwas komplexer werden. Bei Fragen ... Holger FF der geänderte Code
Code:
(defun c:LinProps2excel (/ satz data_list n ent_data excel ExcelWorkbook ExcelSheet ExcelCells zeile toString ) (vl-load-com) ;;;Erst mal einen Auswahlsatz erstellen in dem Linien und Polylinien drinn sind: (setq satz (ssget '((0 . "LINE")))) ;;;Dann den Auswahlsatz durchlaufen und eine Liste erzeugen den Startpunkt und die Länge des Elements enthält ;;;Diese Liste, die für jedes Element erzeugt wird, packen wir gleich in eine Liste die das für alle Elemente sammelt (setq data_list (list;Spaltenüberschriften '("Winkel" "Start-X" "Start-Y" "Ende-X" "Ende-Y" "Länge" ) ) n (1- (sslength satz)) ) (repeat (sslength satz) (setq ent_data (entget (setq ent_name (ssname satz n))) data_list (cons (list; Beliebig erweiterbar um weitere Element-Infos (z.B. Layername, ...) ;|"Winkel"|; (* (/ 180.0 pi)(angle (cdr (assoc 10 ent_data)) (cdr (assoc 11 ent_data)))) ;|"Start-X"|;(car(cdr (assoc 10 ent_data))) ;|"Start-Y"|;(cadr(cdr (assoc 10 ent_data))) ;|"Ende-X"|; (car(cdr (assoc 11 ent_data))) ;|"Ende-Y"|; (cadr(cdr (assoc 11 ent_data))) ;|"Länge"|; (VLA-GET-LENGTH (VLAX-ENAME->VLA-OBJECT ent_name)) ) data_list ) n (1- n) ) ) ;;;jezt das Ganze in Richtung Excel - Excel muß geöffnet sein ;;; erst mal einrichten (if (setq excel (vlax-get-object "excel.application")) (progn (setq ExcelWorkbook (if excel (vlax-get-property excel "ActiveWorkbook" ) ) ExcelSheet (if ExcelWorkbook (vlax-get-property ExcelWorkbook "ACTIVESHEET" ) ) ExcelCells (if ExcelSheet (vlax-get-property ExcelSheet "CELLS" ) ) ) ) (alert "Excel nicht gefunden") ) ;;; und dann rüberschieben (setq zeile 1) (defun toString (val TrennZeichen WinNumbers / ValueType) ;;; Wandelt Werte in Zeichenketten um ;;; Listen werden mit [TrennZeichen] getrennt ;;; Wenn WinNumbers == T -> dann wird in Zahlenwerten Punkt durch Komma ersetzt (setq ValueType (type val)) (cond ((= ValueType 'LIST) (substr (apply 'strcat (mapcar '(lambda (lval) (strcat TrennZeichen (toString lval TrennZeichen WinNumbers) ) ) val ) ) 2 ) ) ((= ValueType 'REAL) (setq val (rtos val 2 (getvar "LUPREC"))) (if WinNumbers (vl-string-translate "." "," val) val ) ) ((= ValueType 'INT) (itoa val) ) ((= ValueType 'STR) val ) ) ) (mapcar '(lambda (data / spalte) (setq spalte 1) (mapcar '(lambda (val / txt) (setq txt (toString val " " T)) (vlax-put-property ExcelCells "ITEM" zeile spalte (strcat "'" txt) ) (setq spalte (1+ spalte)) ) data ) (setq zeile (1+ zeile)) ) (reverse data_list) ) ;;; ordentlich abmelden (vlax-release-object excel) (vlax-release-object ExcelWorkbook) (vlax-release-object ExcelSheet) (vlax-release-object ExcelCells) ;;; fertig (princ) )
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
die wölfin Mitglied Bauzeichnerin, FB Hochbau, Schwerpunkt Senioren- und Behindertengerechtes
Beiträge: 108 Registriert: 09.05.2003 Win 7 Professional (64 Bit), AutoCAD Architecture 2015, HP DesignJet T730, Ricoh Aficio MP C3001
|
erstellt am: 18. Aug. 2010 07:49 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Holger! Gaaaaaaaanz dickes Dankeschön!!! *umarm* Oh man, ich wünschte ich würde das auch alleine hinkriegen! Ich schreibe mir zwar auch selber Scripts, aber meist über die Command-Funktion und mit nur wenigen einfachen setq's, if's, getvar's und kal-Berechnungen. *schäm* Aber ich gebe die Hoffnung nicht auf, von dem, was Ihr so alles Scripten könnt, mir auch irgendwann zumindest ein kleines bisschen anzueigenen! wölfin ------------------ Sollte ich eines Tages erfahren, dass ich schon morgen sterben muss, will ich mich nicht darüber ärgern, mir nicht genügend Zeit für die schönen Dinge im Leben genommen zu haben, sondern lächelnd in Erinnerungen schwelgen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 18. Aug. 2010 07:58 <-- editieren / zitieren --> Unities abgeben: Nur für die wölfin
Zitat: Original erstellt von die wölfin: ... Aber ich gebe die Hoffnung nicht auf, von dem, was Ihr so alles Scripten könnt, mir auch irgendwann zumindest ein kleines bisschen anzueigenen! ...
Dann schau dir die beiden Lisp-Codes nebeneinander an. Du weißt was das Basis-Programm gemacht hat und du weißt, was das Programm jetzt macht. Allein aus der Analyse der Unterschiede, solltest du einiges lernen können. Und wenn du manches im Vergleich nicht kapierst, dann kannst ud ja hier im Forum deine Fragen posten. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
die wölfin Mitglied Bauzeichnerin, FB Hochbau, Schwerpunkt Senioren- und Behindertengerechtes
Beiträge: 108 Registriert: 09.05.2003 Win 7 Professional (64 Bit), AutoCAD Architecture 2015, HP DesignJet T730, Ricoh Aficio MP C3001
|
erstellt am: 18. Aug. 2010 08:11 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Brischke: Dann schau dir die beiden Lisp-Codes nebeneinander an. Du weißt was das Basis-Programm gemacht hat und du weißt, was das Programm jetzt macht. Allein aus der Analyse der Unterschiede, solltest du einiges lernen können. Und wenn du manches im Vergleich nicht kapierst, dann kannst ud ja hier im Forum deine Fragen posten.Grüße Holger
Keine Sorge, da sorgt meine Tüftel-Neugier schon für; das werde ich ganz bestimmt tun!!! (Sowohl das durchleuchten, als sicher auch das nichts kapieren und deshalb was posten) Danke noch mal! ------------------ Sollte ich eines Tages erfahren, dass ich schon morgen sterben muss, will ich mich nicht darüber ärgern, mir nicht genügend Zeit für die schönen Dinge im Leben genommen zu haben, sondern lächelnd in Erinnerungen schwelgen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|