Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  auflistung blockreferenzen auf layouts

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  auflistung blockreferenzen auf layouts (1321 mal gelesen)
ritchie1
Mitglied



Sehen Sie sich das Profil von ritchie1 an!   Senden Sie eine Private Message an ritchie1  Schreiben Sie einen Gästebucheintrag für ritchie1

Beiträge: 25
Registriert: 10.10.2017

AutoCAD 2008, AutoCAD 2011

erstellt am: 13. Jul. 2018 08:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hallo,
ich möchte gerne alle blockreferenzen einer zeichnung (modellbereich sowie auf den einzelnen layouts) auflisten.
derzeit schaffe ich es aus dem modellbereich bzw. dem papierbereich.

    For Each entity In ThisDrawing.PaperSpace
        If LCASE(entity.ObjectName) = "acdbblockreference" Then

        End If
    Next entity


beim papierbereich werden aber nur die referenzen des aktuellen layouts zurückgegeben.
ich benötige aber alle referenzen auf den einzelnen layouts.
hat wer eine idee?

ritchie

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 13. Jul. 2018 08:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ritchie1 10 Unities + Antwort hilfreich

Hier mußt du ran: ThisDrawing.Layouts

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ritchie1
Mitglied



Sehen Sie sich das Profil von ritchie1 an!   Senden Sie eine Private Message an ritchie1  Schreiben Sie einen Gästebucheintrag für ritchie1

Beiträge: 25
Registriert: 10.10.2017

AutoCAD 2008, AutoCAD 2011

erstellt am: 13. Jul. 2018 09:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

mit

  For Each entity In ThisDrawing.Layouts
        If LCASE(entity.ObjectName) = "acdbblockreference" Then

        End If
  Next entity


erhalte ich runtime error 13: type mismatch

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ritchie1
Mitglied



Sehen Sie sich das Profil von ritchie1 an!   Senden Sie eine Private Message an ritchie1  Schreiben Sie einen Gästebucheintrag für ritchie1

Beiträge: 25
Registriert: 10.10.2017

AutoCAD 2008, AutoCAD 2011

erstellt am: 13. Jul. 2018 14:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

habs!

zuerst die layouts durchlaufen, nacheinander jedes layout als aktiv sezten, aktuelles layout als paperspace definieren, blockreferenzen auflisten ...

    For Each acLayout In ThisDrawing.Layouts
        'aktives Layout setzen
        ThisDrawing.ActiveLayout = acLayout
        Set acPaperSpace = Documents(0).PaperSpace
        'Paperspace des Layouts durchlaufen
        For Each entity In acPaperSpace
            If entity.ObjectName = "AcDbBlockReference" Then
                Debug.Print entity.ObjectName, entity.Name, entity.Handle
            End If
        Next entity
    Next acLayout

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 16. Jul. 2018 11:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ritchie1 10 Unities + Antwort hilfreich

Hallo ritchie,

ich weiß nicht, was du konkret vor hast, daher noch eine Anmerkung. Besser ist es, du fragst von den Blockdefinitionen die Blockreferenzen ab. Diese untersuchst du dann, auf welchem Layout sich diese befinden. Auf diesem Weg bekommst du auch die Referenzen heraus, die womöglich innerhalb anderer Blöcke verschachtelt sind.
Von den verschachtelten musst du dann natürlich recursiv durch die Verschachtelung nach oben gehen, und musst herausfinden, in welchem Layout die übergeordnete Blockreferenzen angezeigt werden.
Auf deinem Weg bekommst du ja nur die Referenzen heraus, die direkt im Layout eingefügt sind. Das mag für dich reichen, ist aber eben auch an die Bedingung geknüpft, dass niemand mit mehreren Verschachtelungsebenen arbeitet.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ritchie1
Mitglied



Sehen Sie sich das Profil von ritchie1 an!   Senden Sie eine Private Message an ritchie1  Schreiben Sie einen Gästebucheintrag für ritchie1

Beiträge: 25
Registriert: 10.10.2017

AutoCAD 2008, AutoCAD 2011

erstellt am: 18. Jul. 2018 19:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hallo holger,
hab ich doch geschrieben, dass ich die blockreferenzen abfrage :-). hab es nur umgekehrt gemacht. durchsuche die einzelnen layouts auf blockreferenzen.

ein zugriff auf alle blockreferenzen habe ich nicht geschafft, da ich vorher immer zuerst modelspace oder paperspace angeben muss und der paperspace bezieht sich immer nur auf das aktuelle layout.

zugriff auf alle blockreferenzen (unabhängig wo sie liegen) wäre natürlich schicker ...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz