| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Ausgewählte Blöcke in Tabelle auflisten (1335 / mal gelesen)
|
Frifer Mitglied
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 / zitieren --> Unities abgeben:
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 V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 30. Jan. 2017 17:04 <-- editieren / zitieren --> Unities abgeben: Nur für Frifer
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. 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Jan. 2017 20:32 <-- editieren / zitieren --> Unities abgeben: Nur für Frifer
|
Frifer Mitglied
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben:
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 V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 31. Jan. 2017 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für Frifer
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
Beiträge: 8086 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 / zitieren --> Unities abgeben: Nur für Frifer
|
Frifer Mitglied
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 / zitieren --> Unities abgeben:
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 V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 31. Jan. 2017 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für Frifer
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
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 / zitieren --> Unities abgeben:
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 |