Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Attribute in Blöcken bearbeiten

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:  Attribute in Blöcken bearbeiten (2425 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: 30. Okt. 2011 18: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

Hallo zusammen,

ich habe dem Ersteller der hier aufgeführten LISP schon eine PM geschickt,
ich schreibe aber nochmals hier rein, vielleicht kann mir auch noch jemand anderes helfen.

Es geht um diese LISP-Datei, bei der immer wieder folgender Fehler auftaucht:

Fehler: Fehlerhafter Argumenttyp: stringp nil

Hier die LISP:

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


Ich habe wieder das Problem, dass ich in vielen DWG´s mehrere Attribute ändern muss.

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 30. Okt. 2011 19: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 Nur für PlotExner 10 Unities + Antwort hilfreich

Wird vermutlich nicht viel bringen, das Programm zu analysieren - ich gehe davon aus, dass es fehlerfrei ist.
Viel größer ist die Wahrscheinlichkeit, dass das Problem im Block / der Blockreferenz liegt.

Lade daher eine Zeichnung mit einigen dieser Blöcke / Blockreferenzen hoch - alles andere vorher löschen.
Damit steigen Deine Chancen auf Lösung deutlich.

------------------
Schöne Grüße
Ernst

www.geopaint.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: 31. Okt. 2011 10: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


Zeichnungskopf.zip

 
Hallo,

anbei der Zeichnungskopf mit den Blöcken.

Jetzt bin ich mal gespannt, was dabei raus kommt.

Grüße, Andreas

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

Andreas Kraus
Mitglied
Elektrotechniker


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: 1356
Registriert: 11.01.2006

Win 10
ACAD 2022

erstellt am: 02. Nov. 2011 09: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


k_odbx_001.zip

 
So, ferdisch   

Sollte gehen ist aber noch ausbaufähig (ist es ja irgendwie immer)
Hab Spass damit   

Ach ja, der Name hat sich geändert. Sollte aber wurscht sein.
------------------
Geht nicht, gibts nicht

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

[Diese Nachricht wurde von Andreas Kraus am 02. Nov. 2011 editiert.]

[Diese Nachricht wurde von Andreas Kraus am 02. Nov. 2011 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: 02. Nov. 2011 10:26    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, klasse !!!

Habs gleich ausprobiert, gestartet wird dies doch mit
"k_odbx_001", oder ?

Wenn ja kommt diese Meldung:

Befehl: k_odbx_001
; Fehler: Beenden/Verlassen abbrechen

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: 02. Nov. 2011 12:25    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 nochmal,

ich habe (zum testen) mal in meiner Arbeitsstelle, dort haben wir Acad 2009/2011
die alte LISP ausprobiert - seltsamerweise funktionert es hier...

Kann es sein, dass es mit unter an der Pfadtiefe liegen kann ?
Hier im Büro habe ich die Testdateien unter d:\tmp liegen,
zuhause sind das aber etliche Unterordner mehr.
Oder könnte es auch an der Länge der Ordnernamen liegen ?

Selbst der Block für den Änderungsindex lies sich mit dieser
"alten" Lisp mit Daten füllen....

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

Andreas Kraus
Mitglied
Elektrotechniker


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: 1356
Registriert: 11.01.2006

Win 10
ACAD 2022

erstellt am: 02. Nov. 2011 12:41    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_odbx_001.zip

 
Die Fehlermeldung kommt weil ich zu schusselig bin alle Dialogfelder mitzugeben. 

So, jetzt aber

------------------
Geht nicht, gibts nicht

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: 02. Nov. 2011 12:45    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

Es funzt !!!!!!!!! Mensch, klasse !!!!
Wie kann ich mich erkenntlich zeigen ??

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



Projektleiter (m/w/d) Messebau

Die Unnasch and Friends GmbH & Co.KG ist ein kleines und dynamisches Unternehmen im Bereich Dienstleistungen. Wir sind spezialisiert auf die Konzeption, Planung und Umsetzung von Messeständen und Events. Dabei legen wir großen Wert auf kreative und individuelle Lösungen, um unseren Kunden ein einzigartiges Erlebnis zu bieten. Unser Team besteht aus motivierten und erfahrenen Mitarbeitern, die durch ihre Leidenschaft für Messebau und Eventmanagement für den Erfolg unserer Projekte sorgen....

Anzeige ansehenProjektmanagement
Andreas Kraus
Mitglied
Elektrotechniker


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: 1356
Registriert: 11.01.2006

Win 10
ACAD 2022

erstellt am: 02. Nov. 2011 16:48    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 funzt !!!!!!!!! Mensch, klasse !!!!

Da freu ich mich, das reicht 

------------------
Geht nicht, gibts nicht

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