Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Blöcke auslesen

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:   Blöcke auslesen (1201 mal gelesen)
BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 27. Sep. 2004 14: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

Hi Forum,
Um meine Zeichnung nach Blöcken mit Attributen zu durchsuchen und dann die Inhalte auszulesen gehe ich bisher immer so vor:

For Each elem In AcadApp.ActiveDocument.ModelSpace
    If Mid(elem.Name, 1, 5) <> "R_st_" Then GoTo next_elem
        With elem
          If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then
              If .HasAttributes Then
              ....usw
              End if
          End if
    End if
next_elem:
Next Elem

Ich überprüfe also JEDES AutoCad-Element darauf, den Namen "R_st_" hat, dann darauf, ob es ein block ist, dann jeden gefundenen Block, ob er Attribute hat. Das kann bei nem großen Plan schon ganz schön lange dauern.

Irgendwie hab ich das Gefühl, das müßte doch auch kürzer gehen. Kann mir jemand helfen?

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

Bernd

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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4131
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 27. Sep. 2004 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 Nur für BerndE 10 Unities + Antwort hilfreich

Hallo Bernd,

klar geht das schneller. Filterlisten sollten dir helfen .. aber in Lisp istr's einfacher.
Schau hier, da habe ich mal ein Filterlistenkonstrukt veröffentlicht.

Alternativ kanst du auch auf meiner Seite das VBA-Tutorial ziehen. Darin ist das Thema auch behandelt.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

ACAD 2008 Mechanical

erstellt am: 27. Sep. 2004 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 Nur für BerndE 10 Unities + Antwort hilfreich

durchlaufe einfach die blocks aus AcadApp.ActiveDocument

------------------
- Thomas -
"Bei 99% aller Problemen 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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4131
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 27. Sep. 2004 14: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 BerndE 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von CADmium:
durchlaufe einfach die [b]blocks aus AcadApp.ActiveDocument

[/B]



@cadmium
wenn er an die Attribute will, dann langt das nicht, denn die hängen ja am INSERT. Um rauszufinden, ob es die Blöcke überhaupt gibt .. ok, dann deine Variante.

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

ACAD 2008 Mechanical

erstellt am: 27. Sep. 2004 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 BerndE 10 Unities + Antwort hilfreich

@Holg, da haste Recht ... aber in den Blocks kann man ja die elemente nach Attdef durchsuchen .... egal, ich find Lisp auch besser 

------------------
- Thomas -
"Bei 99% aller Problemen 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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 27. Sep. 2004 14: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 BerndE 10 Unities + Antwort hilfreich

schau dir mal in der VBA Hilfe den bereich SelectionSets durch.

hier kannst du direkt nach blöcken (INSERT) suchen , deren namen mit "R-ST_* beginnen und die attribute haben.

in lisp wäre das so
(ssget "X" (list (cons 0 "INSERT") (cons 2 "R_ST_*") (cons 66 1))

die suchschlüssel sind da in VBA ident
0.. elemnttyp (INSERT)
2.. elementname (R_ST_* mit Wildcards möglich)
66.. hat attribute (1)

musst dir halt nur die beispiele anschauen, und nach deinen suchkriterien abändern.

------------------
WWW.FFZELL.AT.TC

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

BerndE
Mitglied
Hochbautechniker


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

Beiträge: 557
Registriert: 05.07.2003

erstellt am: 27. Sep. 2004 14: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

Danke für Eure wieder mal superschnellen Antworten. Meine schon damals nur kläglichen Lisp-Kenntnisse sind mittlerweile schon sehr eingerostet. Nachdem Lisp auch immer mal wieder totgesagt wird, wollte ich mich auch nicht mehr mit beschäftigen (war das ein falscher Entschluss?)
Also werde ich mich mal auf die Seite von Holger begeben.
Auf jedenfall danke ich Euch allen.
Bernd

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

Bernd

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

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



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

Beiträge: 4131
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 27. Sep. 2004 14: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 BerndE 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von BerndE:
... Nachdem Lisp auch immer mal wieder totgesagt wird, wollte ich mich auch nicht mehr mit beschäftigen (war das ein falscher Entschluss?)...

Totgesagte leben länger.
Ich denke mittelfristig sind beide noch von Bestand. Ich gehe nicht davon aus, dass die eine Programmiersprache die andere wesentlich länger überleben wird.

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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