Hot News aus dem CAD.de-Newsletter:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Ausgewählte Blöcke in Tabelle auflisten

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
Autor Thema:   Ausgewählte Blöcke in Tabelle auflisten (512 mal gelesen)
Frifer
Mitglied



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

Beiträge: 80
Registriert: 19.07.2012

i7 @x 3.5 mhz
16 GB Ram
win 10 Pro 64 Bit
GTX 560 Ti

erstellt am: 30. Jan. 2017 16:37    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 an alle!

Kann mir bitte jemand helfen einen VBA Script zu schreiben?

Ich müsste aus der aktiven Auswahl alle Blöcke rausfiltern, und in einer Tabelle auflisten.

In der Tabelle sollten Duplikate nicht vorhanden sein, und die Spalten sollten so sein:

Block (graphische Vorschau) , Block Name , Benutzerdefinierter Attribut "BESCHREIBUNG".

Dies sollte eine schnelle generierung einer Legende sein.


Vielen Dank,

MfG

Frifer

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

KlaK
Ehrenmitglied
Dipl. Ing. Vermessung, CAD- und Netz-Admin


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

Beiträge: 1931
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2017
Plateia, Canalis
Visual Basic

erstellt am: 30. Jan. 2017 17:04    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 Frifer 10 Unities + Antwort hilfreich

Hallo Frifer,

Wie weit bist Du denn mit Deinem Programm bzw. woran hapert es? (Selectionset, Elementzusammenstellen, Legende zeichnen)

Theoretisch könnte man das ja auch über Datenextraktion und Tabelle einfügen machen, allerdings dürfte es da schwierig mit der grafischen Darstellung werden.

Grüße
Klaus 

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: 18058
Registriert: 14.06.2002

erstellt am: 30. Jan. 2017 20:32    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 Frifer 10 Unities + Antwort hilfreich

Falls die Blockgeometrie was taugt für den Fall, so lässt sich eine Blockreferenz in der Zelle einfügen dafür.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

Frifer
Mitglied



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

Beiträge: 80
Registriert: 19.07.2012

i7 @x 3.5 mhz
16 GB Ram
win 10 Pro 64 Bit
GTX 560 Ti

erstellt am: 31. Jan. 2017 08:34    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 bin nun so weit, dass ich die Auswahl durchlaufe und falls es ein Block ist, dann lese ich die Attribute. Das Problem ist dass es versteckte Attribute nicht raus bekommt mit "GetAttributes".

Was dann noch fehlt, sobald ich dieses Problem behoben habe, ist duplikate entfernen, und in einer tabelle einfügen.

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

Frifer
Mitglied



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

Beiträge: 80
Registriert: 19.07.2012

i7 @x 3.5 mhz
16 GB Ram
win 10 Pro 64 Bit
GTX 560 Ti

erstellt am: 31. Jan. 2017 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

Ok, Attribute hab ich nun korrekt ausgelesen. Nun müsste ich die Tabelle einfügen. Dazu finde ich allerdings nichts.. Wie füge ich nun eine tabelle ein, und sorge dafür dass die erste Spalte einen block enthalten kann?

Danke!

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

KlaK
Ehrenmitglied
Dipl. Ing. Vermessung, CAD- und Netz-Admin


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

Beiträge: 1931
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2017
Plateia, Canalis
Visual Basic

erstellt am: 31. Jan. 2017 11:57    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 Frifer 10 Unities + Antwort hilfreich

Hallo Frifer,

Nachdem Du das sowieso programmgesteuert machst, würde ich hier einen neuen Block erzeugen.
Das hat den Vorteil dass Du diese "Tabelle" problemlos an eine andere Stelle schieben kannst.
Die benötigten Spaltenbreiten müßte man vorab über die .GetBoundingBox - Methode ermitteln
Bearbeiten könnte den der Anwender dann ohne Programm über den Block-Editor

Grüße
Klaus 

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

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 7706
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 31. Jan. 2017 13:26    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 Frifer 10 Unities + Antwort hilfreich

Möchtest Du denn (zu Übungszwecken oder so) das Rad neu erfinden oder langt Dir schon der Hinweis, dass es solche "Legendenerzeugungsprogramme" bereits mehrfach gibt?

Allerdings sind die meisten keine freeware, sollten sich aber dennoch rechnen, wenn man das öfter benötigt und gewisse Anforderungen hat, die einem die google-Suche jetzt nicht auf Anhieb liefert.

Hier wäre z.B. ein tool von cadstudio.cz als vlx4free http://www.cadforum.cz/cadforum_en/automatically-generated-picture-legend-of-drawing-blocks-tip6724


------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

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

Frifer
Mitglied



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

Beiträge: 80
Registriert: 19.07.2012

i7 @x 3.5 mhz
16 GB Ram
win 10 Pro 64 Bit
GTX 560 Ti

erstellt am: 31. Jan. 2017 13:47    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

Vielen Dank,

ich hab schon mehrere durchgeschaut die man im Internet findet, und keines von denen was ich gesehen und getestet hab macht genau was ich brauche. Entweder es ist keine Vorschau vorhanden oder man kann die Attribute nicht auslesen. Das ist der Grund weshalb ich es programmieren muss..

und hier ist was ich bisher hab.. Nun muss ich Zeilen in der Tabelle hinzufügen, scheint aber nicht zu funktionieren.

Code:

Sub Example_PickfirstSelectionSet()

Dim pfSS As AcadSelectionSet
Dim ssobject As AcadEntity
Dim msg As String
msg = vbCrLf

Dim vInsertionPoint As Variant
Dim lNumberOfRows As Long
Dim lNumberOfColumns As Long
Dim dRowHeight As Double
Dim dColumnWidth As Double
Dim oTable As AcadTable

With ThisDrawing.Utility
vInsertionPoint = .GetPoint(, vbCr & "Pick the insertion point: ")
lNumberOfRows = 1
lNumberOfColumns = 3
dRowHeight = 10
dColumnWidth = 100
End With


Set oTable = ThisDrawing.ModelSpace.AddTable(vInsertionPoint, lNumberOfRows, lNumberOfColumns, dRowHeight, dColumnWidth)

oTable.InsertRows(0, 10, 1)


' End If

  For Each elem In ThisDrawing.PickfirstSelectionSet
    With elem
      ' When a block reference has been found,
      ' check it for attributes
      If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then
        If .HasAttributes Then
          ' Get the attributes
         
          Array1 = .GetConstantAttributes

          MsgBox UBound(Array1)
          For count = LBound(Array1) To UBound(Array1)
         
         
            If Header = False Then
              If StrComp(Array1(count).EntityName, "AcDbAttribute", 1) = 0 Then
                msg = msg & vbCrLf & Array1(count).TagString
              End If
            End If
          Next count

       
          For count = LBound(Array1) To UBound(Array1)
          msg = msg & vbCrLf & Array1(count).TextString
           
          Next count

          Header = True
        End If
      End If
    End With
  Next elem

MsgBox "The Pickfirst selection set contains: " & msg

End Sub


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

KlaK
Ehrenmitglied
Dipl. Ing. Vermessung, CAD- und Netz-Admin


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

Beiträge: 1931
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2017
Plateia, Canalis
Visual Basic

erstellt am: 31. Jan. 2017 14:04    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 Frifer 10 Unities + Antwort hilfreich

Hallo Frifer,

Zum Code will ich zum jetzigen Zeitpunkt wenig sagen, außer dass das bisher sehr "rudimentär" ist 
Kannst Du mal eine Beispielzeichnung mit einigen Elementen für eine spätere Legende einstellen?
Muß es unbedingt eine Tabelle sein? Oder tut es ein Block auch?

Grüße
Klaus 

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

Frifer
Mitglied



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

Beiträge: 80
Registriert: 19.07.2012

i7 @x 3.5 mhz
16 GB Ram
win 10 Pro 64 Bit
GTX 560 Ti

erstellt am: 01. Feb. 2017 08:36    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


bsp.zip

 
Hallo KlaK!

Anbei ist eine Beispielzeichnung. Besser wäre schon eine Tabelle, da man schnell die Breite anpassen kann und evtw. gesisse spalten löschen kann falls notwendig.

Wenn die Blöcke bearbeitest, siehst die beiden werte "Beschreibung" und "Descrizione" die ich auslesen möchte.

Danke!

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)2018 CAD.de