| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Benannte Text-Variablen im Layout ? (1692 mal gelesen)
|
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 06. Dez. 2007 11:34 <-- editieren / zitieren --> Unities abgeben:         
Hallo. Kann ich in einem Layout Texte als benannte Variablen definieren, die ich in einem VBA-Makro abfragen kann? Ich meine, den Layoutnamen kann ich im Makro mit "ThisDrawing.ActiveLayout.Name" verwenden. Ich möchte nun darüberhinaus im Layout Texte mit variablem Inhalt benennen, z.B. mit dem Inhalt "Lageplan Blatt 1" oder "7.1". Im Makro möchte ich dann diese Inhalte verwenden können, z.B. unter den Benennungen "Planinhalt" bzw. "Anlagennummer". Geht das? Ich könnte mir als Hilfskonstruktionen vorstellen, dass VBA jeweils einen Text sucht, der an einer bestimmten Stelle steht oder der mit einer bestimmten Zeichenfolge anfängt, aber vielleicht geht es ja direkt... MfG, wwwilli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nemorem1 Mitglied

 Beiträge: 17 Registriert: 24.09.2007
|
erstellt am: 06. Dez. 2007 11:51 <-- editieren / zitieren --> Unities abgeben:          Nur für wwwilli
Aye das geht direkter, mit attdef also Attributen. Attribute haben Namen und einen Wert. Sie sind daher in VBA leicht wiederzufinden und zu ändern, ohne dass man bestimmte Koordinaten absuchen müsste. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 06. Dez. 2007 12:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo, guter Anfang. Vermutlich muss ich in VBA dann Objekte selektieren und alle mit .ObjectName = "AcDbAttributeDefinition" auf den richtigen .TagString testen. Noch einige Fragen bitte: - Ich will möglichst wenig Objekte durchsuchen müssen. Wie kriege ich nur die ACAD-Objekte des aktiven Layouts selektiert? Mit "sset.Select (acSelectionSetAll)" werden Elemente aus ALLEN Layouts und dem Modell ausgewählt. Oder gibt es eine Eigenschaft, die den Namen des Layouts angibt? - Kann so ein Attribut seinen "Wert" anzeigen und nicht die "Bezeichnung", oder beides? Oder muss ich diese beiden Felder dazu umgekehrt verwenden? MfG, wwwilli
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 07. Dez. 2007 10:35 <-- editieren / zitieren --> Unities abgeben:          Nur für wwwilli
Hallo wwwilli, jedes Layout wird in einem (als) Block verwaltet.
Code: For Each layout In ThisDrawing.Layouts Debug.Print layout.Name, layout.Block.Count For Each entity In layout.Block Debug.Print entity.ObjectName Next entity Next
Über Layout.Block kommst du an die Entitys eines Layouts.Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 09. Dez. 2007 22:25 <-- editieren / zitieren --> Unities abgeben:         
Hallo und danke. Layout/Block/Entity probier ich Mo oder Di. Weiß noch jemand was zur Wert-Anzeige bei Attributen? Oder muss ich in das Wesen der Attribute an und für sich tiefer einsteigen? MfG, wwwilli Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 10. Dez. 2007 10:36 <-- editieren / zitieren --> Unities abgeben:         
So, also, es scheint, ich muss das Attribut als Bestandteil eines Blocks definieren und ins DWG einfügen. Aber wie kommt VBA dann noch an die einzelnen Attributeigenschaften wieder dran (.TagString und .TextString)? MfG, wwwilli [Diese Nachricht wurde von wwwilli am 10. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 10. Dez. 2007 11:43 <-- editieren / zitieren --> Unities abgeben:         
|
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 10. Dez. 2007 12:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stelli, ich bekomme bei manchen DWG in der Schleife "For Each Entity" nach Durchlauf einiger Tausend Objekte immer einen Fehler, den ich nicht abfangen kann: "Laufzeitfehler '-2147221231(80040111)': Automatisierungsfehler; ClassFactory kann angeforderte Klasse nicht liefern." For Each entity In layout.Block Debug.Print entity.ObjectName Next entity 'hier fehler? Kann man die "Entities" irgendwie anders ansprechen? Mit .Item(i) von irgendwas? Dann könnte ich ein "Resume Next" benutzen, um evtl. fehlerhafte Objekte zu übergehen. Aber ich komme nicht drauf. MfG, wwwilli [Diese Nachricht wurde von wwwilli am 10. Dez. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 410 Registriert: 21.03.2006 ACAD MAP 3D 2012. VestraCAD. Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.
|
erstellt am: 11. Dez. 2007 13:10 <-- editieren / zitieren --> Unities abgeben:         
|