| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Gesamtfläche (12100 mal gelesen)
|
Olli_75 Mitglied TA
Beiträge: 31 Registriert: 22.10.2003 Autodesk Map 2004 ExpressTools 2004 Windows 2000
|
erstellt am: 14. Apr. 2004 09:26 <-- editieren / zitieren --> Unities abgeben:
|
Kramer24 Ehrenmitglied V.I.P. h.c. Architekt
Beiträge: 5896 Registriert: 09.11.2001 Acad Architecture 2023 WIN 10
|
erstellt am: 14. Apr. 2004 09:35 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 14. Apr. 2004 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
Hallo Olli, Hatchfl funzt für Schraffuren. Hast du jedoch einzelne Polygone, die du nicht extra schraffieren möchtest, dann teste die folgenden Zeilen
Code:
(defun c:gf (/ as elemli plangli z) (setq as (ssget (list '(-4 . "<or") '(0 . "POLYLINE") '(0 . "LWPOLYLINE") '(0 . "CIRCLE") '(-4 . "or>") ) ) ) (setvar "CMDECHO" 0) (if as (setq elemli (bau_elemli as) z 0 ) ) (if elemli (progn (setq plangli (mapcar '(lambda (plli) (command "_.AREA" "_O" plli) (getvar "AREA") );lambda elemli );mapcar ) (terpri) (princ "Gesamt:\t") (princ (apply '+ plangli)) (princ) );progn );if ) (defun bau_elemli (asatz / n elemli) (setq n 0) (repeat (sslength asatz) (setq elemli (cons (ssname asatz n) elemli) n (1+ n) ) ) elemli )
Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kramer24 Ehrenmitglied V.I.P. h.c. Architekt
Beiträge: 5896 Registriert: 09.11.2001 Acad Architecture 2023 WIN 10
|
erstellt am: 14. Apr. 2004 09:47 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 14. Apr. 2004 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
|
Karin72 Mitglied
Beiträge: 278 Registriert: 13.05.2003 Autocad Map 2004, WS-Landcad, LT 2004, LT-Extender,
|
erstellt am: 14. Apr. 2004 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
|
Sparky Mitglied Techniker / Fertigungstechnik
Beiträge: 366 Registriert: 27.11.2000
|
erstellt am: 14. Apr. 2004 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
Eine möglichkeit ohne Lisp-Programme wäre vielleicht auch der Befehl Fläche und der Option Addieren. Nach Aufruf des Befehls die Option Addieren aktivieren, dann die Option Objekt aktivieren. Danach kann man jedes Objekt, das allerdings eine geschlossene Polylinie sein muß, nacheinander anwählen. In der Befehlszeile wird einem zum einen die Fläche des gewählten Objektes angezeigt, und die Gesamtfläche. Ganz ohne Lisp [Diese Nachricht wurde von Sparky am 14. Apr. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 14. Apr. 2004 14:02 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
@Sparky, schön dass du auch diese Möglichkeit aufzeigst. Klar funzt das auch. Viele Sachen gehen ohne Lisp, nur dauern sie dann etwas/sehr viel länger. Auch lassen sich durch eine so automatisierte Abarbeitung Fehler, die durch das stupide bearbeiten sich wiederholender Vorgänge entstehen, verhindern. Deshalb ist die Frage nach einem Hilfsmittel durchaus berechtigt und auch sinnvoll. Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sparky Mitglied Techniker / Fertigungstechnik
Beiträge: 366 Registriert: 27.11.2000
|
erstellt am: 14. Apr. 2004 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
@Brischke Ich gebe dir recht wenn es um die Fehlervermeidung geht. Stupides Arbeiten ermüdet einfach, und dann schleichen sich schnell Fehler ein. Da helfen einem die kleinen Helferlein schon weiter. Vor allem weil es mit den Helferlein meist auch schneller geht. Wobei es aber nicht immer mein Bestreben ist schnell fertig zu sein. Ansich suche ich auch immer nach einer Möglichkeit Effektiv zu arbeiten. Wenn das durch ein Lisp-Programm erreicht werde kann, dann nutze ich das auch, wenn es sich lohnt. Das heißt das ich Anzahl der Eingaben und das aufrufen des Programms schon Vorteile bringen muß. Wenn ich aber mehr Klicken muß als mit den AutoCAD Funktionen selber, dann nutze ich auch kein Lips. Zumal ich, zu meiner Schande gestehend, gar kein Lispprogramm schreiben könnte. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carambita Mitglied Dipl.-Ing. Theater- u. Veranstaltungstechnik
Beiträge: 272 Registriert: 03.10.2002 Windows 7 (64-bit) / AutoCAD 2015
|
erstellt am: 06. Nov. 2013 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
|
xxxmurdockxxx Mitglied techn. Zeichner
Beiträge: 52 Registriert: 18.12.2007 WIN10, Civil 3D 2017 SP1.1
|
erstellt am: 08. Jan. 2015 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
Hallo leider funktioniert das geniale Tool nicht mehr unter ACAD2015. Da meine LISP-Kentnisse sehr beschränkt sind wollte ich mal nachfragen, woran dies liegen könnte. Ist ja bestimmt nur ein fehlendes Zeichen oder ähnliches. Wenn mir hier jemand behilflich sein würde, das wäre super.
------------------ Viele Grüße Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 08. Jan. 2015 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
Hallo Stefan, da wir Deinen Bildschirm nicht sehen (und die Glaskugel gerade beschlagen ist ) ein paar Fragen: 1) Welchen Code nutzt Du, den oben aus der Antwort von Holger, oder die Fla_ber.lsp? 2) Welche Fehlermeldung erscheint bei Dir? Am Besten mal eine Kopie aus Deinem Befehlszeilenfenster hier rein stellen. LG Thomas [Diese Nachricht wurde von spider_dd am 08. Jan. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xxxmurdockxxx Mitglied techn. Zeichner
Beiträge: 52 Registriert: 18.12.2007 WIN10, Civil 3D 2017 SP1.1
|
erstellt am: 08. Jan. 2015 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
Hallo Thomas, ups... Ich meine den Code von Brischke. Fehlercode ist folgender: Bei Auswahl von mehreren Objekten: VVC: Internal Error Wenn nur ein Objekt gewählt ist: ; Fehler: Ausnahmebedingung aufgetreten: 0xC0000005 (Zugriffsverletzung) ; Warnung: Unwind übersprungen bei Ausnahmebedingung ; Fehler: Ausnahmebedingung aufgetreten: 0xC0000005 (Zugriffsverletzung) Hab grad noch ein anderes Lisp versucht. Das funktioniert, aber für unsere Zeichner sollte ich die Funktion trennen Einmal nur Länge und einmal nur Fläche. Optimal wäre es noch, wenn bei der Flächenberechnung auch MPolygone mitberücksichtigt werden. Hier der Code der funktioniert. Code: (defun c:Lars-laenge (/ Lalle Lpoly Flpoly alle i Flanz ele) (princ "\n® Zur Flächenberechnung ") (setq alle (ssget) Lalle 0 Lpoly 0 Flpoly 0 Flanz 0 i 1 ) (while (<= i (sslength alle)) (princ (strcat "\nObjekt " (rtos i 2 0))) (setq ele (ssname alle (1- i)) typ (cdr (assoc 0 (entget ele)))) (if (OR (= typ "LWPOLYLINE") (= typ "REGION") (= typ "CIRCLE") ) (progn (setq Flanz (1+ Flanz)) (cond ((= typ "LWPOLYLINE") (princ " (Polygon)") ) ((= typ "REGION") (princ " (Region)") ) ((= typ "CIRCLE") (princ " (Kreis)") ) ) (princ "\nLänge: ") (command "_AREA" "_O" ele) (princ (setq Lpoly (+ Lpoly (getvar "PERIMETER")))) (princ " Fläche: ") (princ (setq Flpoly (+ Flpoly (getvar "AREA")))) ) (command "_LENGTHEN" ele "") ) ;ende if (command) (setq Lalle (+ Lalle (getvar "PERIMETER"))) (setq i (1+ i)) ;(command) ) ;ende while (princ "\n.\n.\n® ") (if (/= Flanz (sslength alle)) (progn (princ (strcat (rtos (sslength alle) 2 0) " Objekt(e) gefunden\n Gesamtlaenge Objekt(e)= " (rtos Lalle) ) ) (if (> FLanz 0) (princ "\n® davon ") ) ) ) (if (> FLanz 0) (princ (strcat (rtos FLanz 2 0) " Kreis(e)/Polygon(e)/Region(en) gefunden" "\n Gesamtlänge Kreis(e)/Polygon(e)/Region(en) = " (rtos Lpoly) " ; Fläche = " (rtos Flpoly) ) ) ) (princ) ) ;ende defun (princ "\n...geladen")
------------------ Viele Grüße Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 08. Jan. 2015 17:21 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
Hallo Stefan, also zu VVC: Internal Error sagte mir der Gockel: "Found this a problem with Acad 2015 - if you get this error go into your code and look for 'mapcar' then within that look for 'command' and change to 'command-s'" Also ändere die Zeile (command "_.AREA" "_O" plli) zu (command-s "_.AREA" "_O" plli) teste und berichte. Ich hab hier kein 2015, kann also nicht selber testen. Zu Deinem geposteten Code: Der Möglichkeiten es in Längen- und Flächenausgabe zu trennen gibt es hier mehrere. Entweder das Gewünschte (Fläche oder Länge) wird zu Anfang abgefragt und dann nur das entsprechende ausgegeben oder man kopiert das Prog, verteilt entsprechende Namen und Befehlsaufrufe und löscht das jeweils nicht benötigte raus. Gibt es den Ersteller des Lisp noch / ist er bekannt? Dann ggf. dort mal nachfragen (sonst kann ich ja mal einen Blick drauf werfen) LG Thomas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xxxmurdockxxx Mitglied techn. Zeichner
Beiträge: 52 Registriert: 18.12.2007 WIN10, Civil 3D 2017 SP1.1
|
erstellt am: 08. Jan. 2015 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 08. Jan. 2015 17:47 <-- editieren / zitieren --> Unities abgeben: Nur für Olli_75
Hallo Stefan, schön dass es geklappt hat. Zum 2. (weil ja fast noch Weihnachten ist probier mal folgendes: Code:
(defun antwort(frage antw1 antw2 / antw kw) (setq kw (strcat antw1 " " antw2)) (initget 1 kw) (setq antw (substr (getkword frage) 1 1)) ) ; ende defun antwort(defun c:Lars-laenge (/ Lalle Lpoly Flpoly alle i Flanz ele l_f) (setq l_f (antwort "\nLänge [l] oder Fläche [f] ausgeben l/f :" "L" "F")) (if (= l_f "L") (princ "\n® Zur Längenberechnung ") (princ "\n® Zur Flächenberechnung ") ) (setq alle (ssget) Lalle 0 Lpoly 0 Flpoly 0 Flanz 0 i 1 ) (while (<= i (sslength alle)) (princ (strcat "\nObjekt " (rtos i 2 0))) (setq ele (ssname alle (1- i)) typ (cdr (assoc 0 (entget ele)))) (if (OR (= typ "LWPOLYLINE") (= typ "REGION") (= typ "CIRCLE") ) (progn (setq Flanz (1+ Flanz)) (cond ((= typ "LWPOLYLINE") (princ " (Polygon)") ) ((= typ "REGION") (princ " (Region)") ) ((= typ "CIRCLE") (princ " (Kreis)") ) ) (command "_AREA" "_O" ele) (if (= l_f "L") (progn (princ "\nLänge: ") (princ (setq Lpoly (+ Lpoly (getvar "PERIMETER")))) ) (progn (princ " Fläche: ") (princ (setq Flpoly (+ Flpoly (getvar "AREA")))) ) ) ) (command "_LENGTHEN" ele "") ) ;ende if (command) (if (= l_f "L") (setq Lalle (+ Lalle (getvar "PERIMETER"))) ) (setq i (1+ i)) ;(command) ) ;ende while (princ "\n.\n.\n® ") ; (if (/= Flanz (sslength alle)) (if (= l_f "L") (progn (princ (strcat (rtos (sslength alle) 2 0) " Objekt(e) gefunden\n Gesamtlaenge Objekt(e)= " (rtos Lalle) ) ) ; (if (> FLanz 0) (princ "\n® davon ") ; ) ) ) (if (> FLanz 0) (if (= l_f "L") (progn (princ (strcat (rtos FLanz 2 0) " Kreis(e)/Polygon(e)/Region(en) gefunden" "\n Gesamtlänge Kreis(e)/Polygon(e)/Region(en) = " (rtos Lpoly) ) ) ) (progn (princ (strcat (rtos FLanz 2 0) " Kreis(e)/Polygon(e)/Region(en) gefunden" "\n GesamtFläche Kreis(e)/Polygon(e)/Region(en) = " (rtos Flpoly) ) ) ) ) ) (princ) ) ;ende defun (princ "\n...geladen")
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |