Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Elemente in Blöcken 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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Elemente in Blöcken auslesen (1691 mal gelesen)
Abele
Mitglied



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

Beiträge: 71
Registriert: 09.06.2004

erstellt am: 04. Okt. 2004 11:40    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 stehe immer wieder vor dem Problem, das ich bestimmte Layer aus Zeichnungen entfernen will, diese aber noch laut AutoCAD in dictionaries referenziert sind. Ich habe nun schon festgestellt, das das wohl bedeutet, das in irgendwelchen Blöcken Elemente mit diesem Layer vorhanden sind.
Nun dachte ich mir ich mach in VBA eine Routine, die die Blöcke durchsucht.

In der Regel gehe ich wie folgt vor

Dim Objekt as acadblockreference
Dim Element as acadentity
Dim I as double

For each element in thisdrawing.modelspace
If element.objektname = "AcDbBlockReference" then
Set Objekt = thisdrawing.objectIDtoobject(element.objectID)
' Hier dann der Code für die Vorgänge
End if
Next element

Leider finde ich keinen Weg um dann an die einzelnen Element in diesen Blöcken ranzukommen um die Layer zu prüfen.

Hat mir jemand Rat?

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: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 04. Okt. 2004 11:46    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 Abele 10 Unities + Antwort hilfreich

HAllo Abele,

du musst durch die Blocks-Collection der aktuellen Zeichnung und dann durch die Elemente des Blockes 'hecheln'.
Du musst zusätzlich wenn dur eine Blockreferenz findest, schauen, dass die Attributrefrenzen acuh nicht die Layereigenschaften zugewiesen bekommen haben.

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

Abele
Mitglied



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

Beiträge: 71
Registriert: 09.06.2004

erstellt am: 04. Okt. 2004 11: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

Danke erstmal

Ich habe das mit der Block-Collection auch schon versucht(falls du die acadblocks meinst).
Habe dann mit Count die Anzahl der Elemente in dem Block geholt und mit einer for-next die elemente durchsuchen wollen.

Allerdings kam dann immer der debugger und blieb auf so einer Zeile stehen:
If Block.item(I).layer = "AM_1" then

Ist das das falsche vorgehen?

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: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 04. Okt. 2004 12: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 Nur für Abele 10 Unities + Antwort hilfreich

Hallo Abele,
schau dir mal das Objektmodell genau an. Das kann so nicht funktionieren
Die Hierarchi ist in etwa so:
-Drawing
---Blocks
-----Block
-------z.B. LINE
-------ff Elemente der Blockdefinition
Da nur die Elemente die Eigenschaft LAYER haben, muss das Programm in deinem Konstrukt einen Fehler bringen.

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

Abele
Mitglied



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

Beiträge: 71
Registriert: 09.06.2004

erstellt am: 04. Okt. 2004 13: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

Ok. Habs geschafft, das die Routine durchläuft.
Er findet aber trotzdem keine Elemente mit den besagten Layern.
Hast Du eine Ahnung was diese dictionaries, weswegen sich manche Layer nicht bereinigen, bzw. löschen lassen noch sein können?

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: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 04. Okt. 2004 13: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 Abele 10 Unities + Antwort hilfreich

Hallo Abele,

sind Layerfilter definiert?
hängen die Layer evtl. am BLKEND oder SEQUEND?
ist der layer aktuell gesetzt?

das könnten alles Ursachen sein.

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

Abele
Mitglied



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

Beiträge: 71
Registriert: 09.06.2004

erstellt am: 04. Okt. 2004 13:08    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

Tut mir leid, aber diese Begriffe sind mir neu???

Viele Grüße
Ralph

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: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 04. Okt. 2004 21:09    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 Abele 10 Unities + Antwort hilfreich

Hallo Abele,

:hmm schau mal in der DXF-Hilfe nach den oben genannten Stichwörtern. Diese sind AutoCAD-Objekte.
Layerfilter werden, wenn ich das richtig in Erinnerung habe, in Dictionaries gespeichert, wie alle nichtgrafischen Objekte eben.

Habe im Moment auch wegen der Messevorbereitung wenig Zeit, sonst hätte ich selbst mal nachgesehen, und dir egtwas besser helfen können.

Wenn es dir auf eine Lösung ankommt, dann schau mal auf cadwiesel.de und auch auf defun.de .. dort solltest du für dein Problem Lösungen finden können.

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