| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: block umbenennen (3257 mal gelesen)
|
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 08. Jun. 2008 16:15 <-- editieren / zitieren --> Unities abgeben:
hallo experten. ich bin ja wie gesagt momentan am beginn meiner lisplerei. also hab ich mir mal nen befehl gesucht, der blöcke umbenennt, den ich modifizieren will. da ja einige lips den block auflösen (was ich bein dynamik ja nicht will) will ich jetzt einfach den block anklicken, den namen angezeigt haben, damit ich weiß wie der heisst und dann den neuen namen eingeben können. ich kapier folgendes ja auch quasi/fast. nur ich komm nicht weite.r kann mir jemand eine anregung geben, wie ich vorgehen muss? (defun C:BLOCKNAME(/ blkname oldname newname)
((setq blkname (ssget) (command "_RENAME" "Block" (substr (getvar "blkname") 1 (- (strlen (getvar "blkname")))))) (tblobjname "BLOCK" oldname) ) vielen dank stolti
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 08. Jun. 2008 16:57 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 08. Jun. 2008 18:41 <-- editieren / zitieren --> Unities abgeben: Nur für stolti
Zitat: Original erstellt von stolti:
(defun C:BLOCKNAME(/ blkname oldname newname)
((setq blkname (ssget) (command "_RENAME" "Block" (substr (getvar "blkname") 1 (- (strlen (getvar "blkname")))))) (tblobjname "BLOCK" oldname) ) vielen dank stolti
Aua, aua ... (ssget) liefert einen Auswahlsatz .... (getvar "blkname") .. eine Systemvariable "blkname" gibts nicht usw. .. du hast irgendwelche Codezeilen zusammenkopiert ohne eine einzelne zu verstehen !
(setq OBJ(car(entsel))) .... läßt den Nutzer ein Objekt wählen (setq DATA(entget OBJ)) ... liest die beschreibende Datenliste aus (=(cdr(assoc 0 DATA)) "INSERT") .. prüft, ob eine Blockreferenz gewählt wurde (setq NAME(cdr(assoc 2 DATA))) .. liest den Blocknamen aus (nicht den Effektivnamen bei dyn. Blöcken) .. welchen du dann bei rename verwenden kannst (setq Newname NAME) (setq NR 0) (while(tblobjname "BLOCK" Newname) (setq NEWNAME(strcat NEWNAME (itoa (setq NR(1+ NR))))) ) -> Ermittelt einen neuen Blocknamen (setq OBJDATA(subst (cons 2 NEWNAME) (assoc 2 OBJDATA) OBJDATA)) -> tauscht den NAmen in der NAmensliste (entmod OBJDATA) -> modifiziert den Block (alles ungetestet und jetzt so hiereingeschrieben, kann sein, das noch ne Klammer fehlt, oder so, aber das Prinzip dürfe klarer sein ?! ) ------------------ - 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 |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 08. Jun. 2008 18:42 <-- editieren / zitieren --> Unities abgeben: Nur für stolti
Zitat: Original erstellt von stolti: es ist auch so, dass verschiedenen block umbenennungstools die man findet bei mir zumindest teilweise probleme haben dynamische blöcke umzubenennen....
..ja, weil sie den Blocknamen vom angeklicktem Insert abnehmen statt den Effektivnamen über ActiveX zu ermitteln.... aber fang an deiner Stelle etwas kleiner an ------------------ - 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 |
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 08. Jun. 2008 18:47 <-- editieren / zitieren --> Unities abgeben:
d.h. es ist unwahrscheinlich, dass ich das jetzt mit den funktionen, die du hier reingepostet hast hinkriege? (ja. genau. aua aua). aber das wär echt klasse, wenn sone blockumbenennung funktionieren würde. d.h. würdest du mir freundlicherweise assisten? genauso: eine blockdefinition kopieren. findet man auch nur mit explode und dann neu definiert. die müsste man dann ja quasi so aufbaun. block auswählen-bedit-bsaveas-name-bclose?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 08. Jun. 2008 20:56 <-- editieren / zitieren --> Unities abgeben: Nur für stolti
Zitat: Original erstellt von stolti: d.h. es ist unwahrscheinlich, dass ich das jetzt mit den funktionen, die du hier reingepostet hast hinkriege? (ja. genau. aua aua).
probier die obigen Sache einfach Schritt für Schritt in der Befehlszeile aus .. dann lernst du ach, was die Funktionen zurückgeben, welche Parameter sie erfordern usw. Zitat: Original erstellt von stolti:
aber das wär echt klasse, wenn sone blockumbenennung funktionieren würde. d.h. würdest du mir freundlicherweise assisten?
Dich auf den rechten Weg zu bringen, versuche ich, assistieren derart, das ich dir hier so eine Funktion reinstelle: Nein! Zitat: Original erstellt von stolti:
genauso: eine blockdefinition kopieren. findet man auch nur mit explode und dann neu definiert. die müsste man dann ja quasi so aufbaun. block auswählen-bedit-bsaveas-name-bclose?
Nein .. entweder eine Blockreferenzen exploden, alle dabei entstandenen Objekte einsammeln und einen neuen Block draus machen, oder : via ACtiveX einen neuen Block erzeugen mit der Methode copyobjects Kopien der Objekte dem neuen Block übereignen und evtl. der schon existierenden Bloreferenz die neue Blockdefinition zuweisen. Evtl. kann man das auch über eine Temporäre neue Zeichnung und hinundzurückkopieren der Blockdefinition mit zwischendurch umbenennen mache. Möglich ist sowas, aber kein Thema zum anfangen!! Wenn du unbedingt in rel. kurzer Zeit solche Tools brauchst, beauftrage diese! Blockumbenennen hatten wir ja hier schon mal... was paßt dir denn da 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 |
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz
|
erstellt am: 08. Jun. 2008 23:19 <-- editieren / zitieren --> Unities abgeben:
nein. das will ich gar nicht, dass du mir die hier reinstellst.... ich werd das jetzt alles mal ausprobieren. an der funktion "stört" mich eben, dass ich teilweise dynamische blöcke nicht umbenennen kann. ok. und das mit dem blockdefinition kopieren ist wohl auch sehr hoch. du weißt nicht, ob das zufällig schon irgendwo existiert (also, dass er mir den block nicht explodiert etc...). ich will nicht, dass du das reinstellst, ich hab gesucht und ncihts gefunden. vielleicht gibts da aber schon was, was ich nciht gefunden habe. danke. stolti Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |