| |
 | 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: Attribute - Schriftkopf ausfüllen (3340 mal gelesen)
|
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 05. Jul. 2005 14:41 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen, in meinem VBA Programm habe ich von einem Oracle Datenbank Informationen wie z.B. Benennung / Zeichnungsnummer etc in Textfelder ausgelesen. Wie kann ich auf die Attribute in meinem Schriftfeld zugreifen? Ich möchte meinen Schriftfeld "automatisch" ausfüllen lassen. Danke für jede Unterstützung Schöne Grüße Feyza : ) ------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur

 Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 05. Jul. 2005 14:57 <-- editieren / zitieren --> Unities abgeben:          Nur für Feyza
|
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 06. Jul. 2005 08:44 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas, danke für Deinen Eintrag: ) okay...... der Code vom Link: Function getGentitleXyz() As Variant Dim Cola As Collection Dim Objekt As AcadObject Set Cola = New Collection For Each Objekt In acadApp.ActiveDocument.ModelSpace If Objekt.ObjectName = "AcDbBlockReference" Then If Objekt.Name = "GENTITLE_Xyz" Then Cola.Add Objekt End If End If Next Dim BlockRef As AcadBlockReference Set BlockRef = Cola(1) getGentitle_Xyz = BlockRef.GetAttributes End Function Entweder stelle ich mich richtig an, aber bei mir funktioniert das irgendwie nicht: statt dem GENTITLE_Xyz habe ich mit BENENNUNG_1.ZEILE: ersetzt. Darf bei der Attributbezeichung keine Sonderzeichen verwenden? Vielleicht noch eine klitzekleine Unterstützung ?! Schöne Grüße Feyza : ) ------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur

 Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 06. Jul. 2005 09:18 <-- editieren / zitieren --> Unities abgeben:          Nur für Feyza
|
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 06. Jul. 2005 12:09 <-- editieren / zitieren --> Unities abgeben:         
Nochmal zur Verständnis: GENTITLE_Xyz ist der Attributwert was ist genau mit AcDbBlockReference BlockRef.GetAttributes gemeint? Mein Block heisst man_mf_01 und in diesem Block befindet sich z.B. Attribut GEN
------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 06. Jul. 2005 12:26 <-- editieren / zitieren --> Unities abgeben:         
Mein versuchter Code: Function getGEN() As Variant Dim Cola As Collection Dim Objekt As AcadObject Set Cola = New Collection For Each Objekt In acadApp.ActiveDocument.ModelSpace If Objekt.ObjectName = "AcDbBlockReference" Then If Objekt.Name = "man_mf_01" Then Cola.Add Objekt End If End If Next Dim BlockRef As AcadBlockReference Set BlockRef = Cola(1) getGEN = BlockRef.GetAttributes End Function Private Sub cmdACADblock_Click() txt1.Text = getGEN End Sub ------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 06. Jul. 2005 13:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Feyza
Hi Feyza, text1.text=getgen ? getgen liefert Dir ein Variant/Array (0 to -1), also leer, da Cola(1) keine Attribute besitzt. Ich verstehe blos nicht, willst Du auf vorhandene Attribute zugreifen oder welche hinzufügen und wozu das Collection? Mal fix als Beispiel, wie Du an den Wert des Attributes "BEZEICHNUNG1" kommst:
Code:
Sub asdf() Debug.Print getGEN("Bezeichnung1") End SubFunction getGEN(tag_string As String) As String Dim Objekt As AcadObject, myAtts, att For Each Objekt In ActiveDocument.ModelSpace If Objekt.ObjectName = "AcDbBlockReference" Then If Objekt.Name = "myblock" Then If Objekt.HasAttributes Then _ myAtts = Objekt.GetAttributes For Each att In myAtts If att.TagString = UCase(tag_string) Then getGEN = att.TextString Exit For End If Next End If End If Next End Function
HTH  Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 06. Jul. 2005 14:21 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nancy, danke Dir für den COde. Ich kann aus meinem Shcriftkopf die Daten in Textfelder füllen. Aber ich möchte meinen Schriftkopf mit den vorhandenen Daten, die ich von einer Datenbank geholt habe und diese in Textfelder eingelesen habe, den Schriftkopf ausfüllen. Schöne Grüße Feyza : ) ------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 06. Jul. 2005 15:13 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nancy, jetzt ist aber einanderes Problem aufgetreten. GEN-TITLE-NR{13.37} kann ich in meinem Textfeld nicht einlesen wenn ich diesen Attribut umbenenne als gentitlenr, als irgendwelche Sonderzeichen, geht es. txt1.Text = getGEN("GEN-TITLE-NR{13.37}") Wie könnt eman hier die SOnderzeichen mit einbinden? Schöen Grüße Feyza : ) ------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 06. Jul. 2005 15:41 <-- editieren / zitieren --> Unities abgeben:          Nur für Feyza
Ach Feyza, na andersrum gehts doch [fast] genauso ;-) Mal ohne Function und die Attribute heissen so wie die Textboxen, naja oder von mir aus auch umgekehrt;-) BTW , die Sache mit den Sonderzeichen ... kann ich im Moment irgendwie nicht so nachvollziehen
Code:
Private Sub CommandButton1_Click() Dim tb, box tb = Array("Textbox1", "Textbox2") Dim Objekt As AcadObject, myAtts, att For Each Objekt In ActiveDocument.ModelSpace If Objekt.ObjectName = "AcDbBlockReference" Then If Objekt.Name = "block" Then If Objekt.HasAttributes Then _ myAtts = Objekt.GetAttributes For Each att In myAtts For Each box In tb If att.TagString = UCase(box) Then _ att.TextString = Controls(box).Text Next Next Exit For End If End If Next Unload Me End Sub
Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 06. Jul. 2005 16:03 <-- editieren / zitieren --> Unities abgeben:         
|
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 06. Jul. 2005 16:25 <-- editieren / zitieren --> Unities abgeben:          Nur für Feyza
|
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 12. Jul. 2005 13:28 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nancy, das mit den SOnderzeichen habe ich irgendwie geklärt. Wenn man den Namen vom Block "klein" schreibt, obwohl er eigentlch auch klein geschrieben eingefügt wird, ist es in AutoCAD Großgeschrieben gewesen, macht er die Sonderzeichen nicht mit. Wenn man den Block groß schreibt, nimmt er wirklich die Sonderzeichen mit ?!?!?!? Irgendwie komme ich nicht weiter, von meinem Textfeld die Eingaben in das Schriftkopf zu bekommen. Dim tb, box tb = Array("txtBen") Dim Objekt As AcadObject, myAtts, att For Each Objekt In ActiveDocument.ModelSpace If Objekt.ObjectName = "AcDbBlockReference" Then If Objekt.Name = "MAN_MF_01" Then If Objekt.HasAttributes Then _ myAtts = Objekt.GetAttributes For Each att In myAtts For Each box In tb If att.TagString = UCase(box) Then _ txtBen.Text = "BENENNUNG_1.ZEILE:" Next Next Exit For End If End If Next 'Unload Me End Sub Schöne Grüße Feyza : ) ------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 13. Jul. 2005 12:31 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nancy, kannst Du Dir bitte diesen Code anschauen. Was ist hier noch nicht in Ordnung? Private Sub cmdACADblock_Click() '------------------------------------------------------------------- ' Schriftkopf ausfüllen '------------------------------------------------------------------- att1 = ("BENENNUNG_1.ZEILE:") att2 = ("BENENNUNG_2.ZEILE:") att3 = ("BEMERKUNG_1.ZEILE:") att4 = ("BEMERKUNG_2.ZEILE:") att5 = ("GEN-TITLE-NR{13.37}") att6 = ("GEN-TITLE-SHEET{2.62}") att7 = ("ÄNDERUNGSINDEX:") att8 = ("POSITION:") att1 = getacad("txtBen") att2 = getacad("txtBen1") att3 = getacad("txt5") att4 = getacad("txt6") att5 = getacad("txt1") att6 = getacad("txt4") att7 = getacad("txtIndex") att8 = getacad("txtPos") End Sub
Function getacad() As Variant Dim Cola As Collection Dim Objekt As AcadObject Set Cola = New Collection For Each Objekt In acadApp.ActiveDocument.ModelSpace If Objekt.ObjectName = "AcDbBlockReference" Then If Objekt.Name = "MAN_MF_01" Then Cola.Add Objekt End If End If Next Dim BlockRef As AcadBlockReference Set BlockRef = Cola(1) getacad = BlockRef.GetAttributes End Function Danke im Voraus.
Schöne Grüße Feyza : ) ------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 13. Jul. 2005 12:41 <-- editieren / zitieren --> Unities abgeben:         
.....Und wenn ich Dein Code anpasse ( denke ich : ) ) Private Sub cmdACADblock_Click() Dim tb, box tb = Array("txtBen", "txtBen1", "txt5", "txt6", "txt1", "txt4" _ , "txtIndex", "txtPos") Dim Objekt As AcadObject, myAtts, att For Each Objekt In ActiveDocument.ModelSpace If Objekt.ObjectName = "AcDbBlockReference" Then If Objekt.Name = "MAN_MF_01" Then If Objekt.HasAttributes Then _ myAtts = Objekt.GetAttributes For Each att In myAtts For Each box In tb If att.TagString = UCase(box) Then _ att.TextString = Controls(box).Text Next Next Exit For End If End If Next 'Unload Me att1 = ("BENENNUNG_1.ZEILE:") att2 = ("BENENNUNG_2.ZEILE:") att3 = ("BEMERKUNG_1.ZEILE:") att4 = ("BEMERKUNG_2.ZEILE:") att5 = ("GEN-TITLE-NR{13.37}") att6 = ("GEN-TITLE-SHEET{2.62}") att7 = ("ÄNDERUNGSINDEX:") att8 = ("POSITION:") att1 = txtBen att2 = txtBen1 att3 = txt5 att4 = txt6 att5 = txt1 att6 = txt4 att7 = txtIndex att8 = txtPos
End sub kommt zwar keine Fehlermeldung, aber es passiert auch nichts. ------------------  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 13. Jul. 2005 21:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Feyza
Hi Feyza, vergiss die Kiste mit dem Array of the boxes Nimm's leicht - nimm select case und gut is;-) Habs nicht probiert, nur mal als prinzipielles Beispiel, wobei halt die Käsesorten die Attributsbezeichnungen darstellen sollen:
Code:
For Each att In myAtts select case att.tagstring case is = "Edamer": att.textstring=txtben.text case is = "Gouda": att.textstring=txtben1.text case is = "Camembert": att.textstring=txtirgendwasandres.txt end select Next
Keine Ahnung was du mit dem att1, att2, att3 ... am Ende erreichen wolltest, ausser dass Du halt att1 = "Jacke" machst um es gleich wieder mit att1 = "Hose" zu überschreiben. Na egal, vielleicht hab's ich auch nicht ganz gerafft, probiers nochmal mit der Käseauswahl ...;-) lg Nancy
[Diese Nachricht wurde von startrek am 13. Jul. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
  
 Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2017 - Oracle Client 10.2
|
erstellt am: 14. Jul. 2005 08:42 <-- editieren / zitieren --> Unities abgeben:         
|