Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  rename Image/Bildname

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
Autor Thema:  rename Image/Bildname (1416 mal gelesen)
steppe2000
Mitglied



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

Beiträge: 108
Registriert: 03.04.2006

windows 7 64bit
autodesk 2011 64bit
office 2010 32bit
ms-(sql) server 2008 R2

erstellt am: 15. Sep. 2015 15:31    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

hi an alle lispler und sonstigen Programmierer auf AutoCAD...

kann mir jemand sagen wie ich einem Image in AutoCAD via lisp... einen anderen Namen geben kann...
Ich kann zwar den Dateipfad ändern aber nicht den namen dazu?
bei XRefs geht es ja einfach ... aber leider nicht bei den Images, die werden nur im Dialog in AutoCAD gleich behandelt?!

bin um jede Hilfe froh!
DANKE und LG @all


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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 15. Sep. 2015 15:53    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 steppe2000 10 Unities + Antwort hilfreich

Antwort fällt etwas kurz aus, aber da ist alles drin:

(setq EL (entget (cdr(assoc 340 (entget(car(entsel "\n Bild wählen: ")))))))

Bild wählen: ((-1 . <Objektname: 7ff60020b200> ) (0 . "IMAGEDEF") (5 . "600") (102 . "{ACAD_REACTORS") (330 . <Objektname: 7ff60020b1e0> ) (330 . <Objektname: 7ff60020b210> ) (102 . "}") (330 . <Objektname: 7ff60020b1e0> ) (100 . "AcDbRasterImageDef") (90 . 0) (1 . "Z:\\1.JPG") (10 725.0 402.0 0.0) (11 0.264583 0.264583 0.0) (280 . 1) (281 . 5))

(entmod(subst '(1 . "Z:\\2.JPG")(assoc 1 EL)EL))

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

steppe2000
Mitglied



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

Beiträge: 108
Registriert: 03.04.2006

windows 7 64bit
autodesk 2011 64bit
office 2010 32bit
ms-(sql) server 2008 R2

erstellt am: 15. Sep. 2015 16:27    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

wenn ich das richtig sehe, dann wir hier der Dateipfad geändert...
ich suche aber die möglichkeit den Namen des Image zu ändern...

geht vermutlich auch anders aber bei referenzen mach ich's so:
(command "_-RENAME" "_BLOCK" NameAlt  NameNeu)

das bäuchte ich auch für Images???

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: 13508
Registriert: 30.11.2003

.

erstellt am: 15. Sep. 2015 16:51    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 steppe2000 10 Unities + Antwort hilfreich

dafür haste doch den Windowsexplorer  ... du mußt quasi die Bilddatei umbenennen und die umbenannte Datei in deiner DWG neu verknüpfen .....

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 15. Sep. 2015 16:59    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 steppe2000 10 Unities + Antwort hilfreich

Und falls weder ein anderes Bild referenziert werden soll,
noch der Name der Bilddatei geändert werden soll,
sondern der (Bild-)Referenzname => der Steht im Dictionary:

(setq DictList  (entget(namedobjdict)))
(setq ImageDict (entget(cdar(cdr(member '(3 . "ACAD_IMAGE_DICT") DictList)))))

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

steppe2000
Mitglied



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

Beiträge: 108
Registriert: 03.04.2006

windows 7 64bit
autodesk 2011 64bit
office 2010 32bit
ms-(sql) server 2008 R2

erstellt am: 15. Sep. 2015 18:05    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

ja genau das suche ich...
und wenn ich mich jetzt noch mal dumm anstellen darf...

und wie schaut das aus, wenn ich jetzt "einfach" alle Bilder in einer DWG durchnummerierren will... ohne sortierung zuvor... einfach 1, 2, 3,...

Bitte DANKE!!!!

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 15. Sep. 2015 21:35    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 steppe2000 10 Unities + Antwort hilfreich

Stellen darfst du, es Muß ja keiner antworten  

Du mußt eine geänderte Liste erstellen, dabei einen "Zähler" mitlaufen lassen der sich pro Referenzname - also im Fall einer nötigen Änderung eines Eintrages - erhöht und im Anschluß schreibst du das Objekt mit der geänderten Liste um.
Zähler setzen (setq n 0)
Liste durcharbeiten mit foreach, while, repeat oder mapcar
In der Schleife prüfen um was für einen Eintrag es sich handelt (if (= 1 (car item))
Wenn es zutrifft Zähler erhöhen und Eintrag ändern (cons 1 (rtos (setq n (1+ n)) 2 0))
ansonsten unverändert übernehmen
Wenn die Liste nun komplett und geändert ist, Objekt ändern mit (entmod neueListe)
Habe jetzt Gruppencode 1 geschrieben, falls das nicht richtig ist: Den richtigen ist siehst du ja aber selbst in der Entitylist.
------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

steppe2000
Mitglied



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

Beiträge: 108
Registriert: 03.04.2006

windows 7 64bit
autodesk 2011 64bit
office 2010 32bit
ms-(sql) server 2008 R2

erstellt am: 16. Sep. 2015 13:16    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

irgend wie komm ich beim Austauschen der Werte nicht zurecht...
wo liegt denn hier der Fehler...

Code:
(setq bildCount 0
sset_bilder (ssget "X" '((0 . "IMAGE")))
entlist_bild (entget (ssname sset_bilder 0)) ; IMAGE
entlist2_bild (entget (cdr (assoc 340 entlist_bild))) ; IMAGEDEF
entlist3_bild (entget (cdr (assoc 330 entlist2_bild))) ; DICTIONARY
entlist3x_bild (member (assoc 3 entlist3_bild) entlist3_bild) ; Bilderliste von DICTIONARY
)
(while (/= bildCount (length entlist3x_bild))
(setq nameAkt   (strcase (cdr (nth bildCount entlist3x_bild)))
nameNeu (strcat "BildNr_" (+ 1 bildCount))
)
(entmod (subst (3. nameNeu) (3. nameAkt) entlist3_bild))
(setq bildCount (1+ bildCount))
)


... das läuft nicht so wie ich will....
(entmod (subst (3. nameNeu) (3. nameAkt) entlist3_bild))  ?????

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 16. Sep. 2015 13:58    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 steppe2000 10 Unities + Antwort hilfreich

entlist3x_bild ist für gar nichts gut, eine unvollständige Entitylist.. weg damit, entlist3_bild ist die Liste mit der du arbeiten mußt.
entlist3x_bild sieht so aus: ((3 . "BildRefNameA") (350 . <Objektname: 7ff6006870f0> ) (3 . "BildRefNameB") (350 . <Objektname: 7ff600687120> ) (3 . "BildRefNameC") (350 . <Objektname: 7ff600687150> ))
Daher ist dein (length entlist3x_bild) für while nicht stimmig.

Fehler1:  auch wenn es nicht crashed: Du vergleichst Äpfel mit Birnen:  (ssget "X" '((0 . "IMAGE"))) liefert dir die Bildobjekte,
deren Anzahl hat nicht mit der Anzahl der BildReferenzen zutun.

An der Stelle sollte man noch mal überlegen ob Bilddatei,Referenzeintrag und Image-Objekte richtig unterschieden&verstanden wurden.
Ich kann 1 Bilddatei, 2xReferenzieren(mit unterschiedlichen Referenznamen), und jeweils 3x Anzeigen lassen (IMAGE Objekte, welches man mit ssget erfassen kann).
EDIT: Dann würdest du 6x eine Bilddatei sehen, welches 3x duch ReferenzA und 3x durch ReferenzB angezeigt wird.
Fehler2: In der while-Schleife möchtest du einen neuen String(nameneu) erstellen, dabei versuchst du 2 Strings miteinander zuverbinden, übergibst jedoch
einen String und einen Integer(Zahl), damit crashed "strcat", welches nur Strings erwartet. Wie man aus der Zahl einen String erhält habe ich bereits oben gezeigt.

Fehler3: im (entmod ...) rufst du, ohne es zu wollen, eine Funktion 3 auf, eine Funktion 3 wird es wohl nicht geben.. nächster Crash
(3 . irgendwas) sollte zu (cons 3 irgendwas umgeschrieben werden, so wird der Ausdruck ausgewertet und man erhält ein DottedPair wie gewünscht.)

Code:
(progn
(setq BildCount 0    
      BildRef_el-ALT (entget(cdar(cdr(member '(3 . "ACAD_IMAGE_DICT") (entget(namedobjdict))))))
)
(setq BildRef_el-NEU (mapcar '(lambda(dp)(if (= 3 (car dp))
                                             (cons 3 (strcat "BildNr_" (itoa (setq Bildcount (1+ Bildcount)))))
                                             dp
                                         )
                              )
                         BildRef_el-ALT
                     )
)
(entmod BildRef_el-NEU)
)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

steppe2000
Mitglied



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

Beiträge: 108
Registriert: 03.04.2006

windows 7 64bit
autodesk 2011 64bit
office 2010 32bit
ms-(sql) server 2008 R2

erstellt am: 17. Sep. 2015 11:14    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

Super vielen Dank für deine ausführliche Antwort...
jetzt geht's...

ich bin ja nicht wirklich ein Lisp'ler oder so... ich mach das immer mehr notgedrungen... und "klau" mir immer einzelne Bausteine von überall her... daher auch das mit den Apfeln und Birnen... Weil ich's nicht besser weiss 
Wo kann man diese Dinge über Entyties, Dictionary... usw.. wo steht was, wo findet man was... usw. nachlesen...
gibt es hier eine brauchbare Lektüre oder Doku?

DANKE noch mal für die Hilfe!!!

LG s.
   

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 17. Sep. 2015 11:36    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 steppe2000 10 Unities + Antwort hilfreich

". daher auch das mit den Apfeln und Birnen."
Bilddatei, Bildreferenzen und "IMAGE"Objekte(in der Eigenschaftenpalette=Pixelbild), das ist reines AutoCAD-Benutzer Wissen und hat zunächst erst mal nichts mit Programmierung zutun

"Wo kann man diese Dinge über Entyties, Dictionary... usw.. wo steht was, wo findet man was... usw. nachlesen...
gibt es hier eine brauchbare Lektüre oder Doku?"

Die Frage liest sich einfacher wie die Antwort fällt. Es gibt zu so ziemlich allem eine Beschreibung,
das Problem ist dabei: Dem Lernwilligen fehlt einfach die (oft) die Grundlage es zu verstehen.

Eine Anleitung zu einzelnen Dingen von 0 bis Ende gibt es nicht(man würde auf die Art und Weise ja unzählige Wiederholungen niederschreiben müssen).
Daher findet man in der Hilfe zu IMAGE wunderbare Infos(DXF Aufbau als Grundlage), es hätte dir aber nicht sofort den AHA-Effekt gegeben.

Am schönsten ist aber das selbst (zurecht) finden, dann sitzt das Wissen auch wirklich  

Lerne DXF-Aufbau (wenn man sich zunächst mit oldschool AutoLisp beschäftigt), die DXF-Referenz gibt es von AutoDesk direkt als PDF oder in deiner Hilfe F1.
Und das wirkliche lesen eine DXF-Datei im Texteditor bringt den Rest. Man muß nicht alles verstehen, aber der groben Aufbau insgesamt und von einzelnen Objekten sollte schon drin sein.
Für den leichten (AutoLisp)Einstieg immer wieder gerne genommen: http://www.tutorial.autolisp.info/
<arbeite jede einzelne Sache selbst durch und gehe erst weiter wenn du es verstanden hast.>

Und für die AutoLisp-Funktionen würde ich noch die deutsche LispR14 Doku dazu nehmen(ab und an fällt englisch nicht leicht).


------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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)2023 CAD.de | Impressum | Datenschutz