| |
 | 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: mehrere Layouts mit Schriftfeldern (1509 mal gelesen)
|
vittorio0 Mitglied

 Beiträge: 35 Registriert: 13.07.2009 AutoCAD 2009, 2011, Access 2003
|
erstellt am: 22. Nov. 2012 23:35 <-- editieren / zitieren --> Unities abgeben:         
Liebes Forum, Mittels VBA hab schreibe ich die Attribute einer Form in das Schriftfeld das in einem Layout vorhanden ist. Das funktioniert auch solange nur ein Layout vorhanden ist. Erstelle ich ein 2. Layout das dasselbe Schriftfeld benutzt kann ich weder vom Schriftfeld Lesen oder ins Schriftfeld schreiben. Wie unterscheidet man in welches Schriftfeld man schreibt mit VBA code? Danke für Eure Hilfe.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH

 Beiträge: 4191 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 23. Nov. 2012 14:44 <-- editieren / zitieren --> Unities abgeben:          Nur für vittorio0
|
vittorio0 Mitglied

 Beiträge: 35 Registriert: 13.07.2009 AutoCAD 2009, 2011, Access 2003
|
erstellt am: 23. Nov. 2012 14:57 <-- editieren / zitieren --> Unities abgeben:         
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH

 Beiträge: 4191 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 23. Nov. 2012 15:59 <-- editieren / zitieren --> Unities abgeben:          Nur für vittorio0
... und wie greifst du auf die Blockreferenz zu? Da wäre mal ein Code-Ausschnitt ganz gut, um zu sehen, von wo du die ObjectId der zu bearbeitenden Blockreferenz holst und wie du dann auf die Attribute zugreifst. (So ganz kann ich mir nicht erklätren, weshalb das Hinzugügen einer weiteren Blockreferenz dazu führen soll, dass nichts mehr zu ändern geht ???) 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 |
vittorio0 Mitglied

 Beiträge: 35 Registriert: 13.07.2009 AutoCAD 2009, 2011, Access 2003
|
erstellt am: 24. Nov. 2012 17:25 <-- editieren / zitieren --> Unities abgeben:         
Hallo Holger Hier der code der mit einem Layout funktioniert. Wenn ich wüsste wie man sagt ins aktuelle Layout schreiben, würde das funktionieren. Code: Private Sub btnAttrToDwg_Click() ' Editierte Attribute zurück in Block schreiben ' MsgBox "Schriftfeldname zur Zeichnung " & ThisDrawing.GetVariable("dwgname"), vbInformation, "Schriftfeldname ist: " & SF ' Update the attribute values On Error GoTo err_control
Dim EntGrp(1) As Integer Dim EntPrp(1) As Variant EntGrp(0) = 0 EntPrp(0) = "INSERT" EntGrp(1) = 2 EntPrp(1) = "SF1,SF2" ' Schriftfeld SF1 oder SF2 suchen ' create a selection set On Error Resume Next Set ssnew = ThisDrawing.SelectionSets("TBLK") If Err.Number Then Set ssnew = ThisDrawing.SelectionSets.Add("TBLK") End If On Error GoTo 0 ' finde den Block ssnew.Select acSelectionSetAll, , , EntGrp, EntPrp 'If a block is found If ssnew.Count >= 1 Then MsgBox "Es sind " & ssnew.Count & " Blöcke in der Zeichnung vorhanden.", vbInformation, "Gefundene Blöcke..." Else MsgBox "kein Schriftfeld gefunden.", vbInformation, "update Schriftfeld..." Exit Sub End If 'Get the block's attributes tatts = ssnew.Item(0).GetAttributes SF = ssnew.Item(0).Name SF = UCase(SF) ' Show message Select Case SF Case "SF2", "SF2" 'MsgBox SF & " wurde gefunden.", vbInformation, "Name des Schriftfeldes: " & SF End Select Select Case SF Case "SF1" 'MsgBox "SF1 erkannt", , "SF1 wird geschrieben..." tatts(0).TextString = Nz(frmEditAttr.F0.Text, "") 'Zeichnungsnummer tatts(1).TextString = Nz(frmEditAttr.F2.Text, "") 'Titelzeile tatts(2).TextString = Nz(frmEditAttr.F39.Text, "") 'Untertitel 1 tatts(3).TextString = Nz(frmEditAttr.F52.Text) 'Untertitel2 tatts(4).TextString = Nz(frmEditAttr.F3.Text) 'Zeichnungspfad tatts(5).TextString = Nz(frmEditAttr.F62.Text, "") 'Zeichner Case "SF2"
'MsgBox "SF2 gefunden", , "Schriftfeld SF2 wird geschrieben..." . . . ' usw
End Select 'update the block ssnew.Item(0).Update Me.Infoline = "Attribute wurden in den Zeichnungskopf übertragen und Zeichnung gesichert" ThisDrawing.Save exit_sub: Exit Sub err_control:
MsgBox Err.Number & " : " & Err.Description & " in Routine btnAttrToDwg_Click()" Me.Infoline = "Fehler beim Schreiben zur Zeichnung..." GoTo exit_sub End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH

 Beiträge: 4191 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 24. Nov. 2012 19:58 <-- editieren / zitieren --> Unities abgeben:          Nur für vittorio0
Hallo, Du musst einen SelectionSet-Filter definieren, der nur auf dem aktuellen Layout sucht. Das müsste der 410 er Gruppencode sein, das aktuelle Layout bekommst du über ein SysVar clayout? 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 |
vittorio0 Mitglied

 Beiträge: 35 Registriert: 13.07.2009 AutoCAD 2009, 2011, Access 2003
|
erstellt am: 02. Dez. 2012 10:55 <-- editieren / zitieren --> Unities abgeben:         
Hallo, wie würde ich so ein SelectionSet-Filter definieren, dass in meinem Beispiel nur im jeweiligen activen Layout die in der Liste aufgeführten Blockreferenzen gefunden werden? So wie der code jetzt ist, nimmt er immer das letzte Layout, egal ob ich in Layout1, 2 oder 3 bin. Besten Dank!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH

 Beiträge: 4191 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 02. Dez. 2012 22:00 <-- editieren / zitieren --> Unities abgeben:          Nur für vittorio0
|