Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch::

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Attribute in Blöcke ändern

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
Autor Thema:   Attribute in Blöcke ändern (1731 mal gelesen)
PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 14: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
Hallo,

ich habe hier ca. 100 Dateien in denen nachträglich
in den Blöcken der Zeichnungsköpfe das Datum geändert
werden muss.
Das Datum ist in dem einzelnen Block ein Attribut.

Um nicht jede Datei öffnen zu müssen - besteht die
Möglichkeit, das mit einem kleinen Programm zu tun ?

Grüße, Andreas

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 21. Okt. 2010 14: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 Nur für PlotExner 10 Unities + Antwort hilfreich
ich verweis mal auf den Befehl SCRIPT und ein kleines Lisp.
Evtl läßt sich auch was mit DATENEXTRAKTION / attout / attin machen.

------------------
  - 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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 14:30    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
Und woher bekomme ich so ein LISP ?

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 383
Registriert: 06.11.2008

Autocad 2 bis Autocad 2014 (+Map3D, +Civil3D)
von Netbook bis großer Standrechner

erstellt am: 21. Okt. 2010 14:44    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 PlotExner 10 Unities + Antwort hilfreich
es geht auch hone Lisp
Das Attribut ändern kannst Du mit AttEdit
ist Commandline das baust in ein Script ein

Dann kannst eine Batch machen die Autocad mit jeder Datei einmal startet und dieses Script macht

------------------
www.hollaus.at                     www.cars4fun.at

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 14:56    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
Oje... dafür bin ich zu sehr Laie... kannst du mir so eine Batch basteln ?

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 383
Registriert: 06.11.2008

Autocad 2 bis Autocad 2014 (+Map3D, +Civil3D)
von Netbook bis großer Standrechner

erstellt am: 21. Okt. 2010 15: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 PlotExner 10 Unities + Antwort hilfreich
sollte in etwas so aussehen

For %%i in (pfad\*.dwg) do Acad.exe %%i /s datum.scr

UM es exakt an Deine Anforderungen abzustimmen sollte man bei Dir vor Ort sein oder mindestens per Fernwartung machen

------------------
www.hollaus.at                     www.cars4fun.at

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 15: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
Und wenn du mir erklärst, was
%%i
/s
.scr

bedeutet ?

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

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


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

Beiträge: 383
Registriert: 06.11.2008

Autocad 2 bis Autocad 2014 (+Map3D, +Civil3D)
von Netbook bis großer Standrechner

erstellt am: 21. Okt. 2010 15:06    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 PlotExner 10 Unities + Antwort hilfreich
%%i ist eine Variable in einer Batchdatei
/s ist der Parameter damit die Script gestart wird
.scr ist die Dateierweiterung einer Scriptdatei

------------------
www.hollaus.at                     www.cars4fun.at

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 15:07    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
Ich seh schon.... muss wohl wirklich jede Datei öffnen...

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

Andreas Kraus
Mitglied
Konstrukteur Elektro


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

Beiträge: 804
Registriert: 11.01.2006

WinXP SP2
WIN 7 pro
ACAD 2014

erstellt am: 21. Okt. 2010 16: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 PlotExner 10 Unities + Antwort hilfreich
Mußt du nicht 
So was ähnliches brauch ich auch.
Bin grade beim Zusammenbasteln, wenn ichs fertig hab stell ichs hier rein. Ob ichs aber heute noch schaff wis ich nicht, morgen isses sicher fertig.

Ach ja - was wird das überhaupt ?

Blockname, Attributname und alter Attributinhalt (Wildcards wie * gehn natürlich auch) angeben.
Funktion ändert ab Startverzeichniss in ALLEN Dwgs in ALLEN Unterverzeichnissen (es können auch Verzeichnisse ausgelassen werden, wär ja blöd z.B. in alten Planständen Änderungen zu machen dann wär ja die ganze Dokumentation fürn Eimer)

Brauch ich wenn sich bei mir im Projekt z.B. Leuchtentypen ändern aber der Funktion ist ja egal was das für ein Block ist.

------------------
Gruß
Andreas

http://kraus-cad.de

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 17:57    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
Echt ? Klasse !! Das wär super wenn das funktionieren würde. Bin gespannt

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

Andreas Kraus
Mitglied
Konstrukteur Elektro


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

Beiträge: 804
Registriert: 11.01.2006

WinXP SP2
WIN 7 pro
ACAD 2014

erstellt am: 21. Okt. 2010 19: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 PlotExner 10 Unities + Antwort hilfreich

k_attchg_tree.zip


k_attchg_tree-vlx.zip

 
Sollte funktionieren (wenn ich keinen Programmteil vergessen hab) bei mir hats das jedenfalls wenn die Testphase auch ziemlich kurz war  

Da noch nicht alle möglichen Fehler vom Programm abgefangen werden, bitte folgendes beachten:
- Alle Dateien im Pfad MÜSSEN geschlossen und nicht schreibgeschützt sein.
- Wenn irgendwas nicht geht würde ich gerne bescheid wissen damit ich daran arbeiten kann.
- Wenn alles funktioniert würde ich auch gerne bescheid wissen damit ich mich freuen kann.

------------------
Gruß
Andreas
http://kraus-cad.de

[Diese Nachricht wurde von Andreas Kraus am 21. Okt. 2010 editiert.]

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 20:00    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
So, habs gleich probiert:

Als Meldung kam:

"D:\\tmp\\test-datum\\Test-Datei1.dwg" ; Fehler: no function
definition: VLA-GET-EFFECTIVENAME

Kannst du damit was anfangen ?

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

Andreas Kraus
Mitglied
Konstrukteur Elektro


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

Beiträge: 804
Registriert: 11.01.2006

WinXP SP2
WIN 7 pro
ACAD 2014

erstellt am: 21. Okt. 2010 20:07    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 PlotExner 10 Unities + Antwort hilfreich
Klar kann ich das !!

Das ist zu dämlich - das passiert mir doch immer wieder
(vl-load-com)
vergessen.

Ich habs in meinen Upload korrigiert bitte nochmal neu downloaden.

------------------
Gruß
Andreas

http://kraus-cad.de

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 20: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
Upload ?

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

Andreas Kraus
Mitglied
Konstrukteur Elektro


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

Beiträge: 804
Registriert: 11.01.2006

WinXP SP2
WIN 7 pro
ACAD 2014

erstellt am: 21. Okt. 2010 20:30    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 PlotExner 10 Unities + Antwort hilfreich
Na die ZIP-Files aus meinem vorherigem Beitrag. Die hab ich korrigiert, also nochmal runterladen.

------------------
Gruß
Andreas

http://kraus-cad.de

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 20:37    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
Habs nochmal heruntergeladen, aber gleiches Ergebnis...

Vielleicht mach ich was falsch ?

Extras\Anwendung\laden\Datei wählen
und dann in der Eingabezeile "k_attchg_tree"

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

Andreas Kraus
Mitglied
Konstrukteur Elektro


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

Beiträge: 804
Registriert: 11.01.2006

WinXP SP2
WIN 7 pro
ACAD 2014

erstellt am: 21. Okt. 2010 20: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 PlotExner 10 Unities + Antwort hilfreich
Nee, das machst du schon richtig aber in 2005 gibts noch keine dynamischen Blöcke (ich muß lernen die SysInfo zu lesen   ).
Also machen wir das eben ohne.

Bitte alles kopieren und in ein LISP-File fummeln.

(vl-load-com)
(defun mk_tree (pfad verz_nicht / DIR NEU_PFAD_LIST PFAD PFAD_LIST)

  (defun mk_tree_work (pfad_list)
    (if (setq neu_pfad_list
      (apply
'append
(mapcar '(lambda (pfad)
    (mapcar '(lambda (dir)
      (print (strcat pfad dir "\\"))
      (strcat pfad dir "\\")
    )
    (vl-remove-if
      '(lambda (dir) (member dir verz_nicht))
      (vl-directory-files pfad nil -1)
    )
    )
  )
pfad_list
)
      )
)
      (append pfad_list (mk_tree_work neu_pfad_list))
    )
  )

  (setq pfad_list (list pfad))
  (setq verz_nicht (append verz_nicht (list "." "..")))
  (cons pfad (mk_tree_work pfad_list))
)

(defun mk_tree_files (pfad     verz_nicht   filter
      /     alle_pfad_list
      startpfad_list   verz_list
      dummy_list    pfade
    )
  (apply
    'append
    (vl-remove 'nil
      (mapcar '(lambda (pfad)
  (mapcar '(lambda (file) (strcat pfad file))
  (vl-directory-files pfad filter 0)
  )
)
      (mk_tree pfad verz_nicht)
      )
    )
  )
)

(defun ext_folder (str start / folder obj_shell)
  (setq obj_shell (vlax-get-or-create-object "shell.application"))
  (if (setq
folder (vlax-invoke obj_shell "BrowseForFolder" 0 str 1 start)
      )
    (setq folder (vlax-get (vlax-get folder "Self") "Path"))
  )
  (vlax-release-object obj_shell)
  folder
)

(defun k_odbx-open (pfad funktion / rückgabe wert)
;;;  Beispiel -------------------------------------
;;;  (setq
;;;    blk_def_list
;;;    (k_odbx-open
;;;      dateiname
;;;      '(lambda (dbx_interface / blk_data)
;;;   (vlax-for block (vla-get-blocks dbx_interface)
;;;     (setq blk_data (list (vla-get-name block)))
;;;   )
;;;   blk_data
;;; )
;;;    )
;;;  )
  (vla-open
    (setq dbx_interface (k_get_interface_object))
    pfad
  )
  (setq rückgabe ((eval funktion) dbx_interface))
  (vlax-release-object dbx_interface)
  rückgabe
)

(defun k_get_interface_object ()
  (vl-catch-all-apply
    'vla-getinterfaceobject
    (append
      (list (vlax-get-acad-object))
      (vl-remove-if-not
'(lambda (eintrag)
  (wcmatch eintrag
    (strcat "*" (itoa (atoi (getvar "acadver"))) "*")
  )
)
(vl-remove-if
  'not
  (mapcar
    (function
      (lambda (version)
(if
  (findfile
    (vl-registry-read
      (strcat
"HKEY_CLASSES_ROOT\\CLSID\\"
(vl-registry-read
  (strcat "HKEY_CLASSES_ROOT\\"
  version
  "\\CLSID"
  )
)
"\\InProcServer32"
      )
    ) ;prüft, welche dll-Datei für die ObjectDBX-Version registriert ist, ->
  ) ;wenn file in den Supportpfaden, dann isses gut
  version
  nil
)
      )
    )
    (vl-remove-if-not
      '(lambda (VARIABLE)
(wcmatch VARIABLE "ObjectDBX.AxDbDocument.*")
      )
      (vl-registry-descendents "HKEY_CLASSES_ROOT")
    ) ;Rückgabe: Liste aller registrierten ObjectDBX-Versionen
  )
) ;Liste mit einer gültigen Version als Text
      )
    )
  ) ;Rückgabewert ist VLA-Object der aktuellen DBX-Variante
)

;;; ##################################################################################################

(defun c:k_attchg_tree (/     ATTINH   ATTNAME
BLK_DEF_LIST BLOCKNAME   DATEINAME
FILES_LIST  NEUTEXT
      )

;;; ab einem Startverzeichniss in ALLEN DWGs ALLE Attributinhalte ALLER Blöcke ändern die zu den Filterkriterien passen
;;; zulässige Filter siehe unter wcmatch in der Entwickler-Dokumentation (Lisp-Hilfe)

  (setq blockname (getstring "Blockname : "))
  (setq attname (getstring "Attributname : "))
  (setq attinh (getstring "alter Attributinhalt : "))
  (setq neutext (getstring "neuer Attributinhalt : "))

  (setq files_list
(mk_tree_files
  (strcat (ext_folder "Startpfad" nil) "\\")
  nil
  "*.dwg"
)
  )

  (mapcar '(lambda (dateiname)
    (print dateiname)
    (setq
      blk_def_list
(k_odbx-open
  dateiname
  '(lambda (dbx_interface / blk_data)
;;; alle Blöcke (Layouts) bearbeiten
    (vlax-for block (vla-get-blocks dbx_interface)
;;; wenn Layout, dann Objekte durchlaufen
      (if (= (vla-get-IsLayout block) :vlax-true)
(vlax-for obj_name block
;;; wenn Block
  (if (= (vla-get-ObjectName obj_name)
  "AcDbBlockReference"
      )
;;; wenn Blockname passt und Attribute vorhanden
    (if
      (and
(wcmatch (vla-get-Name obj_name)
  blockname
)
(= (vla-get-HasAttributes obj_name) :vlax-true)
(not (minusp
(vlax-safearray-get-u-bound
  (vlax-variant-value
    (vla-getattributes obj_name)
  )
  1
)
      )
)
      )
;;; Attributdaten bearbeiten
(mapcar
  '(lambda (data)
    (vla-put-textstring (nth 0 data) neutext)
  )
  (vl-remove-if-not
    '(lambda (data)
      (and (wcmatch (nth 1 data) attname)
    (wcmatch (nth 2 data) attinh)
      )
    )
    (mapcar '(lambda (obj)
      (list obj
    (vla-get-tagstring obj)
    (vla-get-textstring obj)
      )
    )
    (vlax-safearray->list
      (vlax-variant-value
(vla-getattributes obj_name)
      )
    )
    )
  )
)
    )
  )
  att_list
)
      )
    )
    (vla-saveas dbx_interface dateiname)
  )
)
    )
  )
  files_list
  )
  (princ)
)

------------------
Gruß
Andreas
http://kraus-cad.de

[Diese Nachricht wurde von Andreas Kraus am 21. Okt. 2010 editiert.]

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 21. Okt. 2010 21:00    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
Und wie geht das, in ein LISP-File fummeln ?
Hab hier auch eine Probe-Version von MEP, damit gings !!!! Suuuuuper !!!!!!

Jetzt hab ich nur noch ein Problem:
In jeder Daei sind 2 Blöcke, nur der eine hat
einen ein Leerzeichen im Namen - da gehts nicht....

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

Andreas Kraus
Mitglied
Konstrukteur Elektro


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

Beiträge: 804
Registriert: 11.01.2006

WinXP SP2
WIN 7 pro
ACAD 2014

erstellt am: 21. Okt. 2010 21:15    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 PlotExner 10 Unities + Antwort hilfreich
Zitat:
Und wie geht das, in ein LISP-File fummeln ?

Windows-Editor öffnen
alles reinkopieren
unter k_attchg_tree.lsp speichern

Leerzeichen ... gute Idee daran zu denken 
Also nochmal mit Korrektur:

(vl-load-com)
(defun mk_tree (pfad verz_nicht / DIR NEU_PFAD_LIST PFAD PFAD_LIST)

  (defun mk_tree_work (pfad_list)
    (if (setq neu_pfad_list
      (apply
'append
(mapcar '(lambda (pfad)
    (mapcar '(lambda (dir)
      (print (strcat pfad dir "\\"))
      (strcat pfad dir "\\")
    )
    (vl-remove-if
      '(lambda (dir) (member dir verz_nicht))
      (vl-directory-files pfad nil -1)
    )
    )
  )
pfad_list
)
      )
)
      (append pfad_list (mk_tree_work neu_pfad_list))
    )
  )

  (setq pfad_list (list pfad))
  (setq verz_nicht (append verz_nicht (list "." "..")))
  (cons pfad (mk_tree_work pfad_list))
)

(defun mk_tree_files (pfad     verz_nicht   filter
      /     alle_pfad_list
      startpfad_list   verz_list
      dummy_list    pfade
    )
  (apply
    'append
    (vl-remove 'nil
      (mapcar '(lambda (pfad)
  (mapcar '(lambda (file) (strcat pfad file))
  (vl-directory-files pfad filter 0)
  )
)
      (mk_tree pfad verz_nicht)
      )
    )
  )
)

(defun ext_folder (str start / folder obj_shell)
  (setq obj_shell (vlax-get-or-create-object "shell.application"))
  (if (setq
folder (vlax-invoke obj_shell "BrowseForFolder" 0 str 1 start)
      )
    (setq folder (vlax-get (vlax-get folder "Self") "Path"))
  )
  (vlax-release-object obj_shell)
  folder
)

(defun k_odbx-open (pfad funktion / rückgabe wert)
;;;  Beispiel -------------------------------------
;;;  (setq
;;;    blk_def_list
;;;    (k_odbx-open
;;;      dateiname
;;;      '(lambda (dbx_interface / blk_data)
;;;   (vlax-for block (vla-get-blocks dbx_interface)
;;;     (setq blk_data (list (vla-get-name block)))
;;;   )
;;;   blk_data
;;; )
;;;    )
;;;  )
  (vla-open
    (setq dbx_interface (k_get_interface_object))
    pfad
  )
  (setq rückgabe ((eval funktion) dbx_interface))
  (vlax-release-object dbx_interface)
  rückgabe
)

(defun k_get_interface_object ()
  (vl-catch-all-apply
    'vla-getinterfaceobject
    (append
      (list (vlax-get-acad-object))
      (vl-remove-if-not
'(lambda (eintrag)
  (wcmatch eintrag
    (strcat "*" (itoa (atoi (getvar "acadver"))) "*")
  )
)
(vl-remove-if
  'not
  (mapcar
    (function
      (lambda (version)
(if
  (findfile
    (vl-registry-read
      (strcat
"HKEY_CLASSES_ROOT\\CLSID\\"
(vl-registry-read
  (strcat "HKEY_CLASSES_ROOT\\"
  version
  "\\CLSID"
  )
)
"\\InProcServer32"
      )
    ) ;prüft, welche dll-Datei für die ObjectDBX-Version registriert ist, ->
  ) ;wenn file in den Supportpfaden, dann isses gut
  version
  nil
)
      )
    )
    (vl-remove-if-not
      '(lambda (VARIABLE)
(wcmatch VARIABLE "ObjectDBX.AxDbDocument.*")
      )
      (vl-registry-descendents "HKEY_CLASSES_ROOT")
    ) ;Rückgabe: Liste aller registrierten ObjectDBX-Versionen
  )
) ;Liste mit einer gültigen Version als Text
      )
    )
  ) ;Rückgabewert ist VLA-Object der aktuellen DBX-Variante
)

;;; ##################################################################################################

(defun c:k_attchg_tree (/     ATTINH   ATTNAME
BLK_DEF_LIST BLOCKNAME   DATEINAME
FILES_LIST  NEUTEXT
      )

;;; ab einem Startverzeichniss in ALLEN DWGs ALLE Attributinhalte ALLER Blöcke ändern die zu den Filterkriterien passen
;;; zulässige Filter siehe unter wcmatch in der Entwickler-Dokumentation (Lisp-Hilfe)

  (setq blockname (getstring t "Blockname : "))
  (setq attname (getstring t "Attributname : "))
  (setq attinh (getstring t "alter Attributinhalt : "))
  (setq neutext (getstring t "neuer Attributinhalt : "))

  (setq files_list
(mk_tree_files
  (strcat (ext_folder "Startpfad" nil) "\\")
  nil
  "*.dwg"
)
  )

  (mapcar '(lambda (dateiname)
    (print dateiname)
    (setq
      blk_def_list
(k_odbx-open
  dateiname
  '(lambda (dbx_interface / blk_data)
;;; alle Blöcke (Layouts) bearbeiten
    (vlax-for block (vla-get-blocks dbx_interface)
;;; wenn Layout, dann Objekte durchlaufen
      (if (= (vla-get-IsLayout block) :vlax-true)
(vlax-for obj_name block
;;; wenn Block
  (if (= (vla-get-ObjectName obj_name)
  "AcDbBlockReference"
      )
;;; wenn Blockname passt und Attribute vorhanden
    (if
      (and
(wcmatch (vla-get-Name obj_name)
  blockname
)
(= (vla-get-HasAttributes obj_name) :vlax-true)
(not (minusp
(vlax-safearray-get-u-bound
  (vlax-variant-value
    (vla-getattributes obj_name)
  )
  1
)
      )
)
      )
;;; Attributdaten bearbeiten
(mapcar
  '(lambda (data)
    (vla-put-textstring (nth 0 data) neutext)
  )
  (vl-remove-if-not
    '(lambda (data)
      (and (wcmatch (nth 1 data) attname)
    (wcmatch (nth 2 data) attinh)
      )
    )
    (mapcar '(lambda (obj)
      (list obj
    (vla-get-tagstring obj)
    (vla-get-textstring obj)
      )
    )
    (vlax-safearray->list
      (vlax-variant-value
(vla-getattributes obj_name)
      )
    )
    )
  )
)
    )
  )
  att_list
)
      )
    )
    (vla-saveas dbx_interface dateiname)
  )
)
    )
  )
  files_list
  )
  (princ)
)

------------------
Gruß
Andreas

http://kraus-cad.de

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

Andreas Kraus
Mitglied
Konstrukteur Elektro


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

Beiträge: 804
Registriert: 11.01.2006

WinXP SP2
WIN 7 pro
ACAD 2014

erstellt am: 23. Okt. 2010 13:47    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 PlotExner 10 Unities + Antwort hilfreich
Hat das jetzt geklappt ? 

------------------
Gruß
Andreas

http://kraus-cad.de

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 23. Okt. 2010 14:29    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 Andreas,

sorry das ich nicht geantwortet habe - hab mit ner Erkältung zu kämpfen.
JA !!!
Hat super geklappt, auch das mit dem Leerzeichen.
Vielen Dank nochmal für deine Mühe

Grüße, Andreas

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

PlotExner
Mitglied
Selbstständig


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

Beiträge: 217
Registriert: 21.03.2001

P4 / 3 GHZ
2048 MB Arbeitsspeicher
Grafik: nVidia GeForce FX 5600 (256 MB)
WIN2000 SP4
ADT 2005

erstellt am: 26. Nov. 2010 19:32    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 Andreas,

ich hab ein Problem..... diese LISP die wir vor Wochen geschrieben haben,
geht nicht mehr.

Krieg diese Fehlermeldung:

Fehler: Fehlerhafter Argumenttyp: stringp nil

Es hat doch funktioniert... warum jetzt nimmer ??


Grüße, Andreas

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

GIGIMAN
Mitglied
TECHNIKER im THEATER


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

Beiträge: 392
Registriert: 22.06.2009

AUTOCAD 2007 - 2008 -2010
Expresstools - Windows XP

erstellt am: 27. Nov. 2010 07: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 PlotExner 10 Unities + Antwort hilfreich
Hallo Leute , will ja nicht den Lisp-Kollegen den Job wegnehmen - ich kann mich auch irren - aber da gibt´s doch den Befehl GATTE ( Globale Attributbearbeitung ) , mit dem ich das eigentlich immer mache ( Expresstools )  - ist das auf Euer Problem nicht anwendbar?
  
Hoppla .......drübergelesen - es geht ja um Blöcke in VERSCHIEDENEN Zeichnungen und nicht um viele Blöcke in einer Datei - dann is natürlich mit GATTE Essig

------------------
Gruß  GIG    

Wer gar nicht kommt .... braucht auch nicht gehen   

[Diese Nachricht wurde von GIGIMAN am 27. Nov. 2010 editiert.]  

[Diese Nachricht wurde von GIGIMAN am 28. Nov. 2010 editiert.]

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

Andreas Kraus
Mitglied
Konstrukteur Elektro


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

Beiträge: 804
Registriert: 11.01.2006

WinXP SP2
WIN 7 pro
ACAD 2014

erstellt am: 29. Nov. 2010 12: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 Nur für PlotExner 10 Unities + Antwort hilfreich
Hmm....
ist vielleicht irgendeine Datei geöffnet ?
Ich hatte ja geschrieben daß alle Dateien die zu bearbeiten sind geschlossen sein müssen.

Wenn das nicht hilft kannst du mir gerne die Dateien Mailen und ich schau mal durch.
Kann ja sein daß ich doch ein par Fehlerbehandlungszeilen einbauen muß 

------------------
Gruß
Andreas

http://kraus-cad.de

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)2014 CAD.de

-