Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  noch einmal Selektion

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
  
PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  noch einmal Selektion (1522 mal gelesen)
PeterF
Mitglied



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

Beiträge: 30
Registriert: 11.08.2008

BricsCad V8-9
ACAD 2000-2009

erstellt am: 18. Aug. 2008 22: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

Hallo allerseits,

ich habe noch ein Selektionsproblem.

Ich möchte aus einem bestimmten Layout einen Block auslesen. Wenn ich das Layout nicht angebe, geht das ja recht einfach:


Dim myData(2) As Variant
Dim myType(2) As Integer
Dim mySS As AcadSelectionSet


myType(0) = 0
myData(0) = "INSERT"
myType(1) = 2
myData(1) = <blocknam>
myType(2) = 67
myData(2) = 1

SelectionSetsClear ActiveDocument, "Temp"
Set mySS = ActiveDocument.SelectionSets.Add("Temp")
mySS.Select acSelectionSetAll, , , myType, myData

Wenn ich nun prüfen möchte, ob der Block in einem bestimmten Layout vorhanden ist, kann ich ja alle Ergebnise durchlaufen und die OwnerID auswerten. Das ist aber nicht schön.

Nun habe ich mit mir  mit (entget(car(entsel))'("*")) die Daten des Blocks einmal angeschaut und den Gruppencode 410 gefunden, in dem der Layoutname steht.

((-1 . <Objektname: 7e8f5908> ) (0 . "INSERT") (330 .
<Objektname: 7e8f54a8> ) (5 . "1B71") (100 . "AcDbEntity") (67 . 1) (410 .
"TESTLAYOUT") (8 . "TestLayer") (100 . "AcDbBlockReference") (66 . 1) (2 .
"Testblock") (10 1019.0 5.0 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70
. 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))

nun dachte ich, dass ich

die Daten- und Filterliste nur um

myType(3) = 410
myData(3) = "TESTLAYOUT"

zu erweitern brauche. Aber das SelectionSet hat dann keine Objekte.

WARUM?

------------------
Viele Grüße aus dem Münsterland!

PeterF
--------------------------------------------
Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Das nennen sie dann ihren Standpunkt.

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: 19. Aug. 2008 07: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 PeterF 10 Unities + Antwort hilfreich

Hi Peter,

Warum holst du dir nicht erst einmal das Layout, was ja auch nur eine Blockauflistung ist und ermittelst den gesuchten Block in diesem Layout-Block?!

Gruß aus dem Münsterland, Carsten

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

PeterF
Mitglied



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

Beiträge: 30
Registriert: 11.08.2008

BricsCad V8-9
ACAD 2000-2009

erstellt am: 19. Aug. 2008 09:14    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 Carsten,

Danke für die Antwort. Klar geht das auch, aber

1. möchte ich prinzipiell wissen, warum ich den Gruppencode 410 nicht abfragen kann
2. ich wollte verhindern, eine for each schleife zu durchlaufen um ein bestimmtes Element zu filtern, wenn man es dirket zu  fassen bekommen könnte

Sonst kann ich auch alle betreffenden Blöcke aus allen Papierbereichen selektieren um dann über die OwderID das Layout zu bestimmen. Dann weiß ich wenigstens schon mal, dass ich ein Element mit Typ und Name habe, welches ich suche und muß nicht erst noch eine Typidentifizierung machen. Aber viele Wege führen nach Rom. Klar ist Dein Vorschlag auch eine Variante.

------------------
Viele Grüße aus dem Münsterland!

PeterF
--------------------------------------------
Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Das nennen sie dann ihren Standpunkt.

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: 19. Aug. 2008 16:17    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 PeterF 10 Unities + Antwort hilfreich

Hallo Peter,
Zitat:
mySS.Select acSelectionSetAll, , , myType, myData

Wenn ich mich recht erinnere, wird nur das selektiert was sichtbar ist. Versuch doch mal zuerst auf das Layout zu wechseln und dann dein Selectionset zu füllen. Ist es dann auch noch leer?

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

PeterF
Mitglied



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

Beiträge: 30
Registriert: 11.08.2008

erstellt am: 19. Aug. 2008 17: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 Wilfried

leider hilft Dein Tip auch nicht weiter.

Meines Wissens ist es egal, ob Objekte am Bildschirm sichtbar sind oder nicht. Man kann  mit dem GruppenCode 67 unterscheiden, ob man Objekte aus dem Modellbereich (=0) oder den Layouts (=1) selektieren möchte.

------------------
Viele Grüße aus dem Münsterland!

PeterF
--------------------------------------------
Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Das nennen sie dann ihren Standpunkt.

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 19. Aug. 2008 18: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 Nur für PeterF 10 Unities + Antwort hilfreich

Hallo Peter,
was hast Du denn schon wieder vor? 

Eine Legende durchsuchen ob alle Blöcke auch vorhanden sind?

Meines Erachtens kannst Du den Layoutnamen über den Gruppencode unter VBA so nicht herausfiltern, evtl. geht's ja über LISP.
Wenn Dir der Vorschlag von Carsten nicht gefällt, hier noch eine Variante wie ich das machen würde:
Wechsel in das Layout und mach ein acSelectionSetWindow ExtMin, ExtMax
dann weißt Du ob der Block in diesem Layout vorhanden ist oder nicht

Damit kannst Du den Filter anwenden und sparst Dir das Durchlaufen der Layoutentities.

Grüße,
Klaus 

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

PeterF
Mitglied



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

Beiträge: 30
Registriert: 11.08.2008

erstellt am: 19. Aug. 2008 21: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 Klaus,

ich muß ein Stempelfeld prüfen, ob es erstens überhaupt noch da ist und zweitens ob nicht so ein Experte den Block gesprengt hat und damit alle Attribute vernichtet hat. Das kommt leider öfter vor, als man glauben mag.
Deine Idee ist ja so schon mal nicht schlecht.
Wie bekomme ich den min und max des Layouts? BoundingBox geht ja nicht. (Hoffentlich ist die Frage nicht zu blöd!)

Eigentlich habe ich mein Problem ja schon wie oben beschrieben über die OwnerID gelöst. Geht ja auch ganz flott. Sie viele Objekte sind das ja nicht. Aber wenn es klarer strukturiert geht, ist mir das lieber. Dann kann ich meinen Code ja vielleicht in ein paar Wochen auch noch verstehen (Ach ja die Kommentare im Code sollte man ja auch nicht vergessen!)


Zu LISP: Davon habe ich so gut wie gar keine Ahnung. Kann man zwischen LISP und ActiveX Daten austauschen? Ich vermute mal es kommt ein ganz dickes NEIN!

------------------
Viele Grüße aus dem Münsterland!

PeterF
--------------------------------------------
Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Das nennen sie dann ihren Standpunkt.

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 19. Aug. 2008 21: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 PeterF 10 Unities + Antwort hilfreich


Block_aus_Layout.zip

 
Hallo Peter,
beiliegend dvb um spielen. 

Grüße,
Klaus 

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

PeterF
Mitglied



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

Beiträge: 30
Registriert: 11.08.2008

erstellt am: 20. Aug. 2008 06: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

Moin Klaus,

man kommt doch immer wieder an seine Wissensgrenzen. Die Infos sind aber auch sehr verstreut in Autocad. Einmal hängen sie am Objekt, dann an einem abgeleiteten Objekt und manchmal sind es die Systemvariablen. Auf alle Fälle lernt man nie aus. 

vielen Dank!

------------------
Viele Grüße aus dem Münsterland!

PeterF
--------------------------------------------
Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Das nennen sie dann ihren Standpunkt.

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