Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Wert eines Textfeldes auslesen

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
  
PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
Autor Thema:  Wert eines Textfeldes auslesen (2801 mal gelesen)
blacky1985
Mitglied
Application Engineer


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

Beiträge: 348
Registriert: 16.04.2008

erstellt am: 18. Sep. 2008 20:05    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


drawing.zip

 
Hallo,

ich wollte mal Fragen wie der genaue API-Aufruf für VB.NET lautet um bei einer geöffneten ACAD-Zeichnung den Wert eines Textfeldes auszulesen.

Beispielsdatei lege ich diesem Beitrag als ZIP-Anlage bei, damit ihr euch auch die DWG ansehene könnt in der nur ein Objekt vorhanden ist, nämlich dieses, von dem ich gern den Text ausgelesen hätte. Wäre super, wenn mir jemand weiterhelfen könnte. Bin etwas am verzweifeln gerade wie ich den Wert auslesen kann, da ich es irgendwie nicht hinbekomme den Wert auszulesen bzw. daran zu kommen. Danke im Voraus für eure Hilfe.

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 18. Sep. 2008 20:26    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 blacky1985 10 Unities + Antwort hilfreich

Hallo blacky1985,
wo liegt denn das Problem?
Hast Du die Application schon geöffnet?
Kannst Du auf die Zeichnung zugreifen?

Schreib doch mal wo das Problem liegt.

Grüße,
Klaus

PS.: Es gibt auf CAD.de auch das
VBasic / vb.net / vbs / wsh
Diskussionen rund um VBasic / vb.net / Visual Basic Script und Windows Script Host ..

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

blacky1985
Mitglied
Application Engineer


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

Beiträge: 348
Registriert: 16.04.2008

erstellt am: 19. Sep. 2008 07:10    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

Also ich hab die DWG-Zeichnung in ACAD bereits geöffnet, kann auch über die APi-Schnittstelle ohne Probleme auf das geöffnete Document zugreifen...z.B.

Code:
oDrawDoc = oApp.Document

Mein Problem ist, wie kann ich über die API den Inhalt des Schriftfeldes auslesen ? Also wie komme ich daran. Hatte mal was in der Art versucht mit

Code:
oDrawdoc.ModelSpace.Item(0)

weil es ja nur ein Element im Beispiel gibt, daher die Item[0], aber dann bin ich nicht mehr weitergekommen und habe keine Möglichkeit mehr gesehen den Inhalt des Textfeldes auszulesen. Möglicherweise habe ich auch hier shcon den falschen Lösunsgansatz. Bin nicht so fit und noch recht unerfahren in Sachen ACAD-API.

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


Ex-Mitglied

erstellt am: 19. Sep. 2008 07:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

hi blacky,

gibt ein paar sachen dazu zu sagen.

a) mit .net kannst du ueber mangaged-access auf die applikation/documents/elemente/... hingreifen, das geht schneller, ist aber ein wenig mehr programmierung

b) mit .net kannst du ueber com-interface arbeiten, ist schneller programmiert, aber doch langsamer, also bei grossen datenmengen eher obiges.

c) am modelspace koennen nicht-sichtbare elemente liegen, damit ist die vermutung, dass du mit .item(0) dein erstes gezeichnetes element bekommst, eben hinfaellig. du kannt probieren
Debug.Print oDrawDoc.ModelSpace.Item(0).ObjectName    'gibt den autocad-internen klassennamen des objekts aus

du hast fuer vba beispiele im programmverzeichnis installiert, wenn du .net-managed arbeiten willst, empfehle ich von autodesk die objectarx-lib's downzuloaden, denn in diesem sind beispiele fuer managed-code enthalten.

- alfred -

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: 19. Sep. 2008 10: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 blacky1985 10 Unities + Antwort hilfreich

Hallo,

ich glaube das Problem liegt schon im Ansatz. Wie willst du aus einer Adressdatei die Adresse selektieren wenn du kein Suchkriterium hast. Ich glaube, es ist fragwürdig sich darauf zu verlassen das es immer die Erste ist.
Irgendeine eindeutige Eigenschaft (Layer, Farbe, Blockname, Inhalt etc.) sollte dein Objekt (Text) schon haben. Dann kannst du, mal unabhängig ob in VB/A/.net, eine Selektion machen.

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

Benny4
Mitglied
Softwareentwickler


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

Beiträge: 178
Registriert: 16.02.2006

AutoCAD 2010
ZW-CAD 2012

erstellt am: 19. Sep. 2008 11:13    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 blacky1985 10 Unities + Antwort hilfreich

Hi,

ich hab das mal so gemacht, vielleicht hilft das ja weiter:

Code:

Sub getTextFromDrawing()
Dim i As Integer

    For i = 0 To ThisDrawing.ModelSpace.Count - 1
        If UCase(ThisDrawing.ModelSpace.Item(i).objectName) = "ACDBMTEXT" Or UCase(ThisDrawing.ModelSpace.Item(i).objectName) = "ACDBTEXT" Then
            MsgBox "Der Text lautet: " & ThisDrawing.ModelSpace.Item(i).TextString
        End If
    Next
End Sub


------------------
Grüsse Benny

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

blacky1985
Mitglied
Application Engineer


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

Beiträge: 348
Registriert: 16.04.2008

erstellt am: 19. Sep. 2008 11:24    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


1.jpg


2.jpg

 
Ich glaube ich hab das einfach viel zu kompliziert und missverständlich euch erklärt. Vielleicht wird es etwas klarer, wenn ich es nochmals versuche einfacher zu erklären, was ich genau machen will.

Angenommen ich habe eine ACAD-Zeichnung, auf der mehrere Elemente vom Typ "Text" in ACAD selbst eingetragen sind. Dann kann ich in ACAD selber ja z.B. das Textelement anklicken und über die Objekteigenschaften die entsprechenden Eigenschaften abrufen. Dort steht dann bei Inhalt ja u.a. der Wert den das Textfeld enthält.
(siehe auch neue Screenshots)

Ziel ist es, dass ich alle vorhandene Textfelder auf der Zeichnung durchlaufen will, dort den Inhalt, also den Text auslesen will und diesen mit dem Dateinamen der geöffneten Zeichnung vergleichen muss, um festzustellen ob irgendwo auf der Zeichnung der Dateiname der ACAD-Zeichnung als Text vorkommt.

Allerdings weiß ich nicht, wie ich Programmiertechnisch an der richtigen stelle angreifen kann um dies zu realisieren.

Wie ich auf das Document zugreife via API ist kein Thema. Das habe ich in VB.Net raus und ist ja auch nicht schwer, nur finde ich keine Lösung wie gesagt alle Textelement auf der Zeichnung zu durchlaufen, deren Inhalt (= den Text des Textfeldes) auszulesen und mit dem Dateinamen der geöffneten Zeichnung abzugleichen.

Gehe übrigens über folgenden Code auf das Dokument via VB.NET

Code:
  Dim oApp As AcadApplication
        Dim oDrawDoc As AcadDocument

        oApp = GetObject(, "Autocad.Application")
        oDrawDoc = oApp.ActiveDocument


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



Anzeige:Infos zum Werbeplatz >>

AVC LAY CAD APP für 3D, Möbel, Messestände

Plugin AVC_Lay for AutoCAD and BricsCAD. Lay 3D-solids to XY plane. Group and sort list of details, make FlatShot for CNC.

blacky1985
Mitglied
Application Engineer


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

Beiträge: 348
Registriert: 16.04.2008

PSP 2008 SP1
PSP 2009 SP1
PSP 2010
AIP 2008 SP3
AIP 2009 SP2
AIP 2010

erstellt am: 19. Sep. 2008 11:29    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

 
Zitat:
Original erstellt von Benny4:
Hi,

ich hab das mal so gemacht, vielleicht hilft das ja weiter:

Code:

Sub getTextFromDrawing()
Dim i As Integer

    For i = 0 To ThisDrawing.ModelSpace.Count - 1
        If UCase(ThisDrawing.ModelSpace.Item(i).objectName) = "ACDBMTEXT" Or UCase(ThisDrawing.ModelSpace.Item(i).objectName) = "ACDBTEXT" Then
            MsgBox "Der Text lautet: " & ThisDrawing.ModelSpace.Item(i).TextString
        End If
    Next
End Sub



Vielen Dank. Genau das hatte ich gesucht :-) Da war die letzte und richtige Antwort wohl schneller als ich weitere Infos posten konnte hier. Vielen Dank nochmals. War auch schon auf diesem Lösunsgweg unterwegs, habe aber dann wohl irgendwie beim Visual Studio beim Ausdruck

Code:
ThisDrawing.ModelSpace.Item(i).TextString
nicht das Attribut "TextString" finden können bzw. wurde mir da nicht angezeigt beim Debuggen etc. usw.

Manchmal ist alles doch einfacher als man meint :-) Danke nochmals       

10 Unities sind unterwegs zu dir         

[Diese Nachricht wurde von blacky1985 am 19. Sep. 2008 editiert.]

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