Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Umbenennen von Blöcken!

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
Autor Thema:  Umbenennen von Blöcken! (2649 mal gelesen)
vision
Mitglied



Sehen Sie sich das Profil von vision an!   Senden Sie eine Private Message an vision  Schreiben Sie einen Gästebucheintrag für vision

Beiträge: 113
Registriert: 27.10.2003

AutoCAD 2015
Expresstools
Windows 10

erstellt am: 14. Mai. 2004 11:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich muss Blöcke vor dem Einfügen in einer anderen Zeichnung umbennen. (Die Blocknamen von ganz unterschiedlichen Blöcken könnten evtl. mit denen in der neuen Zeichnung gleich sein!)

Das untere Lisp BLOCK-RENAME von Th.Krüger konnte ich soweit anpassen, dass es mit einem Block klappt. Bei mehren Blöcken kommt aber die Fehlermeldung: "Automatisierungsfehler Doppelter Datensatzname"

Wer kann Helfen? 


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13527
Registriert: 30.11.2003

.

erstellt am: 14. Mai. 2004 11:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

ruf mal
(progn
(princ(strcat "\n"(rtos (* (getvar "cdate") 100000000) 2 0)))
(princ(strcat "\n"(rtos (* (getvar "cdate") 100000000) 2 0)))
)
auf .. und ? .. der Rechner zu schnell und liefert 2x das gleiche ?
wenn ja, dann füge mal vor vor jedem umbenennen sowas ein
(repeat 100000 nil)

------------------
- Thomas -

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

vision
Mitglied



Sehen Sie sich das Profil von vision an!   Senden Sie eine Private Message an vision  Schreiben Sie einen Gästebucheintrag für vision

Beiträge: 113
Registriert: 27.10.2003

AutoCAD 2015
Expresstools
Windows 10

erstellt am: 14. Mai. 2004 11:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

mit (repeat 100000 nil) funktioniert es jetzt!

Vielen Dank.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2494
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 14. Mai. 2004 21:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

Hi,
@cadmium was 'n das für'n fauler Workaround?
Bau 'mal 'ne vernünftige Waitstate-Function!
;-)

------------------
Ciao,
Marc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mapcar
Mitglied
CADmin



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 14. Mai. 2004 23:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

Also das finde ich auch!

(repeat 10000 nil) ... Aufpassen, sonst erscheinen Berichte, dass hier unschuldige nils gefoltert werden. Überhaupt, wo bleibt denn da der volkswirtschaftliche und sittliche Nutzen? Kann man da nicht ein paar SETI-Blöcke zwischendurch rechnen, oder schon mal nen Probelauf für das kommende Email-Porto?

Aber da wird's ja so laufen wie mit den CO2-Emissionshandel: Da kann man dann wieder die Überhänge (oder muss das jetzt Unterhänge heißen?) verkümmeln. Wer ein (repeat 10000 nil) in seinem AutoLisp-Programm laufen lässt, darf dafür ein bisschen Spam verschicken;-)

Ein ganz heisser Tipp: Zwei, drei Bögen mit TAN-Nummern fürs Online-Banking abtippen (oder einscannen) und als Blocknamen verwenden. Echt, da hat man die Garantie, dass man innerhalb von fünf Jahren keine doppelt kriegt! Ist doch auch völlig unökologisch, dass die gleich nach einmaliger Verwendung weggeworfen werden! Eigentlich gehört da Pfand drauf - ich werd's dem Trittin mal vorschlagen.

Aber vielleicht sollte man in dem Programm auch einen Zufallszahlengenerator verwenden, der einmal ein SEED erzeugt, also einmal CDATE ausliest, und dann weitere Zahlen daraus generiert. Ich kann meinen hier leider nicht ohne weiteres posten, da er zu tief in meine Bibliotheken verstrickt ist - sorry, zu mühsam jetzt, alles da rauszuklauben. Aber gebrauchte TAN-Nummer habe ich noch - soll ich sie mal einscannen?

Gruß, Axel

------------------
   
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

[Diese Nachricht wurde von mapcar am 14. Mai. 2004 editiert.]

[Diese Nachricht wurde von mapcar am 14. Mai. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13527
Registriert: 30.11.2003

.

erstellt am: 15. Mai. 2004 09:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

... Kritik ist ja berechtigt. Und auch ein cdate-vergleich bis eine entsprechende differenz auftritt ist möglich, aber letztendlich ist es doch egal, mit was ich den Prozessor beschäftige, oder ? .. und (repeat 10000 nil) .. passt in eine kurze Zeile 

@Axel.. oder kennst du eine Möglichkeit, mit Lisp einen Windows-Task für eine bestimmte Zeit zu stoppen, so daß sich der Rechner anderen (meist nicht vorhandenen Aufgaben) zuwenden kann ? - das wäre ökonomisch !

Und Zufallszahlen .. die auch nur von cdate abhängen? Als Funktion , die auf cdate zurückgreift und eine Zahl zurückliefert macht keinen Sinn, also muß ich eine Liste von Zufallszahlen erzeugen erzeugen (würde im obigen Fall Sinn machen )oder global die letzte Zufallszahl speichern als Basis für die Berechnung der nächsten. @Axel Oder was für ein allgorithmus nutz du?
.. und außerdem hab ich ja nicht mehr die "absoluten" Blocknamen... sondern welche, die sich, auch wenn statistisch unwahrscheinlich , wiederholen können..

Also was solls, das Problem ist gelöst, und darauf kam es doch vor allem an, oder ?

------------------
  - Thomas -

[Diese Nachricht wurde von CADmium am 15. Mai. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2494
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 15. Mai. 2004 11:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

<Jubel>riesigen Anlauf nehm und in Siegerpose auf den Knien über den Boden rutsch</jubel>Jaaaah, mapcar ist mal meiner Meinung!! <feier>mach eine Champus-Flasche nach der anderen auf</feier>
..

------------------
Ciao,
Marc

[Diese Nachricht wurde von marc.scherer am 15. Mai. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 15. Mai. 2004 14:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von mapcar:
Aber vielleicht sollte man in dem Programm auch einen Zufallszahlengenerator verwenden, der [b]einmal ein SEED erzeugt, also einmal CDATE ausliest, und dann weitere Zahlen daraus generiert. [/B]

Bei einem Würfel kommt bei über 6maligem Würfel eine Zahl mindestens doppelt vor, und die Wahrscheinlichkeit, dass das schon bei zwei Würfen passiert, ist auch nicht gering. Zufallszahlen sind zufällig, aber nicht unitär.

Dabei geht es doch ganz einfach: vor dem Umbenennen prüfen, ob der zufällige Name schon existiert, und wenn er schon existiert, solange (z.B. auch wieder über CDATE) einen neuen Namen kreieren, bis dieser unitär ist.

Gruß
Tom Berger

------------------
Architekturwerkzeuge für AutoCAD: http://www.archtools.de


Ex-Mitglied

erstellt am: 15. Mai. 2004 14:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von CADmium:
[BAlso was solls, das Problem ist gelöst, und darauf kam es doch vor allem an, oder ?
[/B]

In in zwei Jahren hat der Fragesteller einen neuen schnelleren Rechner und wundert sich dann hier, warum sein Programm nicht mehr läuft :-) Das Problem ist nicht gelöst, sondern nur in die Zukunft verlagert.

Gruß
Tom Berger

------------------
Architekturwerkzeuge für AutoCAD: http://www.archtools.de

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13527
Registriert: 30.11.2003

.

erstellt am: 15. Mai. 2004 17:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

und warum muß ich jetzt bei den ganzen "Besserwissern" noch was posten? ....

Also ersetze "zukunftssicher" die Zeile
  (setq NeuerName (strcat "WB" (rtos (* (getvar "cdate") 100000000) 2 0))) 

durch

(While(or(not NeuerName)
            (tblsearch "BLOCK" Neuername)
          ) 
  (setq NeuerName (strcat "WB" (rtos (* (getvar "cdate") 100000000) 2 0))) 
)

und alle sind zufrieden.  Oder nicht?

------------------
- Thomas -

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 15. Mai. 2004 17:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von CADmium:
und warum muß ich jetzt bei den ganzen "Besserwissern" noch was posten? ....

Also ersetze "zukunftssicher" die Zeile
  (setq NeuerName (strcat "WB" (rtos (* (getvar "cdate") 100000000) 2 0))) 

durch

(While(or(not NeuerName)
             (tblsearch "BLOCK" Neuername)
          ) 
  (setq NeuerName (strcat "WB" (rtos (* (getvar "cdate") 100000000) 2 0)))  
)

und alle sind zufrieden.  Oder nicht?


Na, wir wollen doch alle was lernen :-) Und wir Besserwisser woleln in Wirklichkeit doch alle nur geliebt werden :-))

In Deinem Code ist beispielsweise die Multiplikation völlig überflüssig. (rtos (getvar "cdate") 2 20) tut's ganz genau so gut. Und schon wieder haben wir Rechenzeit gespart.

Gruß
Tom Berger

------------------
Architekturwerkzeuge für AutoCAD: http://www.archtools.de

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13527
Registriert: 30.11.2003

.

erstellt am: 15. Mai. 2004 21:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von tom.berger:
  (rtos (getvar "cdate") 2 20) tut's ganz genau so gut...

Schon, aber
1. ist das nicht "mein Code" (ich wandel bei mir das cdate-Ergebnis noch in eine Zeichenkette auf Basis 36)  
2. finde ich persönlich den Punkt im Dateinamen doof  
3. (getvar "date") ist noch schneller als (getvar "cdate") 
4. ist der Thread jetzt genug aufgelasen  
---> sonst siehe Hier

Ach so : und dann noch ein    an alle Besserwisser

------------------
  - Thomas -

[Diese Nachricht wurde von CADmium am 15. Mai. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HBo
Ehrenmitglied
Maschinenbaukonstrukteur


Sehen Sie sich das Profil von HBo an!   Senden Sie eine Private Message an HBo  Schreiben Sie einen Gästebucheintrag für HBo

Beiträge: 1563
Registriert: 31.12.2001

erstellt am: 22. Mai. 2004 18:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

ich finde, den Blocknamen mit Datums-oder Zufallszahlen zu ergänzen
genauso phantasielos, wie das was manche CAD-User machen
wenn sie Blocknamen festlegen:
Sie ziehen dann den Daumen einmal quer über die Tastatur.

Ich habe mir für diese Fälle den Blocknamen verändern zu müssen,
ein LISP gemacht, mit dem ich alle Blöcke
in einer Zeichnung mit einer einzutippenden "Vorsilbe" ergänze.
Dieser Zusatz wird dann so gewählt, daß er mir dann auch gleich einen Hinweis auf die Ursprungszeichnung gibt.
Natürlich gibt es auch das LISP-Gegenstück, mit dem diese Zusätze wieder gezielt entfernt werden können.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mapcar
Mitglied
CADmin



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 24. Mai. 2004 10:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für vision 10 Unities + Antwort hilfreich

Etwas spät, die Antwort, aber ich war eine Woche weg vom Fenster;-)

Mein Beitrag hier sollte keine herbe Kritik sein, sondern mehr zum Amüsement beitragen... Jedenfalls stimme ich Tom zu (und darum gings mir ja auch), dass eine Rechenzeitverbrauchschleifenkonstruktion (schönes Wort, wa?) das Problem nur verlagert. Das ist wie eines dieser alten Spiele auf einem neuen Rechner: Man tippt die Cursortaste nur ganz leicht an, und trotzdem rennt das Männeken wie besessen los und semmelt vor die gegenüberliegende Wand... Ein Patch bring dann auch nur Abhilfe bis zum nächsten Prozessor-Upgrade.

Zufallszahlen halte ich nach wie vor für das Mittel der Wahl (oder Durchnummerieren). In fast allen Programmiersprachen gibt es eine SEED-Funktion, die eine erste Zahl aus der Uhrzeit generiert, und weitere Funktion RANDOM, die dann aus der jeweils letzten Zahl eine weitere generiert. Natürlich können da Duplikate auftreten - ist ja meisten sogar gewollt. In diesem Fall muss man allerdings die Duplikate rausfiltern, was auch kein Problem sein sollte. Dass aber SEED mehrmals in einem Programm aufgerufen wird, ist eher als falsche Handhabung der Geschichte zu werten. In manchen Sprachen gibt es deshalb auch nur die RANDOM-Funktion, währen SEED beim ersten mal intern aufgerufen wird, aber dem Programmierer gar nicht direkt zugänglich ist.

Wenn man schon praktisch denkt und sich gar nicht mit viel Theorie befassen will, dann würde ich einen ganz anderen Weg vorschlagen: Den Block beim Erzeugen "TMP" nennen, anschließend den Handle auslesen und dem Block dann seinen endgültigen Namen geben, der den Handle enthält. Damit ist man absolut sicher vor Duplikaten, hat also eindeutige Namen, und man verbrät keine Rechenzeit in Leerschleifen.

Gruß, Axel


------------------

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz