| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| CIDEON Whitepaper: Elektronik und Mechanik redundanzfrei vereinen: Der Weg zur mechatronischen Stückliste, ein Whitepaper
|
Autor
|
Thema: Summe der Linien eines Layers (483 mal gelesen)
|
wingi Mitglied Technischer Zeichner
Beiträge: 30 Registriert: 28.10.2004
|
erstellt am: 23. Mai. 2005 15:29 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 23. Mai. 2005 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
|
Henrike Mitglied
Beiträge: 61 Registriert: 21.08.2002
|
erstellt am: 23. Mai. 2005 16:20 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
Hallo Wingi, Aus dem Menü EXTRAS die Schnellauswahl aufrufen, Objekttyp auf Linie stellen, bei Eigenschaften Layer wählen, Operator =, bei Wert den Layernamen auswählen; bei Verlassen des Dialogfeldes wird die Anzahl der gewählten Linien in der Befehlszeile angezeigt. Dabei werden allerdings alle Linien auf dem Layer gezählt, auch ev. vorhandene 3D-Linien. mfg Heike Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cosgeo Mitglied Vermessungsingenieur
Beiträge: 591 Registriert: 16.12.2004 Windows 8 64bit AutoCad Map 3D AutoCAD Civil3D MapGuide COSGeo - Vermessungsaplikation COSALKIS - Konverter Xeon 3,3 GHz, 16GB RAM HP 1050
|
erstellt am: 23. Mai. 2005 16:44 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
AutoCAD unterscheided nach Linientyp (Linie, 2D-Poly,3D-Poly). Wenn nur Layer als Kriterium angegeben wird kann in der Schnellauswahl im Aufklappmenü eine "Statistik" der ELemente des LAyers abgerufen werden (2 Linien, 3 Kreise ...) Oder man wählt gleich den gewünschten Objekttyp in der Schnellauswahl. ------------------
Intelligenz ist wissen wo`s steht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 23. Mai. 2005 16:47 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
Nachfrage : was ist gesucht? Die Anzahl der Linien, oder die Summe der Linienlängen ? ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wingi Mitglied Technischer Zeichner
Beiträge: 30 Registriert: 28.10.2004
|
erstellt am: 24. Mai. 2005 08:15 <-- editieren / zitieren --> Unities abgeben:
Ich suche die Summe der Linienlängen in der erstellten Zeichnung, wollte den Massenauszug der bestimmten Leitung (die auf einem Layer liegt) machen, aber habe feststellen müssen, daß es nicht so einfach ist! Habe früher durch die PIT-CUP Applikation früher die Summe aller Linien/Bogen-Längen eines Layers rausziehen können, klappt aber jetzt irgendwie nicht.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 24. Mai. 2005 08:53 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
vielleicht hilft dir folgenes Lisp weiter (defun c:GETLINELENGTHSUM( / LAYER AUSWAHL INDEX OBJ VALUE SUMME) (vl-load-com) (if(and(or(/=(setq LAYER (getstring 'T "Layer wählen <Von Objekt>: ")) "") (and(setq LAYER(car(nentsel))) (setq LAYER(cdr(assoc 8 (entget LAYER)))) ) ) (tblsearch "LAYER" LAYER) ) (progn (if(setq AUSWAHL(ssget "_x" (list(cons 8 LAYER)'(0 . "*LINE,ARC")))) (progn (sssetfirst AUSWAHL AUSWAHL) (setq Index -1) (setq SUMME 0 ) (repeat (sslength AUSWAHL) (setq OBJ(vlax-ename->vla-object(ssname AUSWAHL(setq INDEX(1+ INDEX))))) (if(or(and(vlax-property-available-p OBJ 'length) (not(vl-catch-all-error-p (setq VALUE(vl-catch-all-apply 'vlax-get-property (list OBJ 'length) ) ) ) ) ) (and(vlax-property-available-p OBJ 'arclength) (not(vl-catch-all-error-p (setq VALUE(vl-catch-all-apply 'vlax-get-property (list OBJ 'arclength) ) ) ) ) ) ) (setq SUMME(+ SUMME VALUE)) ) ) (princ (strcat"\n Die Summe aller (Poly)Linienlängen auf Layer \"" LAYER "\" beträgt " (rtos SUMME 2 2) ) ) ) (princ (strcat"\nKeine (Poly)Linienobjekte auf Layer \"" LAYER "\" vorhanden!\n")) ) ) (princ "\n Eingegebener Layer existiert nicht.\n") ) (princ) ) EDIT: +sssetfirst zum Ausleuchten der Auswahl ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." [Diese Nachricht wurde von CADmium am 25. Mai. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wingi Mitglied Technischer Zeichner
Beiträge: 30 Registriert: 28.10.2004
|
erstellt am: 24. Mai. 2005 15:31 <-- editieren / zitieren --> Unities abgeben:
Irgendwie hat es nicht geklappt.... Anzeige Befehlszeile: Befehl: appload GETLINELENGTHSUM.lsp erfolgreich geladen. Befehl: Befehl: Befehl: GETLINELENGTHSUM Layer wählen <Von Objekt>:
Objekt wählen: ------------- Befehl: Befehl: Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 24. Mai. 2005 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
Zitat: Original erstellt von wingi: Irgendwie hat es nicht geklappt....
... aber am Lisp liegt es IMHO nicht.. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wingi Mitglied Technischer Zeichner
Beiträge: 30 Registriert: 28.10.2004
|
erstellt am: 24. Mai. 2005 15:54 <-- editieren / zitieren --> Unities abgeben:
habe leider nicht so große erfahrung mit Lisp. ...kannst mal nachfervolgen, ob ich das richtig gemacht habe... -habe die Lisp im Editor eingefügt, und als Lisp gespeichert -Mit Appload reingeladen ins AutoCAD -den Befehl (GETLINELENGTHSUM) eingetippt -nach nochmaligen "Bestätigen den Objekt (Linie) in der Zeichnung angeklickt, -dann waren nur noch "---------" in der Befehlszeilen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 24. Mai. 2005 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
ich habe es getestet und habe ein korrektes ergebnis bekommen. die routine zählt Dir nur die längen von linien, KEINE polylines, KEINE kreise,NICHTS von Xref'-Layern. Du wolltest aber auch nur die längen aller LINIEN. ich nehme an, mit nochmaligem bestätigen meinst Du ENTER und dann wäre alles korrekt, bei mir funktioniert es. mach Dir mal eine testzeichnung mit einem layer und einer linie und probier es nochmal.. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 24. Mai. 2005 20:30 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
@CAD4FUN ...(setq AUSWAHL(ssget "_x" (list(cons 8 LAYER)'(0 . "*LINE,ARC")))).. berücksichtigt bei den Objekten für die Längenermittlung auch Polylinien (LW+2D+3D) sowie Bögen ... ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wingi Mitglied Technischer Zeichner
Beiträge: 30 Registriert: 28.10.2004
|
erstellt am: 25. Mai. 2005 06:56 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium. Habe es nochmal mit AutoCAD 2005 versucht, da hat es funktioniert!!!! Im Rel. 2002 hat es aber nicht geklappt, wird an der Applikation liegen. Wirds Zeit das AutoCAD upzugraden....) DANKE CADmium für die schnelle Hilfe!! Bewundere Dein können mit dem Schreiben von LISP`s, muß mich in Zukunft näher damit beschäftigen.. Vielen Dank nochmals!!! Gruß Wingi!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 25. Mai. 2005 07:18 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
Zitat: Original erstellt von CADmium: @CAD4FUN ...(setq AUSWAHL(ssget "_x" (list(cons 8 LAYER)'(0 . "*LINE,ARC")))).. berücksichtigt bei den Objekten für die Längenermittlung auch Polylinien (LW+2D+3D) sowie Bögen ...
sorry CADmium, bei mir nicht. in beiliegender DWG ist das ergebnis 5.00, Polyline und Bogen werden nicht mitgerechnet. vielleicht aber liegt es an ACAD2002, ich kann das nicht beurteilen. aber die antwort von WINGI weist ja auch darauf hin. lG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 25. Mai. 2005 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
@cad4fun .. bei Bogen hattest du recht - ist aber geändert-, bei Polylinie funzt es bei mir ohne Probleme. Weiterhin ist jetzt ein ssetefirst drin, damit du siehst, was eigentlich ausgewählt wurde. Anbei aber noch ein anderer Ansatz über vlax-curve (defun c:GETLINELENGTHSUM( / LAYER AUSWAHL INDEX OBJ VALUE SUMME) (vl-load-com) (if(and(or(/=(setq LAYER (getstring 'T "Layer wählen <Von Objekt>: ")) "") (and(setq LAYER(car(nentsel))) (setq LAYER(cdr(assoc 8 (entget LAYER)))) ) ) (tblsearch "LAYER" LAYER) ) (progn (if(setq AUSWAHL(ssget "_x" (list(cons 8 LAYER)'(0 . "*LINE,ARC")))) (progn (sssetfirst AUSWAHL AUSWAHL) (setq Index -1) (setq SUMME 0 ) (repeat (sslength AUSWAHL) (setq OBJ(vlax-ename->vla-object(ssname AUSWAHL(setq INDEX(1+ INDEX))))) (if(not(vl-catch-all-error-p (setq VALUE (vl-catch-all-apply 'vlax-curve-getDISTAtPARAM (list OBJ (vlax-curve-getEndParam OBJ)) ) ) ) ) (setq SUMME(+ SUMME VALUE)) ) ) (princ (strcat"\n Die Summe aller (Poly)Linienlängen auf Layer \"" LAYER "\" beträgt " (rtos SUMME 2 2) ) ) ) (princ (strcat"\nKeine (Poly)Linienobjekte auf Layer \"" LAYER "\" vorhanden!\n")) ) ) (princ "\n Eingegebener Layer existiert nicht.\n") ) (princ) )
------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 25. Mai. 2005 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 25. Mai. 2005 08:30 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 25. Mai. 2005 08:35 <-- editieren / zitieren --> Unities abgeben: Nur für wingi
|