| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Text selectieren / auslesen (1067 mal gelesen)
|
Armand Mitglied
Beiträge: 3 Registriert: 13.09.2005 CPU Intel P4 3.00GHz Ram 1GB Win 2000 SP4 Mechanical Desktop 2004 DX
|
erstellt am: 14. Sep. 2005 10:48 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin neu in diesem Geschäft (VBA ACAD) und habe ein gleich ein Problem. Ich habe ein Serie von Zeichnungen in denen sich links unten ein MText befindet (Koordinaten 42.5,11,0). Diesen Text möchte ich auslesen und mit dem Zeichnungsnamen in eine txt schreiben lassen. Das mit dem Namen ist kein Problem aber das Selectieren des Textes erweist sich als würg. Wo liegt mein (der) Fehler? Ich habe das Exempel aus der „Hilfe“ genommen siehe unten. Sub Example_SelectAtPoint() Dim ssetObj As AcadSelectionSet Set ssetObj = ThisDrawing.SelectionSets.Add("TEST_SSET2") Dim point(0 To 2) As Double point(0) = 42.5: point(1) = 11: point(2) = 0 ssetObj.SelectAtPoint point End Sub
MfGrüße Armand Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 14. Sep. 2005 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für Armand
Hi & welcome, ja, sendcommand "_mtedit" und sendkeys "^a" und sendkeys "^c" geht schonmal nicht, bzw. halt nur zu Fuss, da während der Texteditor aktiv ist, acadbefehle nicht ausgeführt werden. Damit hättest Du wenigstens den Text in der Zwischenablage ohne Formatierungsmüll. Na was soll's, is halt alles nich so einfach ... Für 'einfache' Mtexte kannste den Textstring auslesen, also so in etwa:
Code:
Sub a() Dim sset As AcadSelectionSet Dim pnt#(2), i%, s$ pnt(0) = 42.5: pnt(1) = 11 With ThisDrawing Set sset = .SelectionSets.Add("newset") sset.SelectAtPoint pnt s = Replace(sset.Item(0).TextString, "\P", Chr(13)) Open "d:\" & Left(.Name, Len(.Name) - 3) & "txt" For Output As #1 Print #1, s Close #1 sset.Delete End With End Sub
Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 14. Sep. 2005 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für Armand
Hallo Armand, hab gerade gesehen das schon eine Antwort da war. Hatte das Beispiel gerade fertig gestückelt und schickst halt mal. Ist aber der gleiche Ansatz wie bei Nancy.
Code:
Dim Ausgabedatei As String Dim SelSet As AcadSelectionSet Dim SelPkt(0 To 2) As Double Dim MyText As AcadMText Dim Text As String Dim intAusgabe As IntegerDim GpType(0 To 0) As Integer Dim GpValue(0 To 0) As Variant Dim FilterType As Variant Dim FilterValue As Variant On Error Resume Next Err.Clear ' Versuch Zuweisung MySelSet Set SelSet = ThisDrawing.SelectionSets("MySelSet") If Err.Number <> 0 Then ' Selektionset war noch nicht da Set SelSet = ThisDrawing.SelectionSets.Add("MySelSet") End If On Error GoTo 0 ' Punkt angeben SelPkt(0) = 50: SelPkt(1) = 50 ' Filter für Mtext GpType(0) = 0 GpValue(0) = "MTEXT" ' Nach Variant FilterType = GpType FilterValue = GpValue ' Selektion an diesem Punkt holen SelSet.Clear SelSet.SelectAtPoint SelPkt, FilterType, FilterValue If SelSet.Count = 0 Then MsgBox "Nichts gefunden" ElseIf SelSet.Count > 1 Then MsgBox "Mehrere Texte gefunden" Else ' Nur eins gefunden Set MyText = SelSet(0) Text = MyText.TextString intAusgabe = FreeFile Ausgabedatei = "C:\Temp\Zeichnungen.txt" Open Ausgabedatei For Append As #intAusgabe Print #intAusgabe, "Zeichnung: " & ThisDrawing.FullName & " " & Text Close End If
Gruß Stelli1 ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Armand Mitglied
Beiträge: 3 Registriert: 13.09.2005 CPU Intel P4 3.00GHz Ram 1GB Win 2000 SP4 Mechanical Desktop 2004 DX
|
erstellt am: 14. Sep. 2005 13:19 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 14. Sep. 2005 13:26 <-- editieren / zitieren --> Unities abgeben: Nur für Armand
|
Armand Mitglied
Beiträge: 3 Registriert: 13.09.2005 CPU Intel P4 3.00GHz Ram 1GB Win 2000 SP4 Mechanical Desktop 2004 DX
|
erstellt am: 14. Sep. 2005 13:31 <-- editieren / zitieren --> Unities abgeben:
|