Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Objekte auf Layer erkennen

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
  
NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
Autor Thema:  Objekte auf Layer erkennen (2369 mal gelesen)
Frank136
Mitglied



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

Beiträge: 45
Registriert: 06.04.2009

P4 WinXP Acad2004,2005,2008 Office2003

erstellt am: 02. Jun. 2009 11: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

Da bin ich mal wieder  ,
heute gehts um Layer. Ich habe eine Zeichnung mit verschiedenen Layern, auf denen Polylinien und Blockreferenzen liegen.
Jetzt möchte ich von einem bestimmten Layer die Koordinaten aller Blockreferenzen auslesen.

mein Code:
Dim Entity As AcadEntity
Dim ActLayer As AcadLayer
Dim InPoint As Variant

On Local Error Resume Next

Set ActLayer = ThisDrawing.Layers("Module")
ActLayer.Freeze = False
ThisDrawing.ActiveLayer = ActLayer

For Each Entity In ThisDrawing.ActiveLayer
  If TypeOf Entity Is AcadBlockReference
    InPoint = Entity.InsertionPoint
   
dann in ein Array schreiben...(läuft schon)


Das Programm setzt mir den gewünschen Layer auf aktuell, aber es wird keine Blockref erkannt.
Was mache ich falsch?

gruß Frank

------------------
Wenn das Wasser bis zum Hals steht, sollte man den Kopf nicht hängen lassen...

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 02. Jun. 2009 12: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 Frank136 10 Unities + Antwort hilfreich

Hi Frank,

Für solche Sachen würde ich einen Selectionset mit Filter nutzen. Da gibt es schon einige Beispiele hier im Forum. Da kannst du direkt über den Layer und das Element filtern. Das geht bei vielen Elementen auch schneller.
Die Filtertypen kannst du in der DXF-Hilfe nachlesen.

Gruß, Carsten

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

Frank136
Mitglied



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

Beiträge: 45
Registriert: 06.04.2009

P4 WinXP Acad2004,2005,2008 Office2003

erstellt am: 02. Jun. 2009 15:23    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,
das mit der SelectionSet hatte ich mir schon fast gedacht. Mal schauen, ob ich da durchblicke. Jetzt noch ne ganz blöde Frage: Wo finde ich denn diese DXF-Hilfe, bzw ein Auflistung der DXF-Gruppencodes?

Danke schonmal

gruß Frank

------------------
Wenn das Wasser bis zum Hals steht, sollte man den Kopf nicht hängen lassen...

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 02. Jun. 2009 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 Nur für Frank136 10 Unities + Antwort hilfreich

Hi Frank,

Aus der Hilfe:

Code:
DXF-Referenz > Abschnitt OBJECTS >
Gängige Gruppencodes für Objekte


In der nachfolgenden Tabelle werden die Gruppencodes aufgeführt, die für praktisch alle nichtgrafischen Objekte gelten. Wenn Sie auf die Gruppencode-Tabelle mit Hilfe des Objekttyps verweisen (Liste der Codes, die einem bestimmten Objekt zugeordnet wurden), ist zu beachten, dass die hier angegebenen Codes bereits vorliegen könnten. Bestimmte Gruppencodes sind nur dann bei einem Objekt aufgeführt, wenn das Objekt keine Vorgabewerte für diese Gruppencode-Eigenschaften aufweist. Weitere Informationen zu Abkürzungen und Formatierungen, die in dieser Tabelle verwendet werden, finden Sie unter  Formatierungskonventionen in der Referenz.

Gängige Objekt-Gruppencodes

Gruppencode
Beschreibung

0
Objekttyp

5
Referenz

8
Layername (mehrere Einträge möglich)



Gruß, Carsten

[Diese Nachricht wurde von Carsten1210 am 02. Jun. 2009 editiert.]

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

Frank136
Mitglied



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

Beiträge: 45
Registriert: 06.04.2009

P4 WinXP Acad2004,2005,2008 Office2003

erstellt am: 02. Jun. 2009 20: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

Hallo,
danke für den Verweis auf die Hilfe, hätte ich nie gefunden!
Ich hab mal ein kleines Programm geschrieben, welches mir einen Layer ausliest. Dabei bin ich auf folgende Probleme gestoßen:

1)Die Reihenfolge, in der die gefundenen Elemente ausgegeben werden ist genau umgekehrt, als wenn ich normal mit "For Each Entity in ThisDrawing.ModelSpace" suche. Das ist für mich nicht so toll, weil ich mit den Koordinaten noch weiterrechnen will und mit so alle Werte davonlaufen.

2)Die Suche mit SelectionSet dauert bei mir wesentlich länger als mit der einfachen Methode, warum auch immer

3)Wenn ich den Filter so einstelle, dass er eine Polylinie auf dem Layer "Grenze" sucht, findet die SelectionSet nichts, obwohl eine Polylinie da ist.

code:

FilterCode(0) = -4 : FilterWert(0)= "<AND"
FilterCode(1) = 0 : FilterWert(1)= "polyline"
FilterCode(2) = 8 : FilterWert(2)= "Grenze"
FilterCode(3) = -4 : FilterWert(3)= "AND>"


Ehrlich gesagt finde ich so ne SelectionSet nicht ganz so toll, auch wenn sie vielseitig ist. Kann ich nicht doch an meinen ersten Versuchen weitermachen und alles auf nem aktiven Layer suchen?

gruß Frank

------------------
Wenn das Wasser bis zum Hals steht, sollte man den Kopf nicht hängen lassen...

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 02. Jun. 2009 22:52    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 Frank136 10 Unities + Antwort hilfreich

Hallo Frank,
Zitat:
FilterCode(0) = -4 : FilterWert(0)= "<AND"
FilterCode(1) = 0 : FilterWert(1)= "polyline"
FilterCode(2) = 8 : FilterWert(2)= "Grenze"
FilterCode(3) = -4 : FilterWert(3)= "AND>"

das mit dem and kannst du dir sparen. Wenn mehrere Bedingungen angegeben sind ist es immer eine and Bedingung.

Handelt es sich denn um eine Polylinie ?
Wahrscheinlich nicht. Es ist bestimmt eine LWPolyline.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 03. Jun. 2009 09: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 Frank136 10 Unities + Antwort hilfreich

Hallo Frank,

hab mal ein Beipiel:

Code:
Dim FilterType() As Integer
Dim FilterData() As Variant

Dim group As Variant
Dim FData As Variant

   ' Insert
   ReDim FilterType(0 To 0)
   ReDim FilterData(0 To 0)
   FilterType(0) = 0
   FilterData(0) = "INSERT"

   ' Punkt
   ReDim FilterType(0 To 0)
   ReDim FilterData(0 To 0)
   FilterType(0) = 0
   FilterData(0) = "POINT"

   ' Text
   ReDim FilterType(0 To 3)
   ReDim FilterData(0 To 3)
   FilterType(0) = -4
   FilterData(0) = "<OR"
   FilterType(1) = 0
   FilterData(1) = "TEXT"
   FilterType(2) = 0
   FilterData(2) = "MTEXT"
   FilterType(3) = -4
   FilterData(3) = "OR>"
 
' Linien
   ReDim FilterType(0 To 0)
   ReDim FilterData(0 To 0)
   FilterType(0) = 0
   FilterData(0) = "LINE"

' LWPOly Linien
   ReDim FilterType(0 To 0)
   ReDim FilterData(0 To 0)
   FilterType(0) = 0
   FilterData(0) = "LWPOLYLINE"



Die Beispiele brauchst du nur noch mit dem Code (8) Layer ergänzen.
Eine Alternative Schreibweise bei Mehrfachauswahl wäre
Code:
  ' Text
  ReDim FilterType(0 To 0)
  ReDim FilterData(0 To 0)
  FilterType(0) = 0
  FilterData(0) = "TEXT,MTEXT"

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht. 
www.ib-stelberg.de

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

Frank136
Mitglied



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

Beiträge: 45
Registriert: 06.04.2009

P4 WinXP Acad2004,2005,2008 Office2003

erstellt am: 03. Jun. 2009 11:20    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 Wilfried,
Danke für die Tips, es ist wirklich eine LWPolylinie. Jetzt hab ich auch verstanden, wo da der Unterschied ist.
Ich werd mal mit den Beispielen ein wenig testen. Melde mich dann noch mal.

gruß Frank

------------------
Wenn das Wasser bis zum Hals steht, sollte man den Kopf nicht hängen lassen...

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

Frank136
Mitglied



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

Beiträge: 45
Registriert: 06.04.2009

P4 WinXP Acad2004,2005,2008 Office2003

erstellt am: 05. Jun. 2009 13:18    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,
jetzt läuft so weit alles.
Nochmal vielen Dank für die Hilfe!!!

gruß Frank

------------------
Wenn das Wasser bis zum Hals steht, sollte man den Kopf nicht hängen lassen...

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