| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Auswahlsatz in Acad erzeugen! (1718 mal gelesen)
|
Big Sven Mitglied Techn. Angestellter
 
 Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 21. Feb. 2006 17:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forum! Ich habe eine Frage zum Bilden eines Auswahlsatzes. Ich möchte einen bestimmten Block anhand seines Namens herausfiltern. CODE: Dim FType(1) As Integer, FData(1) FType(0) = 0: FData(0) = "INSERT" FType(1) = 8: FData(1) = "BLOCKNAME" AWSatz.Select acSelectionSetAll, , , FType, FData Wenn ich jetzt in den Auswahlsatz schaue, dann sind dort alle Inserts enthalten und ich muss lange suchen, bis den richtigen gefunden habe. Was mache ich falsch? Vielen Dank für Eure Hilfe! Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 21. Feb. 2006 19:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
Hallo Sven, du filterst in deinem Auswahlsatz nach dem Elementtyp(Insert) und nach dem Layer (Bei dir Blockname). Der Gruppencode 8 steht für den Layer. Du benötigst den Gruppencode 2 für den Namen. Aus der Hilfe: DXF-Codes für häufig verwendete Filter 0 Objekttyp (Zeichenkette) Beispiel: "Line", "Circle", "Arc" usw. 2 Objektname (Zeichenkette) Der Tabellenname eines benannten Objekts 8 Layername (Zeichenkette) Beispiel: "Layer 0" Gruß, Carsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Big Sven Mitglied Techn. Angestellter
 
 Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 22. Feb. 2006 09:03 <-- editieren / zitieren --> Unities abgeben:         
Hallo Carsten! Natürlich war gerade ein Fehler von mir! Ich hahe ein Auswahlsatz, wo ich alle Objekte auf einem Layer absuche mit dem Gruppencode 8. Im anderen Auswahlsatz möchte ich nur diesen einen Block suchen (Gruppencode 2). Und trotzdem ignoriert er mir den Blocknamen und nimmt alle Inserts. Wo ist mein Fehler? Gruß Sven CODE: Dim FType(1) As Integer, FData(1) FType(0) = 0: FData(0) = "INSERT" FType(1) = 2: FData(1) = "BLOCKNAME" AWSatz.Select acSelectionSetAll, , , FType, FData Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 22. Feb. 2006 09:50 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
Hallo Sven, warum es bei dir nicht klappt, weiß ich jetzt nicht. Dies sollte klappen: Sub Ch4_Filtertest() Dim sstext 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) = 0 FilterData(0) = "Insert" FilterType(1) = 2 FilterData(1) = "BLOCKNAME" sset.Select acSelectionSetAll, , , FilterType, FilterData End Sub Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Big Sven Mitglied Techn. Angestellter
 
 Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 22. Feb. 2006 15:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo Carsten, jetzt habe ich es endlich! Vielen Dank für Deine Hilfe!!! Du hast mich zusätzlich noch auf eine Idee gebracht: ThisDrawing.SelectionSets.Item("SS2").Delete funktioniert, wenn ich es richtig verstehe nur, wenn der Auswahlsatz bereits einen Inhalt hat. Also muss eine kleine IF Schleife her und dann ist es fertig. Wie ist das eigentlich generell, bleiben alle meine Variablen und Datenfelder erhalten, bis ich die DWG schliesse? Oder gibt es eine Möglichkeit alle auf Empty zurück zu setzen? Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 22. Feb. 2006 15:46 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
Hallo Sven, Du kannst ja ThisDrawing.SelectionSets.Item durchlaufen und alle Selectionsets löschen. Du kannst bis zu 128 SelectionSets gleichzeitig benutzen. Deine Variablen sind nach End Sub alle gelöscht. Deine Selectionsets bleiben dir aber noch erhalten. Gruß, Carsten Code: '' Löscht eventuell vorhandene Auswahlsätze If ThisDrawing.SelectionSets.count > 0 Then For intAuswahl = 0 To ThisDrawing.SelectionSets.count - 1 ThisDrawing.SelectionSets.Item(intAuswahl).Delete Next intAuswahl End If Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 22. Feb. 2006 16:24 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
... und so gibts nicht mal nen Error dabei  ;;-)) Code:
For intauswahl = ThisDrawing.SelectionSets.Count - 1 To 0 Step -1 ThisDrawing.SelectionSets.Item(intauswahl).Delete Next intauswahl
Neenee Joke, aber mal ernsthaft, innerhalb einer Zählschleife löschen ... immer von hinten;-)Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 22. Feb. 2006 20:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
|
Goofy007 Mitglied Vermessungstechniker
  
 Beiträge: 578 Registriert: 06.11.2004 Map3D 2018 und Civil3D 2018
|
erstellt am: 22. Feb. 2006 22:56 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
|
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 22. Feb. 2006 23:34 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
Didi, das spielt aber wirklich nur beim Löschen eine Rolle ... das ganze wird dann nämlich ab einem Punkt gegenläufig wenn du ab for i=0 to irgendwas.count anfängst, also du baust damit auf Sand, da sich irgendwas.count mit jedem .delete um 1 ändert. Also mit jedem .delete setzt du unbewusst das .Count zurück, irgendwann chrasht es dann, da sich Zähler und Item() nimmer kennen. Deswegen beim Löschen ist es immer besser man beginnt von hinten und hangelt sich via step -1 nach vorn. lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Goofy007 Mitglied Vermessungstechniker
  
 Beiträge: 578 Registriert: 06.11.2004 Map3D 2018 und Civil3D 2018
|
erstellt am: 23. Feb. 2006 09:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
|