Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Anfänger sucht Hilfe

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Big Sven an!   Senden Sie eine Private Message an Big Sven  Schreiben Sie einen Gästebucheintrag für Big Sven

Beiträge: 133
Registriert: 14.09.2005

erstellt am: 24. Jan. 2006 11:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 24. Jan. 2006 11:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Big Sven 10 Unities + Antwort hilfreich

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 IMHOIn my humble oppinion (Meiner Meinung nach) 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


Sehen Sie sich das Profil von Big Sven an!   Senden Sie eine Private Message an Big Sven  Schreiben Sie einen Gästebucheintrag für Big Sven

Beiträge: 133
Registriert: 14.09.2005

erstellt am: 24. Jan. 2006 15:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 24. Jan. 2006 15:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Big Sven 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Big Sven an!   Senden Sie eine Private Message an Big Sven  Schreiben Sie einen Gästebucheintrag für Big Sven

Beiträge: 133
Registriert: 14.09.2005

erstellt am: 25. Jan. 2006 12:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Big Sven 10 Unities + Antwort hilfreich

Hallo Sven,

einen Teil eines Blockes wählen geht mit:
ThisDrawing.Utility.GetSubEntity

sieh auch mal hier

Stelli

------------------
Warum lisp'eln wenn's auch anders geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Anzeige:Infos zum Werbeplatz >>

LAYOUT CAD APP für AEC - Architektur-, Ingenieur- und Bauwesen

LAYOUT = ein Werkzeug für die Erstellung von Signallageplänen

Big Sven
Mitglied
Techn. Angestellter


Sehen Sie sich das Profil von Big Sven an!   Senden Sie eine Private Message an Big Sven  Schreiben Sie einen Gästebucheintrag für Big Sven

Beiträge: 133
Registriert: 14.09.2005

erstellt am: 25. Jan. 2006 15:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Stelli,

Dein Link hat mir sehr weitergeholfen.

Vielen Dank!

Gruß Sven

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz