| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Zugriff auf Rasterbild (937 mal gelesen)
|
dimpflmoser Mitglied

 Beiträge: 12 Registriert: 17.01.2008
|
erstellt am: 22. Sep. 2008 19:05 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, in meiner Zeichnung ist ein Rasterbild angehängt (z. B. RasterName) - nun möchte ich dieses per VBA-Code löschen. Kann mir jemand einen Kursschnipsel zeigen, wie ich Zugriff auf das Objekt bekomme und dieses dann lösche? Danke Helmut Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer

 Beiträge: 9807 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 22. Sep. 2008 21:08 <-- editieren / zitieren --> Unities abgeben:          Nur für dimpflmoser
Hallo dimfplmoser, ist das Bild als OLE Objekt eingefügt, oder als Bild extern referenziert (Befehl EXTERNREF bzw. BILDZUORDNEN) oder als bitonales Bild mit Autodesk Rasterdesign eingebettet? Soll die Datei von der Festplatte gelöscht werden, oder soll die Bild-Einfügung lediglich aus der AutoCAD Zeichnung gelöscht werden oder soll die Definition aus der Zeichnung entfernt werden? Das betreffende Objekt und seine Methoden findet man im Objektkatalog unter AcadRasterImage. Ein Beispiel, welches evt. deine Frage beantwortet: Code: Sub deleteAllRasterImages()Dim obj As Object Dim image As AcadRasterImage For Each obj In ThisDrawing.ModelSpace If TypeOf obj Is AcadRasterImage Then Set image = obj image.Delete End If Next End Sub
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer

 Beiträge: 9807 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 22. Sep. 2008 21:34 <-- editieren / zitieren --> Unities abgeben:          Nur für dimpflmoser
Oder evt. ist dieses Codeschnipsel interessant: Code: Sub ListImages_AcadFileDependencies() Dim objFileDepCol As AutoCAD.AcadFileDependencies Dim objFileDep As AutoCAD.AcadFileDependency Set objFileDepCol = ThisDrawing.FileDependencies Dim strTemp As String For Each objFileDep In objFileDepCol If objFileDep.Feature = "Acad:Image" Then objFileDepCol.UpdateEntry objFileDep.Index strTemp = "Dateiname: " & vbTab & objFileDep.FileName strTemp = strTemp & vbCrLf & "Dateigröße: " & vbTab & _ vbTab & objFileDep.FileSize MsgBox strTemp End If Next End Sub
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dimpflmoser Mitglied

 Beiträge: 12 Registriert: 17.01.2008
|
erstellt am: 23. Sep. 2008 09:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo Herr Hübner, vielen Dank für Ihre schnelle Antwort. Der erste Code-Schnipsel ist sehr interessant. Mein Problem ist, dass die Zeichnungen, mit denen ich arbeite aus mehreren 10000 Objekten bestehen. Ich hatte vergeblich versucht mit folgendem Code weiterzukommen: Dim objRasterImg As Object Set objRasterImg.ObjectName = GetObject(strRasterName) objRasterImg.Delete Kann man den Code irgendwie retten? Danke Helmut Seidel 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: 23. Sep. 2008 09:31 <-- editieren / zitieren --> Unities abgeben:          Nur für dimpflmoser
|
dimpflmoser Mitglied

 Beiträge: 12 Registriert: 17.01.2008
|
erstellt am: 23. Sep. 2008 09:47 <-- editieren / zitieren --> Unities abgeben:         
Hallo Carsten, nein, es sind nur einige Bilder enthalten. Auch wenns dumm klingt (bin ziemlich neu in Acad-Vba), wie kann ich denn ein SelectionSet bilden, das alle Bilder enthält? Nochmal danke und sorry ... Helmut 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: 23. Sep. 2008 09:58 <-- editieren / zitieren --> Unities abgeben:          Nur für dimpflmoser
Hi Helmut, Hier mal ein Selectionset für Bilder: Code: Sub Ch4_Filtertest() Dim sset As AcadSelectionSet Dim FilterType(0) As Integer Dim FilterData(0) As Variant On Error Resume Next ThisDrawing.SelectionSets.Item("SS2").Delete Set sset = ThisDrawing.SelectionSets.Add("SS2") FilterType(0) = 0 FilterData(0) = "Image" sset.Select acSelectionSetAll, , , FilterType, FilterData End Sub
Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dimpflmoser Mitglied

 Beiträge: 12 Registriert: 17.01.2008
|
erstellt am: 23. Sep. 2008 16:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo Carsten, super - oder fast. Ich hab jetzt mit deiner Hilfe denfolgenden Code zusammengebaut: On Error Resume Next ThisDrawing.SelectionSets.Item("SS2").Delete Set sset = ThisDrawing.SelectionSets.Add("SS2") FilterType(0) = 0 FilterData(0) = "Image" sset.Select acSelectionSetAll, , , FilterType, FilterData ' SelectionSet durchlaufen For Each objRasterImg In sset ' Testen, ob gesuchtes Image If objRasterImg.name = strRasterName Then ' Raster löschen objRasterImg.Delete ' FileSystem-Objekt erstellen Set objFso = CreateObject("Scripting.FileSystemObject") ' Testen, ob die Datei vorhanden ist If objFso.FileExists(strRasterPath) Then objFso.DeleteFile strRasterPath objRasterImg.Update End If End If Next Das funktioniert scheinbar. Das Raster wird nicht mehr angezeigt und die Datei wird gelöscht. Allerdings wird das Raster nur in der Anzeige gelöscht. In der Bilderverwaltung bleibt das Bild allerdings vorhanden? Krieg ich die auch noch raus? Nochmal Danke Helmut
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |