| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Anfänger sucht Hilfe (1290 mal gelesen)
|
Big Sven Mitglied Techn. Angestellter
 
 Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 24. Jan. 2006 11:15 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forum! Ich bin ein VBA Neuling der sich jetzt ein weinig von Lisp umgewöhnen muss, da ein kleines Projekt diese Sprache benötigt. Mein 1. Problem: Ich möchte einen Text in Acad auswählen und den Inhalt später weiterverarbeiten. Leider stocke ich aber schon bei dem Auslesen des Textinhaltes. Mein Programmcode: Public Sub TextCopy() Dim Prompt As String Dim Object As Object Dim UebergabeText As String On Error Resume Next Prompt = "Wählen Sie ein Quelltext:" ThisDrawing.Utility.GetEntity Object, PickedPoint, Prompt If TypeName(Object) = "AcadText" Then UebergabeText = AcadText.TextString End If End Sub Hat jemand einen Tipp, wie ich in Uebergabetext den Inhalt hereinbekomme. Bitte nicht auslachen, sonst muss ich wieder lisp'eln. Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 24. Jan. 2006 11:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
Zitat: Original erstellt von Big Sven:
Public Sub TextCopy() Dim Prompt As String Dim Object As Object Dim UebergabeText As String On Error Resume Next Prompt = "Wählen Sie ein Quelltext:" ThisDrawing.Utility.GetEntity Object, PickedPoint, Prompt If TypeName(Object) = "AcadText" Then UebergabeText = AcadText.TextString End If End Sub
paar Sachen mal, nimm' das 'On Error Resume Next' raus, dann kommt auch der Debugger und sagt Dir wo es harkt. Weiters, Dim Object As Object ist IMHO weder besonders kreativ noch eine gute Idee;-) PickedPoint fehlt völlig, hier wird eine Variantvariable erwartet, und dann noch UebergabeText = AcadText.TextString hier musst Du dein Object angeben, nicht den Typename dessen. Setz dir ggf auch mal ein F1 auf getentity und acadtext, acadMtext Gruss Nancy --
Code:
Public Sub TextCopy() Dim ObjText As Object Dim UebergabeText As String Dim p As Variant ThisDrawing.Utility.GetEntity ObjText, p, "Wählen Sie ein Quelltext:" 'dtext If TypeName(ObjText) = "IAcadText2" _ Or TypeName(ObjText) = "IAcadMText2" Then 'oder mtext UebergabeText = ObjText.TextString Debug.Print UebergabeText End If End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Big Sven Mitglied Techn. Angestellter
 
 Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 24. Jan. 2006 15:21 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nancy! Vielen Dank für Deinen Tipp! Hat mir wirklich sehr geholfen. Kannst Du mir jetzt auch noch sagen, wie ich einen zweiten Text durch Auswählen mit dieser Information befüllen kann? Ich dachte da an: ThisDrawing.Utility.GetEntity ObjText2, p2, "Wählen Sie einen Zieltext:" If TypeName(ObjText2) = "IAcadText2" Then ObjText2 = TextString.UebergabeText End If Das funktioniert auch nicht so recht. Und ich habe immer gehört, dass VBA viel einfacher als Lisp sein soll!?! Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 24. Jan. 2006 15:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
Hi Sven, nur gelesen, ehm du verdrehst da etwas;-) Du hast ein AcadTextObject [ObjText2], also ein Objekt. Objekte haben Eigenschaften, wie zum Bsp. hier die Property .Textstring, also muss es heissen >>> Object.Property = Value, bzw:
Code:
ObjText2.Textstring = uebergabetext ''oder, wenn ObjText1 noch im Speicher ist, gleich ObjText2.textstring = ObjText1.textstring
Und ja, letzteres hab ich auch gehört ;;;-))))Gruss Nancy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Big Sven Mitglied Techn. Angestellter
 
 Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 25. Jan. 2006 12:11 <-- editieren / zitieren --> Unities abgeben:         
Hallo, jetzt möchte ich, dass auch ausgewählte Attribute mit ausgelesen werden. Nur wie stelle ich das an? Mein Ansatz wäre: If TypeName(ObjText) = "IAcadBlockReference" Then If ObjText.HasAttributes = True Then End If End If Da die Blöcke mit den Attributen grundsätzlich mehrere Attribute haben komme ich nicht mit AcadAttributeReference.Visible weiter. Der TextAligmentPoint könnte mir helfen, wenn ich in der Nähe dieses Punktes geklickt hätte. Gibt es mit VBA überhaupt die Möglichkeit, genau das ausgewählte Objekt eines Blockes auszugeben? Vielen Dank für die Hilfe! Gruß Sven 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: 25. Jan. 2006 12:30 <-- editieren / zitieren --> Unities abgeben:          Nur für Big Sven
|

| |
Big Sven Mitglied Techn. Angestellter
 
 Beiträge: 133 Registriert: 14.09.2005
|
erstellt am: 25. Jan. 2006 15:49 <-- editieren / zitieren --> Unities abgeben:         
|