| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
|
Autor
|
Thema: SelectionSet in VBA (256 mal gelesen)
|
Lars_Ziegler Mitglied CAD-Administrator, Pro/TOOLKIT

 Beiträge: 96 Registriert: 01.06.2001
|
erstellt am: 14. Jan. 2003 15:41 <-- editieren / zitieren --> Unities abgeben:         
Hallo Spezialisten! Ich möchte per VBA alle Elemente die an einem Punkt starten, enden oder duch ihn hindurchgehen, einem Selectionset zuordnen. Nur leider nimmt mit AutoCAD bei folgendem Code nur ein Element! Weiss jemand Abhilfe, wie ich alle Elemente bekomme, die durch diesen Punkt gehen? VBA Code bisher: Public Sub TestSelect() Dim Punkt As Variant Dim sset As AcadSelectionSet Punkt = ThisDrawing.Utility.GetPoint(, "Punkt wählen: ") Set sset = ThisDrawing.SelectionSets.Add("SS1") sset.SelectAtPoint (Punkt) sset.Highlight True Debug.Print "Einträge: " & sset.Count sset.Delete End Sub DANKE FÜR JEDEN HINWEIS!!!! Gruss Lars!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Cuder Mitglied Selbständig
  
 Beiträge: 692 Registriert: 10.07.2002 AutoCAD 2002/2004/2005 unter Windows 2000 Professional SP3 PIV 3.4GHz 1024MB NVIDIA GeForce FX Go5700
|
erstellt am: 14. Jan. 2003 15:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
Mehrfacher Aufruf des SelectionSets: nach jedem Aufruf das zurückgegeben Element in einem Array speichern, aus dem SelectionSet entfernen, ausblenden so das nicht sichtbar und wieder wählen, bis SelectionSet leer. nach ausblenden event. Update erforderlich Oder ganz klein um den Punkt kreuzen. ------------------ Bernd Cuder Cad&Co makes CAD easy [Diese Nachricht wurde von Bernd Cuder am 14. Januar 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wklemens Mitglied Systemingenieur
 
 Beiträge: 383 Registriert: 02.09.2002
|
erstellt am: 14. Jan. 2003 19:19 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
Hallo Lars! habe in meiner Wühlkiste etwas gefunden! Damit müßtest Du Dein Problem lösen können. Ich habe das Dokument irgenwo gefunden. Grüße aus Linz Willi Klemens PS: Dafür müßten schon 10 Eier rüber!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lars_Ziegler Mitglied CAD-Administrator, Pro/TOOLKIT

 Beiträge: 96 Registriert: 01.06.2001 Windows 7 (SP1) 64-Bit DELL Precision T5500 (RAM 24GB) NVIDIA Quadro 4000 Wildfire4 M200 Pro/TOOLKIT
|
erstellt am: 15. Jan. 2003 07:18 <-- editieren / zitieren --> Unities abgeben:         
|
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: 15. Jan. 2003 08:06 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
|
wklemens Mitglied Systemingenieur
 
 Beiträge: 383 Registriert: 02.09.2002
|
erstellt am: 15. Jan. 2003 08:47 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
|
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: 15. Jan. 2003 09:16 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
|
wklemens Mitglied Systemingenieur
 
 Beiträge: 383 Registriert: 02.09.2002
|
erstellt am: 15. Jan. 2003 17:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
|
Bernd Cuder Mitglied Selbständig
  
 Beiträge: 692 Registriert: 10.07.2002 AutoCAD 2002/2004/2005 unter Windows 2000 Professional SP3 PIV 3.4GHz 1024MB NVIDIA GeForce FX Go5700
|
erstellt am: 15. Jan. 2003 17:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
|
wklemens Mitglied Systemingenieur
 
 Beiträge: 383 Registriert: 02.09.2002
|
erstellt am: 15. Jan. 2003 23:19 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
Hallo Lars! So, damit Bern auch zufrieden ist hab ich Dir noch ein Beispiel mit SelectAtPoint mitgeschickt. Wenns jetzt nicht paßt, dann hoffe ich auch auf bessere Vorschläge. Grüße aus Linz Willi Klemens Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Cuder Mitglied Selbständig
  
 Beiträge: 692 Registriert: 10.07.2002 AutoCAD 2002/2004/2005 unter Windows 2000 Professional SP3 PIV 3.4GHz 1024MB NVIDIA GeForce FX Go5700
|
erstellt am: 15. Jan. 2003 23:39 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
Sorry wklemens, (ich heiße übrigens Bernd nicht Bern) das bringt uns auch nicht weiter da im Bsp. auch nur SelectAtPoint einmalig aufgerufen wird und das ja nur ein Element zurückgibt. Und genau das ist das Problem. Wir brauchen einen WorkArround und den Anstoß habe ich ja bereits gegeben. Entweder SelectAtPoint bis nichts mehr geht oder Kreuzen (ganz winzig). Wer mir bei der ganzen Diskussion fehlt ist RoSiNiNo, der war auf Urlaub, aber jetzt nicht mehr oder? :-) ------------------ Bernd Cuder Cad&Co makes CAD easy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lars_Ziegler Mitglied CAD-Administrator, Pro/TOOLKIT

 Beiträge: 96 Registriert: 01.06.2001
|
erstellt am: 16. Jan. 2003 07:29 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen! Durch den Tip von Bernd bin ich auf folgende Lösung gekommen! Public Sub TestSelect() Dim Punkt As Variant Dim Wahl As AcadSelectionSet Dim Elemente As AcadSelectionSet Dim WahlObjs() As AcadEntity Dim i As Integer Punkt = ThisDrawing.Utility.GetPoint(, "Punkt wählen: ") Set Elemente = ThisDrawing.SelectionSets.Add("Elemente") Set Wahl = ThisDrawing.SelectionSets.Add("Wahl") Do Wahl.Clear Wahl.SelectAtPoint Punkt If Wahl.Count > 0 Then ReDim WahlObjs(0 To Wahl.Count - 1) For i = 0 To Wahl.Count - 1 Set WahlObjs(i) = Wahl.Item(i) Wahl.Item(i).Visible = False Wahl.Update Next i Elemente.AddItems WahlObjs End If Loop Until Wahl.Count = 0 Wahl.Delete For i = 0 To Elemente.Count - 1 Elemente.Item(i).Visible = True Next i Elemente.Highlight True Elemente.Update Debug.Print "Einträge: " & Elemente.Count Elemente.Delete End Sub Funktioniert vorzüglich! Darf aber trotzdem diskutiert werden! Gruss Lars 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: 16. Jan. 2003 08:13 <-- editieren / zitieren --> Unities abgeben:          Nur für Lars_Ziegler
Hallo Bernd, natürlich bin ich schon wieder zurück, da dein Lösungsvorschlag so gut war, hab ich einfach nichts mehr hinzuzufügen gehabt. Wie man sieht, hat es auch so funktioniert. Ich bin übrigens nächste Woche beim Skifahren  In Kärnten gibt es ja noch genug Schnee. ------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |