| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Polylinien zur Gesamtlänge aufsummieren (1288 mal gelesen)
|
anno45 Mitglied Techniker
Beiträge: 11 Registriert: 09.09.2003
|
erstellt am: 09. Sep. 2003 18:25 <-- editieren / zitieren --> Unities abgeben:
Hallo kann mir jemand helfen, das Programm schreibt keine daten weg. ;** Hauptprogramm!!! ;*************************************************************************** ******************************************************* (defun c:gl (/ as elemli plangli z f) ;** Achtung mit diesem Befehl prüfen, um was für eine Geometrie es sich hier handelt!! ***************************** ;;;;(cdr(assoc 0(entget(setq curve-object(car(nentsel)))))) ;** zum Beispiel >>LWPOLYLINE / LINIE / << usw.!!!!!! ;*************************************************************************** ***************************************** (setq as (ssget "_X" (list '(-4 . "<or") '(0 . "POLYLINE") '(0 . "LWPOLYLINE") '(0 . "LINE") '(0 . "ARC") '(0 . "CIRCLE") '(0 . "SPLINE") '(-4 . "or>") ))) (setvar "CMDECHO" 0) (if as (setq elemli (bau_elemli as) z 0) ) (if elemli (progn (setq f (open "c:/pll.tmp" "w")) (mapcar '(lambda (B) (write-line (strcat (car B) "t" (rtos (apply '+ (mapcar '(lambda (plli) (command "_.LENGTHEN" plli "") (getvar "PERIMETER") ) (cdr B) ) ) 2 2) ) f) ) blkli ) (close f) ) );if (TEXT_LANG) ) ;*************************************************************************** ******************************************************* (defun bau_elemli (asatz / n elemli) (setq n 0) (repeat (sslength asatz) (setq elemli (cons (ssname asatz n) elemli) n (1+ n)) ) elemli ) ;*************************************************************************** ******************************************************* ;** Text in Zeichnung einfügen!! ;*************************************************************************** ******************************************************* (defun TEXT_LANG (/ XX Text1 Text2 epunkt pt-1 pt-2 verh h1 h a) (setq a nil xx nil text1 nil text2 nil) (setq scmde (getvar "CMDECHO")) (command "layer" "M" "02TNR-01" "") (setq w0 0 w90 (* (/ PI 180) 90) w180 PI w270 (* w90 3)) ;** Winkeldefinitionen (setq xx (apply '+ plangli)) (setq xx (rtos xx 2 0)) (princ "\n\n")(princ "Gesamtlänge (XX) : ")(princ XX)(princ "\n") (setq Text1 (strcat "Gesamtlänge : "XX " mm")) (setq h (getvar "DIMTXT")) (setq verh 1.8) (setq h1 (* h verh)) (setq epunkt (getpoint "\n Punkt angeben")) (setq pt-1 (polar epunkt w270 h1)) ;;(setq pt-2 (polar pt-1 w270 h1)) ;** reserve (command "text" epunkt h 0 Text1) ;;(command "text" pt-1 h 0 Text2) ;** Reserve (alert "Gesamt-Fläche des Teiles rechnen (qm) :") (command "_.area" "_o" pause) (command "text" pt-1 h 0 (strcat "Blech (qm) : " (rtos (/ (getvar "area") 1000000) 2 3) " qm")) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 09. Sep. 2003 22:27 <-- editieren / zitieren --> Unities abgeben: Nur für anno45
Hallo anno45, ich nehme an, du hast etwas Streß beim Programmieren, weshalb du dein Problem sehr wortkarg beschreibst. Ich bin mal kurz drüber geflogen, nicht getestet! Was mir aufgefallen ist: Du hast eine Variable plangli. Dieser wird aber nirgends ein Wert zugewiesen. Könnte schon die Lösung all Deiner Probleme sein. Ich möchte Dich aber für die Zukunft bitten, dein Problem etwas genauer zu beschreiben, dann kann man auch zielgerichtet danach schauen und Lösungen finden. Du kannst hier von niemandem erwarten, dass er sich Deinen Code zur Brust nimmt, versucht zu ergründen, was mit diesem eigentlich erreicht werden soll und dann auch noch die Stelle sucht, an der der Fehler womöglich zu finden ist. Hier sind viele hilfsbereite Leute mit sehr viel Ahnung im Forum unterwegs. Bei einer etwas konkreteren Fragestellung, bekommst du dann auch schnelle und gute Hilfe. Bei Fragen ... Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! 10 - Der Countdown läuft. Wofür?... ./. Ich bin vom 07.-10.10. in Stuttgart dabei. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
anno45 Mitglied Techniker
Beiträge: 11 Registriert: 09.09.2003
|
erstellt am: 09. Sep. 2003 23:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, muß mich entschuldigen bin Anfänger. Mein Problem ist, daß ich die Daten nicht in eine Datei schreiben kann, da ich bei >>(lambda (B) (write-line (strcat (car B) "t" (rtos (apply '+ (mapcar '(lambda (plli) (command "_.LENGTHEN" plli "") (getvar "PERIMETER") ) (cdr B) << den ersten Fehler >>kein Argument<< erhalte! Das Programm funktioniert ohne Datei zu erzeugen gut! Möchte mir aber zur Kontrolle eine Liste in eine Datei wegschreiben, da ich sehr viele Polylinien zusammenzählen muß! (progn (setq f (open "c:/pll.tmp" "w")) (mapcar '(lambda (B) (write-line (strcat (car B) "t" (rtos (apply '+ (mapcar '(lambda (plli) (command "_.LENGTHEN" plli "") (getvar "PERIMETER") ) (cdr B) ) ) 2 2) ) f) ) blkli ) (close f) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TK_KE Mitglied
Beiträge: 67 Registriert: 15.07.2003 ...
|
erstellt am: 10. Sep. 2003 08:04 <-- editieren / zitieren --> Unities abgeben: Nur für anno45
Hallo anno45 ! Wi Holger bin ich auch mal kurz drüber geflogen.... Mir sind auch noch ein paar ungenutzte Variablen aufgefallen: (setq elemli (bau_elemli as) z 0) .... wozu das z ? ---- (mapcar '(lambda (B) .... blkli ) .. Wo wird blkli zugewiesen ? - oben arbeitest du mit elemi ! Vielleicht war es das ja. Das nur ungetestet in Kürze. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 10. Sep. 2003 09:17 <-- editieren / zitieren --> Unities abgeben: Nur für anno45
Hallo anno45, ich weiß ja nicht, woher du diesen Code hast. Ich würde dir aber vorschlagen das Original zu verwenden. In dem, was du hier postest ist zu viel geändert, was die Funktion doch erheblich beeinflußt. Das findest du auf meinen Seiten im Freedownload-Tool 27 oder http://ww3.cad.de/foren/ubb/Forum54/HTML/003000.shtml Nimm von dort, die c:gl Funktion und füge am Ende das (TEXT_LANG) ein, dann könnte es laufen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! 10 - Der Countdown läuft. Wofür?... ./. Ich bin vom 07.-10.10. in Stuttgart dabei. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
anno45 Mitglied Techniker
Beiträge: 11 Registriert: 09.09.2003
|
erstellt am: 10. Sep. 2003 18:56 <-- editieren / zitieren --> Unities abgeben:
|
anno45 Mitglied Techniker
Beiträge: 11 Registriert: 09.09.2003
|
erstellt am: 11. Sep. 2003 18:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, habe das Problem gelöst. war nicht schwer, aber wie Du schon sagst, der Stress..... (terpri) ;** Zeilenumbruch (setq dd (open "C:/FL01.tmp" "w")) (foreach plli plangli (write-line (strcat "Länge: " (rtos plli 2 0) "mm") dd) ) (close dd) Ergebnis: Der Liste in der Datei. Länge: 1880mm Länge: 78mm Länge: 112mm
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |