| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Block auf Layer 0 (470 mal gelesen)
|
Dober Heinz Mitglied Technischer Zeichner
Beiträge: 1143 Registriert: 20.12.2002 Autocad 2020/64B Win10 WORKSTATION Intel(R) CPU E5-1620 3.60GHz 16,0GB Ram 64 Bit-Betriebssystem HP Designjet T7200 Grafik NVIDIA Quadro P4000 ZWCAD2019
|
erstellt am: 14. Feb. 2003 10:02 <-- 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: 14. Feb. 2003 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
Hier ein paar Funktionen in VBA geschrieben. Das erste setzt alle Blockelemente auf Layer 0 und bylayer, das zweite geht alle Attribute durch und setzt diese auf Layer 0. Code: ' Feletic 10.07.2002 Public Sub BlockToLayer0() ' Setzt alle Elemente eines Blocks auf Layer "0" und ByLayer Dim SS As AcadSelectionSet Dim FltTypes(0) As Integer Dim FltData(0) As Variant Dim BlRef As AcadBlockReference ' gewählte Blockreferenz Dim Bl As AcadBlock ' Block ( --> Blockreferenz) Dim Pt As Variant ' Auswahlpunkt Dim BlElem As AcadEntity ' Elemente des Blocks Dim Bag As Collection Dim Search As Object ' Frage nach den zu bearbeitenden Blöcken Set SS = CreateSelectionSet("BlöckeNeuzeichAuswahl") FltTypes(0) = 0: FltData(0) = "INSERT" ' Selectionset erstellen, Benutzer fragen und Filter anwenden SS.SelectOnScreen FltTypes, FltData If SS.Count = 0 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.layer = "0" BlElem.Color = acByBlock BlElem.Linetype = acByBlock Next BlElem Loop Until i = Anzahl ENDE: SS.Delete ThisDrawing.Regen acAllViewports ' ThisDrawing.Utility.Prompt "Änderungen werden erst nach regenerieren der Zeichnung sichtbar!" End Sub ' FELETIC - 08.11.2002 Public Sub BlockAttColToByBlock() ' Ändert alle Attribute der gezeigten Blöcke auf Farbe "ByBlock" und Layer "0" Dim SS As AcadSelectionSet Dim FltTypes(0) As Integer Dim FltData(0) As Variant Dim BlObj As AcadBlockReference Dim BlAttrib As Variant Dim Count As Integer ' Frage nach den zu bearbeitenden Blöcken Set SS = CreateSelectionSet("BlockAttColToByBlockAuswahl") FltTypes(0) = 0: FltData(0) = "INSERT" ' Selectionset erstellen, Benutzer fragen und Filter anwenden SS.SelectOnScreen FltTypes, FltData If SS.Count = 0 Then GoTo ENDE For Each BlObj In SS ' Jetzt holen wir die Attribute BlAttrib = BlObj.GetAttributes ' Wir suchen, ob die Daten auch in das neue Ding passen For Count = UBound(BlAttrib) To 0 Step -1 BlAttrib(Count).Color = acByBlock BlAttrib(Count).layer = "0" Next Count Next BlObj ENDE: SS.Delete End Sub Public Function CreateSelectionSet(Optional ssName As String = "SS") As AcadSelectionSet Dim SS As AcadSelectionSet On Error Resume Next Set SS = ThisDrawing.SelectionSets(ssName) If Err Then Set SS = ThisDrawing.SelectionSets.Add(ssName) SS.Clear Set CreateSelectionSet = SS End Function
------------------ Roland 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. Feb. 2003 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
|
Dober Heinz Mitglied Technischer Zeichner
Beiträge: 1143 Registriert: 20.12.2002 Autocad 2020/64B Win10 WORKSTATION Intel(R) CPU E5-1620 3.60GHz 16,0GB Ram 64 Bit-Betriebssystem HP Designjet T7200 Grafik NVIDIA Quadro P4000 ZWCAD2019
|
erstellt am: 14. Feb. 2003 11:12 <-- editieren / zitieren --> Unities abgeben:
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 14. Feb. 2003 13:06 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
|
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. Feb. 2003 21:33 <-- editieren / zitieren --> Unities abgeben: Nur für Dober Heinz
|
Dober Heinz Mitglied Technischer Zeichner
Beiträge: 1143 Registriert: 20.12.2002 Autocad 2020/64B Win10 WORKSTATION Intel(R) CPU E5-1620 3.60GHz 16,0GB Ram 64 Bit-Betriebssystem HP Designjet T7200 Grafik NVIDIA Quadro P4000 ZWCAD2019
|
erstellt am: 17. Feb. 2003 07:45 <-- editieren / zitieren --> Unities abgeben:
|