| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Objekt durch auf ein anderes Layer legen, neuer Layer = alter Layer+koo (773 mal gelesen)
|
molo Mitglied Dipl. Ing. Versorgungstechnik
Beiträge: 384 Registriert: 16.07.2002 Windows 7 64 bit, AutoCAD MEP 2012
|
erstellt am: 27. Aug. 2004 14:39 <-- editieren / zitieren --> Unities abgeben:
Moin, ich würde gerne Objekte durch picken auf ein anderes Layer schieben. Der neue Layer heisst genauso, wie der erste, enthält allerdings die Erweiterung _koo. Die Layer habe ich vorher erstellt. Wenn es den Layer noch nicht gibt, wäre eine Fehlermeldung natürlich super. Z.B.: T_rlt_txt --> T_rlt_txt_koo T_san_txt --> T_san_txt_koo T_san_fln_txt --> T_san_fln_txt_koo
Hat jemand etwas änliches in Petto? Grund: Wir erstellen für unsere Bauvorhaben Koordinationspläne. In diesen Plänen werden dann die unterschiedlichen Gewerke zusammen geführt und dort wo es nicht passt verschoben. Diese Pläne werden später auch ausgeplottet. Wenn ich sämtliche Texte der einzelnden Gewerke eingeschaltet lasse, werden die Koordinationspläne leider zu voll. Deswegen müsten einige Texte gelöscht werden. Schöner ist es natürlich diese auf spezielle Layer zu legen, damit ich sie im Koordinationsplan frieren kann, aber ich die Informationen nicht verliere. Wenn ich sie dann doch nochmal brauche, kann ich sie durch Layerwechsel wieder "sichtbar" machen. Natürlich könnte ich auch mit "Laycur" oder eigenschaften anpassen arbeiten, aber da kann mir immer mal etwas auf ein falsches Layer rutschen. Schöner als löschen ist natürlich die Texte, die ich nicht möchte auf gesonderte Layer zu verschieben. ------------------ Schöne Grüsse aus dem Herzen Hamburgs Morten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
heidi Mitglied CAD-Dienstleister
Beiträge: 1130 Registriert: 01.11.2001 Dell Precicion M6700 Nvidia Quadro K3000M AutoCAD 2012 Sp2 nXtRender Tetra4D eigene Tools Adobe CreativeSuite 6 ——————————— MacBook Pro i9 2,3/16/5 Big Sur 11.5.1 BricsCAD V21 Pro
|
erstellt am: 27. Aug. 2004 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Hallo Morton, das müsste doch in den Expresstools von 2000 drin sein, wenn nicht, hol dir die Tools von www.cadwiesel.de runter. Das Teil heisst copytolayer und macht, bis auf die Nemensergänzung genau das, was du willst. Grüße an meine alte Heimat Hamburg ------------------ Gruß Heidi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
molo Mitglied Dipl. Ing. Versorgungstechnik
Beiträge: 384 Registriert: 16.07.2002 Windows 7 64 bit, AutoCAD MEP 2012
|
erstellt am: 27. Aug. 2004 16:12 <-- editieren / zitieren --> Unities abgeben:
Hei Heidi, ja mit dem Befehl könnte ich mir Knöpfe basteln, welches die Objekte immer auf ein bestimten Layer schiebt. Wenn ich immer ordentlich und konzentriert arbeiten würde ginge das auch Aber ich bin mir sicher, dass auf einmal etwas vom Sanitär Layer auf dem Heizungslayer landet. Also von T_san_txt --> T_hzg_txt_koo Deswegen hätte ich sogern etwas automatisches. P.S. Ich grüss Hamburg von Dir wo auch immer Du jetzt bist
------------------ Schöne Grüsse aus dem Herzen Hamburgs Morten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
heidi Mitglied CAD-Dienstleister
Beiträge: 1130 Registriert: 01.11.2001 Dell Precicion M6700 Nvidia Quadro K3000M AutoCAD 2012 Sp2 nXtRender Tetra4D eigene Tools Adobe CreativeSuite 6 ——————————— MacBook Pro i9 2,3/16/5 Big Sur 11.5.1 BricsCAD V21 Pro
|
erstellt am: 27. Aug. 2004 16:27 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Hallo Morton, hab mir mal was ähnliches gebastelt, es kopiert allerdings alle Elemente aus dem gewählten Layer in einen neuen. Vielleicht kannst du dir das ja entsprechend anpassen, im Moment hab ich keine Zeit dazu. Ich nehm das,um die Objekte in 2D zu behalten, bevor ich sie extrudiere. (defun c:la23 () (setq en (entsel "\n Objekt wählen -->")) (setq elist (entget (car en))) (setq olay (cdr(assoc 8 elist))) (setq objall (ssget "X" (list (cons 8 olay)))) (setq nlay (strcat "3D-" olay)) (setq layinfo (tblsearch "Layer" olay)) (setq laycol (abs (cdr (assoc 62 layinfo)))) (command "_LAYER" "_M" nlay "_C" laycol "" "") (command "_.copy" objall "" "@" "@") (command "_.chprop" objall "" "la" nlay "") (command "_LAYER" "_FR" lay "") (princ) ) Ps ich sitz jetzt bei Berlin ------------------ Gruß Heidi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
j-sc Ehrenmitglied
Beiträge: 1837 Registriert: 14.07.2003 W7 64Bit intel core I7 2,8GHz / 4GB ATI FIRE PRO V5800 acad2011 acad2015 acad2018 Athena Expresstools
|
erstellt am: 27. Aug. 2004 22:06 <-- editieren / zitieren --> Unities abgeben: Nur für molo
@Heidi Sorry, dass ich mich einmische - Sysvar DELOBJ auf 0 - und die Objekte werden auch aufgehoben (ohne sie vorher kopieren zu müssen). ------------------ Ciao J-SC ... geht's vielleicht doch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
molo Mitglied Dipl. Ing. Versorgungstechnik
Beiträge: 384 Registriert: 16.07.2002 Windows 7 64 bit, AutoCAD MEP 2012
|
erstellt am: 29. Aug. 2004 12:16 <-- editieren / zitieren --> Unities abgeben:
Hei Heidi, da war ich auch mal für vier Jahre. Möchte aber nicht mit Dir tauschen. Wie sagte schon Lotto King Karl "wenn du aus der Hauptstadt kommst, möchtest du hier gar nich' mehr weg," jetzt aber wieder zum CAD-Kram.
Leider kann ich kein Lisp Ich muss meinen Chef umbedingt mal eine Schulung aus dem Kreuz leiern. Und selbst die Sache mit einem Menü hat den Haken, dass ich eine feste Anzahl von Benutzereingaben vorbestimmen muss. Mit "^C^Claymch \ E T_RLT_TXT_KOO" kann ich also nur ein Objekt ändern. Wenn ich jedesmal wieder den Knopf drücken muss, bringt es mir nichts :| Viel Spass weiterhin in Berlin.
------------------ Schöne Grüsse aus dem Herzen Hamburgs Morten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Britt Mitglied
Beiträge: 154 Registriert: 21.03.2002 AutoCAD 2006 WindowsXP HP800
|
erstellt am: 30. Aug. 2004 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Hallo Molo, ich hab ein lisp, dass durch Anklicken eines Objektes diesen Layer isoliert (alle anderen ausschaltet), nun kann man Objekte auswählen, die werden dann auf den gefrorenen Layer (alter Layername + "_frieren") geschoben, danach werden wieder alle Layer eingeschaltet. Den Layernamenanhang könnte ich auch in "_koo" abändern. Wäre das was für Dich? Tschüß Britt
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
molo Mitglied Dipl. Ing. Versorgungstechnik
Beiträge: 384 Registriert: 16.07.2002 Windows 7 64 bit, AutoCAD MEP 2012
|
erstellt am: 30. Aug. 2004 09:09 <-- editieren / zitieren --> Unities abgeben:
@heidi nochmal danke für Deine Lisp. Sie ist so einfach struckturiert, dass ich mich gestern abend mit einem alten ACAD 14 Buch hingesetzt habe um sie mir aufzubröseln. Wenn dort solche befehle wie mapcar ö.ä. vorkommen ist es vollkommen überfordert. Da ich mich auch schon mit Axels (mapcar) Kurs en wenig auseinandergesetzt habe, war es auch gar nicht so schwer. Auf jedenfall ist dass erstmal ein Start. @Britt
das hört sich gut an. Und würde mir erstmal sehr helfen. Das ist zwar auch noch nicht ganz, dass was ich suche, aber ich werde mich, wenn ich diese verdammte Abgabe die ende nächster Woche ansteht vorbei ist, mal selber dransetzen und das was ich möcht Stück für Stück progamieren. Dann werde ich meine Fortschritte wohl ins Lispforum stellen
------------------ Schöne Grüsse aus dem Herzen Hamburgs Morten 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: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 30. Aug. 2004 09:42 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Hallo Morton, folgend mal eine Lösung mit (mapcar. Die Funktion kopiert die Elemente auf den jeweiligen Layer mit der Namenserweiterung _koo
Code:
(defun c:myc2l (/ aws lali layli) (setq aws (ssget)) (if aws (progn (foreach L (setq layli(mapcar 'cdr (vl-remove-if-not '(lambda (E) (= (car E) 8) ) (apply'append(setq aws (mapcar'entget(bau_elemli aws)))) ) ) ) (if (not(member (setq L(strcat L "_koo")) lali)) (progn (setq lali (cons L lali)) (command "_.-LAYER" "_M" L "") ) ) ) (mapcar '(lambda (E L /) (entmake (subst (cons 8 (strcat L "_koo")) (cons 8 L) (vl-remove-if '(lambda (D) (member (car D) '(-1 330 -2 5)) ) E) ) ) ) aws layli ) ) (princ "\nNix gewählt!") ) ) (defun bau_elemli (asatz / n elemli) (setq n 0) (repeat (sslength asatz) (setq elemli(cons (ssname asatz n) elemli) n (1+ n)) ) elemli )
Bei Fragen ... 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 |
molo Mitglied Dipl. Ing. Versorgungstechnik
Beiträge: 384 Registriert: 16.07.2002 Windows 7 64 bit, AutoCAD MEP 2012
|
erstellt am: 30. Aug. 2004 09:56 <-- editieren / zitieren --> Unities abgeben:
Dank Dir Holger, bei den Gedanken die ich mir gemacht habe, habe ich mir schon gedacht das man mapcar gut einsetzen kann. Der Charm von Heidis Lisp lag für mich eben an der Einfachheit. Ich werd mich aber auch dranmachen Deine Lisp zu verstehen. Leider ist das Buch das ich habe nur sehr oberflächlich und beschreibt nichtr alle Befehle. Aber wo ein will ist, ist auch ein weg. Mapcar und Lambda finde ich auf jeden Fall bei Axel Nochmal vielen Dank! So und jetzt gehts ans ausprobieren
------------------ Schöne Grüsse aus dem Herzen Hamburgs Morten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
heidi Mitglied CAD-Dienstleister
Beiträge: 1130 Registriert: 01.11.2001 Dell Precicion M6700 Nvidia Quadro K3000M AutoCAD 2012 Sp2 nXtRender Tetra4D eigene Tools Adobe CreativeSuite 6 ——————————— MacBook Pro i9 2,3/16/5 Big Sur 11.5.1 BricsCAD V21 Pro
|
erstellt am: 31. Aug. 2004 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Hallo Morton, dank dir für die Blumen . Sorry, dass ich mich nur so sporadisch melde, aber ich habe Urlaub und bin nicht ständich online Ich hoffe, du bist mit deinem Vorhaben weiter gekommen. ------------------ Gruß Heidi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BBecker Mitglied
Beiträge: 133 Registriert: 05.06.2002 Windows 7, Acad 2012 MEP
|
erstellt am: 27. Okt. 2005 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Hallo Holger, diese Lisp ist genau das was ich brauche. Sie kopiert Objekte auf einen neuen Layer mit mit dem alten Namen des Layers und der Erweiterung _koo. Leider ignoriert diese Lisp Blöcke mit Attributen (alle Elemente auf Layer 0) und läßt auch sonst einige Objekte unbearbeitet. Meine Bitte an Dich ist: ob Du die Routine so erweitern kannst, dass alle ausgewählten Objekte auf den neuen Layer kopiert werden. Gruß Beate 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: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 27. Okt. 2005 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für molo
|
BBecker Mitglied
Beiträge: 133 Registriert: 05.06.2002 Windows 7, Acad 2012 MEP
|
erstellt am: 27. Okt. 2005 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Die Inhalte der Blöcke sollen sich nicht verändern. Sie sollen nur kopiert und dann auf einem Layer mit der Endung _koo liegen und an der selben Stelle liegen bleiben wie das Original. Es wäre dann so wie Du sagst, das dann die Elementänderung im Duplicat erfolgt. Gruß Beate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 27. Okt. 2005 14:02 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Offtopic: ...zum Verständnis, warum ich immer zwischen Insert/Blockreferenz und Blockdefinition unterscheide.... .. denke, der Holger meint das ähnlich.. Objekte einer Autocadzeichnung, die eine grafischer Darstellung besitzen – kurz Entitys – können in Blöcken zusammengefasst werden. Diese Block-Container werden einmal in der Zeichnungsdatenbank – in der Blocktabelle (BlockTableRecord) - gespeichert. Blöcke selbst haben keine grafische Darstellung. Durch den ACAD-Befehl EINFÜGE / _insert kann dann eine Blockreferenz (Objektname: AcadDbBlockreference ) in der Zeichnung erstellt werden. Auch wenn es für den Anwender so aussieht, eine Blockreferenz ist keine Kopie der im referenzierten Block enthaltenen Objekte, sondern nur eine Visualisierung. Somit ändert sich bei Bearbeitung einer Blockreferenz mittels REFBEARB / _refedit nicht nur die angewählte, sondern alle Einfügungen des referenzierten Blockes. ------------------ - 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 |
BBecker Mitglied
Beiträge: 133 Registriert: 05.06.2002 Windows 7, Acad 2012 MEP
|
erstellt am: 27. Okt. 2005 16:55 <-- editieren / zitieren --> Unities abgeben: Nur für molo
Vielen Dank für die Erklärung der Blockreferenz und Blockdefinition. Darüber sind wir aber von meinem eigentlichen Problem abgekommen. Sollte Euch zu diesem Thema noch etwas einfallen, wäre ich für einen Vorschlag sehr dankbar. Gruß Beate Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |