| |
| 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: Anonyme Blöcke per Lisp umbenennen (7275 mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 20. Apr. 2005 10:25 <-- editieren / zitieren --> Unities abgeben:
Ich bin in alten Zeichnungen über "anonyme Blöcke" (z.B. "*X3" für eine Schraffur) gestolpert. Da sie durch ihre Anonymität schwer zu handeln sind würde ich sie gerne per Lisp (UMBENENN geht ja nicht, weil anonym ..) in benannte Blöcke umtaufen. Geht das? Darf man das? Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 20. Apr. 2005 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
bei www.Cadwiesel.de solltest du fündig werden, wenn nicht -> Anhang als vlx speichern , in ACAD laden und dann mit Block-rename aufrufen , bzw. für die ganze Zeichnung : BLOCKS->NOTANONYMUS ------------------ - 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 20. Apr. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 20. Apr. 2005 10:50 <-- editieren / zitieren --> Unities abgeben:
habe gestern leider nur etwas oberflächlich bei Cadwiesel gesucht und mit Stichwort "anonym" nichts gefunden, aber jetzt habe ich nochmals ordentlich geschaut - und sieh da: BenennUBL neue Version Benennt Unbenannte Blöcke (die mit * beginnen) in Benannte um. Es können entweder einzelne Böcke umbenannt werden,(Bsp: X347) oder durch eingabe von * innerhalb des Blocknamens alle die dem Suchkriterium entsprechenden (Bsp: X*) Danke
Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) [Diese Nachricht wurde von Peter2 am 21. Apr. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 21. Apr. 2005 09:19 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium: ...-> Anhang als vlx speichern , in ACAD laden und dann mit Block-rename aufrufen , bzw. für die ganze Zeichnung : BLOCKS->NOTANONYMUS
Guten Morgen dazu zwei Fragen: 1) bei "Block-rename - alle" wird nur der erste Block aus meiner Objektwahl angeboten und umbenannt, dann ist das Programm fertig. Ist das Absicht oder sollte das in einer Schleife alles Gefundene abarbeiten? 2) ich habe den Block "*X3" mit drei Inserts, aber mit "BLOCKS->NOTANONYMUS" passiert gar nichts: keine Rückmeldung, keine Umbenennung. Wie sollte dieser Programmteil laufen? Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Apr. 2005 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Ein Block kann ja bloß einmal in einer Zeichnung vorkommen und dann nur öfter referenziert werden. Auswählbar sind die Blockreferenzen. Beim Umbenennen eines Blocks, der nach der gewählten Blockreferenz gesucht wird , macht es demnach Sinn nur EINE Blockreferenz auswählen zu lassen, bzw. die erste der aktuellen Auswahl zu nutzen. Nutzt man die Option Neuer Name = Timestamp könnte ich noch eine Automatisierung implementieren. Bei Neuer Name = * wird der Block anonymisiert. BLOCKS->NOTANONYMUS wandelt alle anonymen Nutzer-Blöcke, also die, deren Name mit *U anfängt in benannte um und vergibt als Namen eine Art Timestamp. (alle anderen anonymen Blöcke wie Bemassungen usw. hab ich absichtlich ausgeklammert) Dies geschieht ohne weitere Meldung in der Befehlszeile. Woraus resultiert denn der Blockname *X3 ? ------------------ - 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 |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 21. Apr. 2005 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 21. Apr. 2005 10:18 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium: Beim Umbenennen eines Blocks, der nach der gewählten Blockreferenz gesucht wird , macht es demnach Sinn nur EINE Blockreferenz auswählen zu lassen, bzw. die erste der aktuellen Auswahl zu nutzen.
Die Auswahl nur eines Blockes macht Sinn, aber die Meldung "Objekte wählen:" macht dem harmlosen Anwender glaubhaft, dass hier mehr auf einmal bearbeitet wird. Steht hier ein "ssget" dahinter? Weil "entsel" fragt nur nach "Objekt wählen:", und da weiss man, dass es nur um eines geht. Wenn man aber dennoch mehr Blöcke auf einmal wählen könnte und die dazugehörenden Inserts der Reihe nach durchlaufen würden, wäre das schon was hübsches :-) Zitat: Original erstellt von CADmium: BLOCKS->NOTANONYMUS wandelt alle anonymen Nutzer-Blöcke, also die, deren Name mit *U anfängt in benannte um und vergibt als Namen eine Art Timestamp. (alle anderen anonymen Blöcke wie Bemassungen usw. hab ich absichtlich ausgeklammert) Woraus resultiert denn der Blockname *X3 ?
Mein *X3 ist eine Schraffur (Herkunft: irgendwelche sehr alte Zeichnungen), die aber beim Explodieren des Blockes in Linien zerfällt und nicht in eine Schraffur. Vielelicht könte man hier Optionen ergänzen: nur *U, nur *X, alle * .... Zitat: Original erstellt von CADmium: Dies geschieht ohne weitere Meldung in der Befehlszeile.
Du weisst, ich bin der Mann fürs Literarische, ich ich freue mich immer, wenn der Computer mir kurz erzählt, was los ist (oder auch nicht): "Blöcke A und B umbenannt." "Keine Blöcke mit ... gefunden." Zitat: Original erstellt von CADWiesel: .. hast meins denn schon probiert?
ja - hab dir auch schon ein E-Mail geschickt. Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Apr. 2005 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von Peter2: Wenn man aber dennoch mehr Blöcke auf einmal wählen könnte und die dazugehörenden Inserts der Reihe nach durchlaufen würden, wäre das schon was hübsches
.. macht aber trotzdem kein Sinn, es sei denn , es sind alles Klarnamen .. sonst weiß man doch nicht welchen Block man gerade umbenennt. Zitat: Original erstellt von Peter2:
Vielelicht könte man hier Optionen ergänzen: nur *U, nur *X, alle *
Nein , mache ich nicht, mag für deinen Einsatzfall vielleicht ok sein, für den Allgemeinen Einsatz schaffts sicher Probleme ( Bemassungen usw.) Dafür gibts ja die Umbenennfunktion mit dem bewußten auswählen. ------------------ - 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 |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 21. Apr. 2005 10:56 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium: .. macht aber trotzdem kein Sinn, es sei denn , es sind alles Klarnamen .. sonst weiß man doch nicht welchen Block man gerade umbenennt.
Das ist richtig und funktioniert bestens, wenn man weiss, was und wo man klickt. Schwieriger wird die Sache dann, wenn sehr viele Blöcke herumliegen, Block in Block und übereinander - dann macht es ev. Sinn, alle mal auf irgendwelche Klarnamen umzubennen und dann mit Blockansicht, Schnellfilter usw. weiterzuarbeiten. Aber das ist wahrscheinlich weniger der Regelfall und daher hier nicht von weiterem Interesse. Zitat: Original erstellt von CADmium: Nein , mache ich nicht, mag für deinen Einsatzfall vielleicht ok sein, für den Allgemeinen Einsatz schaffts sicher Probleme ( Bemassungen usw.) Dafür gibts ja die Umbenennfunktion mit dem bewußten auswählen.
OK. Danke für deine Hilfe. Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 17. Nov. 2009 15:12 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
wenn ich den Block liste, welchen ich umbenennen möchte erhalte ich folgendes: BLOCK REFERENCE Layer: "41_bef_skylt" Space: Model space Handle = 984 Block Name: "A1-1" Anonymous Name: "*U6" at point, X= 6188.997 Y= 1341.316 Z= 0.000 X scale factor: 1.000 Y scale factor: 1.000 rotation angle: 0g Z scale factor: 1.000 InsUnits: Meters Unit conversion: 1.000 Scale uniformly: No Allow exploding: Yes Visibility: BEF Eine Routine, die mir "standard"-blöcke umnennen half scheitert hier: (defun c:reb () (princ "\n rename block") (setq element (entget (car (entsel "\nselect block"))) name (CDR(ASSOC 2 element))) (command "_rename" "block" name"") ) wegen dem anonymen namen "*u6", das ist mir neu, was kann man damit anfangen, bzw. wie erhalte ich einen "anonymen namen" ? cp
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 17. Nov. 2009 15:18 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
anonyme Blöcke sind Blöcke , dessen Namen vom System vergeben werden und die , wenn sie nicht referenziert werden , vom System beim Speichern und Schließen der Zeichnung bereinigt werden. .. solche Blöcke entstehen bei u.a. bei Bemaßungen (*D..) und bei dynamischen Blöcken (*U) sowie bei einigen Konvertierern aus Fremdformaten ... die anonymen Blöcke werden von den Acad-Dialogen / Befehlen ignoriert .. man kommt da bloß programmseitig ran ( auch zur Erzeugung ) ------------------ - 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 |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 17. Nov. 2009 15:23 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 17. Nov. 2009 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
ja danke für die Antworten, ich habe nicht vor an den Namen von *U oder *D blöcken rumzuschrauben. Problem 1) bei der beigefügten Zeichnung habe ich den Block A1-1 über den Blockeditor in A1-2 kopiert und dabei den *U-namen erhalten. Mir völlig unerklärlig warum. Jedenfalls stört mich das, weil das blockcounter.lsp von cadwiesel da *U-block ausliest Problem 2) wie lassen sich die "visibility-parameter" übertragen auf eines anderes Blocksymbol ? das Prinzip ist einfach vis1: blocksymbol + text "BEF" vis2: blocksymbol + text "BEF RIVS" + kreuz vis3: blocksymbol + text "BEF FLYTTAS" vis4: blocksymbol + text "NY" Gruss cp
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 17. Nov. 2009 15:58 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 17. Nov. 2009 16:05 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 17. Nov. 2009 20:41 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Ja cadffm, das war durchaus hilfreich für mich, die Sache vielleicht auch mal von der anderen, etwas "kritischeren" Seite zu sehen. Genau das Beispiel zeigt vielleicht, wie anfällig dynamische Blöcke sein können bzw. wie verwertbar sind sie in der Datenbank. Für alle ebenfalls unwissenden habe ich jetzt geschnallt, dass ein dyn. Block, wenn er einmal verändert wird über die dyn. Parameter, zusätzlich die "*U"-info in der Datenbank erhält. Dennoch möchte ich die Sache nicht ganz in den Wind schlagen, also die Frage bleibt offen, wie könnte man einmal definierte dynamische Paramter von Block zu Block übertragen ? cp Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 17. Nov. 2009 21:20 <-- editieren / zitieren -->
Hi, >> wie könnte man einmal definierte dynamische Paramter von Block zu Block übertragen ? IMHO gar nicht (oder zumindest fast nicht). Begründung: jeder Parameter auf irgendeine Art verbunden mit der Geoemtrie in der Blockdefinition. Und genau diese 'Verbundenheit' wüsste ich nicht, wie diese zu übertragen sein sollte. Ich mach mal ein Beispiel, aus dem diese Abhängigkeit hoffentlich hervorgeht: Ein dynamischer Block (-definition) namens 'Verkehrszeichen' mit einem Sichtbarkeitsparameter. Dieser zeigt eine 'Vorrang-geben'-Geometrie oder alternativ eine 'Vorrangstraße'-Geometrie an, zeigt also auf gänzlich unterschiedliche Elemente innerhalb der Blockdefinition. Wie soll jetzt eine Übertragung eines solchen Sichtbarkeitsparameters in eine andere, neue Blockdefinition (namens 'Öffnung') funktionieren um zwischen 'Tür'- und 'Fenster'-Darstellung zu schalten. In jeder Blockdefinition, auch wenn diese gleich aussehen sollten, sind andere Geometrieelemente enthalten, wie soll der Sichtbarkeitsparameter erkennen, zu welcher Geometrie dieser im neuen Block gehören sollte. Ich hoffe, dabei nichts falsch in der Aufgabenstellung verstanden zu haben. - alfred - ------------------ www.hollaus.at |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 17. Nov. 2009 22:01 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
hi, ich werf mal vico ein... ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." (www.uni-leipzig.de/~rotheh/elefant.htm) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 17. Nov. 2009 22:08 <-- editieren / zitieren -->
Hi, @Heiko: das setzt schon voraus, dass es in der Blockdefinition schon gleichnamige Sichtbarkeitsparameter gibt, ist dieses gegeben, dann kann ich die Blockreferenzen aber auch im ganz normalen Eigenschaftsfenster auf gleich stellen. Blöcke markieren, im Eigenschaftsfenster den Parameter einstellen. Habe ich die Anfrage doch falsch verstanden. - alfred - ------------------ www.hollaus.at |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 17. Nov. 2009 22:25 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hi Alfred, ja Du hast recht. EffectiveName oder mindestens gleichnamige Parameter sollten vorliegen... Beliebig von Block zu Block geht sicher nicht. naja... ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." (www.uni-leipzig.de/~rotheh/elefant.htm) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |