| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| | |
 | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
|
Autor
|
Thema: DXF Filter (700 / mal gelesen)
|
otm Mitglied Bauingenieur
 
 Beiträge: 192 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023.2.1 Update VBA Enabler 2019 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 20. Dez. 2022 11:06 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forum, ich möchte im Modellbereich alle Blöcke, deren Name mit A oder B oder C beginnt, auswählen. Die folgende Filterbedingung für das ss erzeugt immer eine Fehlermeldung. Wo ist der Fehler? Code:
Dim DxfCodes(5) As Integer Dim DxfValues(5) As Variant DxfCodes(0) = 410:DxfValues(0) = "Model" DxfCodes(1) = -4: DxfValues(1) = "OR>" DxfCodes(2) = 2: DxfValues(2) = "A*" 'Blockreferenzname DxfCodes(3) = 2: DxfValues(3) = "B*" 'Blockreferenzname DxfCodes(4) = 2: DxfValues(4) = "C*" 'Blockreferenzname DxfCodes(5) = -4: DxfValues(5) = "OR>"
Nehme ich folgende Zeilen, funktioniert es. Code:
DxfCodes(0) = 410: DxfValues(0) = "Model" DxfCodes(1) = 2: DxfValues(1) = "A*,B*,C*"
Wie muss ich das in der ersten Syntax schreiben?
------------------ Grüße aus München Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Ehrenmitglied V.I.P. h.c. 良い精神

 Beiträge: 22689 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 20. Dez. 2022 11:18 <-- editieren / zitieren --> Unities abgeben:          Nur für otm
So aus meiner Ahnungslosen Sicht heraus und ohne den Rest beurteilen zu können: Ich nehme an deine logische Gruppierung muss einen Start und ein Ende haben, nicht zwei Ende ohne Beginn: Ende - Ende
Code: Dim DxfCodes(5) As Integer Dim DxfValues(5) As Variant DxfCodes(0) = 410:DxfValues(0) = "Model" DxfCodes(1) = -4: DxfValues(1) = "OR>" DxfCodes(2) = 2: DxfValues(2) = "A*" 'Blockreferenzname DxfCodes(3) = 2: DxfValues(3) = "B*" 'Blockreferenzname DxfCodes(4) = 2: DxfValues(4) = "C*" 'Blockreferenzname DxfCodes(5) = -4: DxfValues(5) = "OR>"
Start - Ende
Code: Dim DxfCodes(5) As Integer Dim DxfValues(5) As Variant DxfCodes(0) = 410:DxfValues(0) = "Model" DxfCodes(1) = -4: DxfValues(1) = "<OR" DxfCodes(2) = 2: DxfValues(2) = "A*" 'Blockreferenzname DxfCodes(3) = 2: DxfValues(3) = "B*" 'Blockreferenzname DxfCodes(4) = 2: DxfValues(4) = "C*" 'Blockreferenzname DxfCodes(5) = -4: DxfValues(5) = "OR>"
EDIT: Link nachgeschoben https://help.autodesk.com/view/OARX/2023/DEU/?guid=GUID-5CB54129-22A1-42B9-B97C-2D2F5597F90E
[Diese Nachricht wurde von cadffm am 20. Dez. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
otm Mitglied Bauingenieur
 
 Beiträge: 192 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023.2.1 Update VBA Enabler 2019 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 20. Dez. 2022 11:23 <-- editieren / zitieren --> Unities abgeben:         
|

| |
rexxitall Mitglied Dipl. -Ing. Bau
 
 Beiträge: 270 Registriert: 07.06.2013 Various: systems, Operating systems, cad systems, cad versions, programming languages.
|
erstellt am: 26. Dez. 2022 13:45 <-- editieren / zitieren --> Unities abgeben:          Nur für otm
Tip am Rande, das basetln von dxffiltern ist üblicherweise langsamer als die "holzhammermethode" ala (Pseudocode ausm Bauch) dim entity as acadentity dim blockref as acadblockreference For each entity in thisdrawing.modelspace if typeof entity = acadblockreference then set blockref=entity if instr("abc",lcase(left(blockref.effecitvename,1))) > 0 then 'was auch immer damit gemacht werden soll endif endif next Vorteile: flexibler, weniger kryptisch, man hat die entitys gleich am start, keine selectionset basteleien. Und schneller ist es auch noch 
------------------ Wer es nicht versucht, hat schon verlorn  Und bei 3 Typos gibts den vierten gratis ! <<< not for sale ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |