| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Block im Auswahlsatz sprengen (1996 mal gelesen)
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 22. Mrz. 2011 09:43 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich filter mir mehrere Objekte aus einer Zeichnung in einen Auswahlsatz. Da können auch Blöcke drin enthalten sein. Nun möchte ich gerne zwei bestimmte Blöcke sprengen. Dazu soll der Auswahlsatz durchlaufen werden und wenn es einen Block mit dem Namen "Sofadi" und /oder "Aluline" gibt, sollen diese gesprengt werden. Könnte mir dabei kurzfristig jemand weiterhelfen? Code:
For Each BlocksprengEnt In RSSet Set BlocksprengObj = BlocksprengEnt If BlocksprengObj.ObjectName = "AcDbBlockReference" Then If BlocksprengObj.Name = "Sofadi" Or "Aluline" Then '???BlocksprengObj ...sprengen End If End If Next BlocksprengEnt
... oder wie müßte die Schleife lauten? Vielen Dank im Voraus.
------------------ Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 22. Mrz. 2011 10:12 <-- editieren / zitieren -->
Hi, Code: call BlocksprengObj.Explode
und dann noch bei Bedarf löschen, denn es werden zwar die explodierten Elemente angelegt, die Referenz bleibt aber bestehen.Auch >>>hier<<< ein Beitrag, sollten sich BlockReferenzen nicht zerlegen lassen. - alfred - ------------------ www.hollaus.at |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 25. Mrz. 2011 14:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Alfred! Danke für die Info. Ein zusätzliches Problem war, dass sich Dynamische Blöcke nicht über "INSERT" filtern lassen. Diese habe ich nun über den Layer gefiltert und dann... Code:
'--Filterung bzgl. Blockauflösungen--!!! Dim BlockObj1 As AcadObject Dim BlockEnt1 As Variant Dim BlockDel1 As Variant Dim BlockType(0) As Integer Dim BlockData(0) As Variant BlockType(0) = 8: BlockData(0) = "Alul*,Sofa*"'--Grundlagen für den Selectionsset Auswahlsatz 1--!!! Dim BSSet As AcadSelectionSet Set BSSet = ActiveDocument.SelectionSets.Add("Block") If Err <> 0 Then Set BSSet = ActiveDocument.SelectionSets("Block") End If With BSSet .Clear .Select acSelectionSetCrossing, minp, maxp, BlockType, BlockData End With For Each BlockEnt1 In BSSet Set BlockObj1 = BlockEnt1 If BlockObj1.ObjectName = "AcDbBlockReference" Then BlockDel1 = BlockObj1.Explode BlockObj1.Update BlockObj1.Delete End If Next BlockEnt1
Ein schönes Wochenende.
------------------ Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 25. Mrz. 2011 15:06 <-- editieren / zitieren -->
Hi, kleine Bemerkung zu Performance: dieses kannst Du weglassen: BlockObj1.Update Wenn Du die Referenz ja nachfolgend gleich löscht. - alfred - ------------------ www.hollaus.at |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 26. Mrz. 2011 11:34 <-- editieren / zitieren --> Unities abgeben:
|