Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  SelectionSet mit GC 410

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:  SelectionSet mit GC 410 (1438 mal gelesen)
fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

erstellt am: 05. Okt. 2006 10: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,

mit oSelectionSet.Select acSelectionSetAll , , varFilterType , varFilterValue
kann ich die Auswahl der Objekte mit Hilfe von Filtern einschränken.
Das funktioniert gut bei Layern:
varFilterType[0] = 8
varFilterValue[0] = "MeinLayer"

Nun will ich alle Objekte eines Layers des Modellbereiches haben.
Dazu müsste man die Auswahl auf den Modellbereich einschränken.
Leider füllt er den Auwahlsatz mit den Angaben
varFilterType[0] = 410
varFilterValue[0] = "Model"
nicht.

In LISP würde das gehen mit (ssget "X" (list (cons 410 "Model"))). Ich will nicht iterativ den ModelSpace durchlaufen.

Hat jemand eine Idee?

VG, Fred

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: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 05. Okt. 2006 11: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 Nur für fred_tomke 10 Unities + Antwort hilfreich

Hallo Fred,

Du musst als Filter die 67 anstatt der 410 nehmen, damit kannst du unterscheiden, ob es ein Layout oder das Modell sein soll.
Hier als Beispiel:

Sub Ch4_Filtertest()
  Dim sset As AcadSelectionSet
  Dim FilterType(1) As Integer
  Dim FilterData(1) As Variant
  On Error Resume Next
  ThisDrawing.SelectionSets.Item("SS2").Delete
  Set sset = ThisDrawing.SelectionSets.Add("SS2")
  FilterType(0) = 8    'Filter nach Layer
  FilterData(0) = "0"  'Layername
  FilterType(1) = 67  'Filter ob Modell oder Layout
  FilterData(1) = 0    'Modell (0) / Layout (1)
 
  sset.Select acSelectionSetAll, , , FilterType, FilterData
End Sub

Gruß, Carsten

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

erstellt am: 05. Okt. 2006 13: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 Carsten,

vielen Dank für den Tipp. Funktioniert super.
Vorsichtige Frage: Kann man beim Suchen innerhalb von Layouts auch die Objekte eines bestimmten Layouts filtern?

(ssget "X" (list (cons 410 (getvar "CTAB"))))

Vielen Dank nochmals.

VG, Fred

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: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 05. Okt. 2006 18:33    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 fred_tomke 10 Unities + Antwort hilfreich

Hallo Fred,

Du kannst leider keinen Filter für den Namen in den Auswahlsatz einbauen, da es ein seit Versionen bekannter Bug in der VBA-Schnittstelle ist.

Du kannst aber von einem Element erfahren, auf welchem Layout es liegt:

Public Sub test123()
Dim Object As Object
Dim promt As String
Dim Pickedpoint As Variant
On Local Error Resume Next
promt = "Objekt wählen:"
Utility.GetEntity Object, Pickedpoint, promt
If TypeName(Object) <> "Nothing" Then
MsgBox ThisDrawing.ObjectIdToObject(Object.OwnerID).Layout.Name
End If
End Sub

Ich würde daher im entsprechenden Layout die Elemente nach deinen Anforderungen durchsuchen.

Gruß, Carsten

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

fred_tomke
Mitglied
Applikationsingenieur


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

Beiträge: 156
Registriert: 14.06.2004

erstellt am: 05. Okt. 2006 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

Danke!

VG, Fred

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

pistolpete1
Mitglied
Student


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

Beiträge: 102
Registriert: 06.01.2007

erstellt am: 10. Aug. 2007 20:58    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 fred_tomke 10 Unities + Antwort hilfreich

Hallo schlaues Forum,

ich habe auch ein Problem mit meinen Filtern. Wenn ich mittels SelectionSet alle Blöcke die "60_40" heißen filtere - kein Problem. Wenn ich aber alle will, die entweder "60_40" oder "60_60" heißen funktioniert es nicht. Hier ist das CodeFragment, bitte um Hilfe:
 
  Dim blockset As AcadSelectionSet
  Dim FType(1) As Integer, FData(1)
 
  FType(0) = 2: FData(0) = "60_40"
  FType(1) = 2: FData(1) = "60_60"
 
  Set blockset = ThisDrawing.SelectionSets.Add("BLOCKSET13")
  blockset.Select mode:=acSelectionSetAll, Filtertype:=FType, filterdata:=FData

PS: jedes mal wenn das macro zwischen blockset.Select und blockset.delete abstürzt muss ich es umbenennen, gibts da irgendweilche tricks (... außer die "On error"- sache?


Gruß Peter

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: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 10. Aug. 2007 21: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 Nur für fred_tomke 10 Unities + Antwort hilfreich

Hi Peter,

Überprüfe vor erstellung des Selectionsets, ob der vorhanden ist und leere ihn dann bzw. erstelle diesen, wenn nicht vorhanden.

Zu deinem Filter: Schau dir mal in der VBA-Hilfe unter filter lists for selection sets, logical grouping of filter tests die Beispiele an. Ist zwar Lisp, aber das kannst du auch in der Art in VBA nutzen.

Gruß, Carsten

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