| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: VBA - SelectionSet (416 mal gelesen)
|
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 05. Nov. 2002 14:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo VBA-Spezialisten, habe folgendes Problem mit Filtern bei SelectionSet Code: Dim SS As AcadSelectionSet Dim FltTypes(0) As Integer Dim FltData(0) As Variant ' Frage nach den zu bearbeitenden Blöcken Set SS = CreateSelectionSet("LayerUpdateAuswahl") FltTypes(0) = 8: FltData(0) = "Test-FL01" ' Selectionset erstellen und Filter anwenden SS.Select acSelectionSetAll, FltTypes, FltData ' SS.SelectOnScreen FltTypes, FltData
ich möchte alle Objekte einer Zeichnung die auf dem Layer "Test-FL01" liegen herausfiltern. Mit SS.Select acSelectionAll übernimmt er mir alle Objekte, auch die die nicht auch dem Layer liegen. Wenn ich es mit SelectOnScreen versuche filtert er mir alles richtig aus. Warum, mach ich etwas falsch? ------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 05. Nov. 2002 14:49 <-- editieren / zitieren --> Unities abgeben:         
|
eilovliz Mitglied Technischer Zeichner

 Beiträge: 48 Registriert: 24.06.2004
|
erstellt am: 03. Dez. 2008 09:08 <-- editieren / zitieren --> Unities abgeben:          Nur für RoSiNiNo
|
Ex-Mitglied
|
erstellt am: 03. Dez. 2008 09:11 <-- editieren / zitieren -->
Hi, [EDIT]falsch gelesen, Korrektur: wenn Du verrätst, was hinter 'CreateSelectionSet' steckt, dann können wir helfen [/EDIT] - alfred - [Diese Nachricht wurde von a.n. am 03. Dez. 2008 editiert.] |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 03. Dez. 2008 09:11 <-- editieren / zitieren --> Unities abgeben:         
Stell doch bitte etwas mehr von deinem Code hier rein, sonst kann man dir nicht helfen ;-) Zitat: Original erstellt von eilovliz: hab das selbe problem Set SS = CreateSelectionSet("auswahl") FltTypes(0) = 0: FltData(0) = "INSERT" bei mir gibts einen fehler?? weis jemand weiter? MFG
------------------ Roland Feletic PAUSER ZT-GMBH Acad 2009-deutsch Update 2, Express Tools, Bonus Pack 1 3ds Max 2009 - SP1 WinXP-Professional HP Workstation xw4400, 3GB Quadro FX1500 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
eilovliz Mitglied Technischer Zeichner

 Beiträge: 48 Registriert: 24.06.2004
|
erstellt am: 03. Dez. 2008 09:23 <-- editieren / zitieren --> Unities abgeben:          Nur für RoSiNiNo
Hab den Code vor einiger zeit in einem Forum gefunden. jetzt hab ich ihn rausgekramt und wollt ihn so umschreiben das ich keine Farbnummer eingebe sondern VONLAYER irgendwie haut jetzt garnichts mehr hin :-) Private Sub CommandButton65_Click()
Dim SS As AcadSelectionSet Dim FltTypes(0) As Integer Dim FltData(0) As Variant Dim BlRef As AcadBlockReference Dim Bl As AcadBlock Dim pt As Variant Dim BlElem As AcadEntity Dim Bag As Collection Dim Search As Object Dim Farbe As Long Set SS = CreateSelectionSet("BlöckeNeuzeichAuswahl") FltTypes(0) = 0: FltData(0) = "INSERT" SS.SelectOnScreen FltTypes, FltData If SS.Count = 0 Then GoTo ENDE On Error GoTo ENDE Farbe = ThisDrawing.Utility.GetReal("Farbnummer: ") If Farbe < 0 Or Farbe > 256 Then GoTo ENDE Set Bag = New Collection For Each BlRef In SS On Error Resume Next Set Search = Bag(BlRef.Name) If Err Then Bag.Add BlRef, BlRef.Name Next BlRef Dim Anzahl As Integer Dim I As Integer Anzahl = Bag.Count Do I = I + 1 Set BlRef = Bag(I) Set Bl = ThisDrawing.Blocks(BlRef.Name) For Each BlElem In Bl If BlElem.ObjectName = "AcDbBlockReference" Then On Error Resume Next Set Search = Bag(BlElem.Name) If Err Then Bag.Add BlElem, BlElem.Name Anzahl = Anzahl + 1 End If End If BlElem.color = Farbe Next BlElem Loop Until I = Anzahl ThisDrawing.Regen acAllViewports ENDE: SS.Delete End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 03. Dez. 2008 09:27 <-- editieren / zitieren -->
Hi, ich nehme an, dass der Code bei 'CreateSelectionSet(...' fliegt Das gibt es nicht, wenn Du nicht eine eigene Funktion geschrieben hast, die so heisst. In AutoCAD gibt es
Code: a) ThisDrawing.Selectionsets.Add(... b) ThisDrawing.Selectionsets("NameBestehendesSelSet")
BTW , gewöhn Dir nicht an, in Bezeichnungen (in Deinem Fall Name des SelectionSets) Umlaute oder Sonderzeichen zu verwenden.- alfred - |
Ex-Mitglied
|
erstellt am: 03. Dez. 2008 09:29 <-- editieren / zitieren -->
...nächster Fehler aus SS.SelectOnScreen FltTypes, FltData mach SS.SelectOnScreen, , FltTypes, FltData weiter les ich mal nicht, lass mich/uns wissen, wie weit Du dann kommst und bitte bei Meldungen mit Code auch den Codeteil markieren, wo Du hängst. Viel Erfolg, - alfred - |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 03. Dez. 2008 09:40 <-- editieren / zitieren --> Unities abgeben:         
Wenn du schon kopierst ;-), dann richtig. Code: Public Function CreateSelectionSet(Optional ssName As String = "SS") As AcadSelectionSet Dim objSelSet As AcadSelectionSet Dim objSelCol As AcadSelectionSets Set objSelCol = ThisDrawing.SelectionSets For Each objSelSet In objSelCol If objSelSet.Name = ssName Then objSelCol.Item(ssName).Delete Exit For End If Next Set objSelSet = objSelCol.Add(ssName) Set CreateSelectionSet = objSelSet End Function
------------------ Roland Feletic PAUSER ZT-GMBH Acad 2009-deutsch Update 2, Express Tools, Bonus Pack 2 3ds Max 2009 - SP1 WinXP-Professional HP Workstation xw4400, 3GB Quadro FX1500 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |