Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  AddText nimmt Koordinaten nicht

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
Autor Thema:  AddText nimmt Koordinaten nicht (1683 mal gelesen)
wwwilli
Mitglied
Ingenieur


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

Beiträge: 410
Registriert: 21.03.2006

ACAD MAP 3D 2012.
VestraCAD.
Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.

erstellt am: 15. Sep. 2009 11:28    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,
ich will mit AddText Texte entsprechend einer Textdatei einfügen, aber AC versteht meine Koordinateneingabe nicht. Da wird immer 0,0,0 genommen.

Dim TextObj As AcadText
Dim myCorner(0 To 2) As Double
'... Datei lesen, Werte zuweisen usw.
Set TextObj = ThisDrawing.ModelSpace.AddText(myText, myCorner, myHeight)

An anderen Stellen hat das aber schon geklappt. Gibt es einen Trick? Mir ist so, wie wenn ich schon gehört hätte, da müssten bestimmte Datentypen verwendet oder zugewiesen werden.

MfG,
wwwilli

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


Ex-Mitglied

erstellt am: 15. Sep. 2009 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

hier steht aber nirgends, welche Koordinaten Du zuweist, mit

>> Dim myCorner(0 To 2) As Double

wird die Variable mal deklariert und die 3 Array-Items auf 0.0 gesetzt, danach fügst Du den Text ein, der steht dann natürlich auf 0,0,0.

Mach mal einen Breakpoint bei  'Set TextObj = ...'  und lass Dir die Inhalte von  'myCorner'  ausgeben.

...oder zeig uns, wo Du die Werte einstellst.

- alfred -

------------------
www.hollaus.at

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 15. Sep. 2009 11:33    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 wwwilli 10 Unities + Antwort hilfreich

schon mit dem Beispiel aus der Hilfe verglichen .. speziell die Zuweisung ....

Sub Example_AddText()
    ' This example creates a text object in model space.

    Dim textObj As AcadText
    Dim textString As String
    Dim insertionPoint(0 To 2) As Double
    Dim height As Double
   
    ' Define the text object
    textString = "Hello, World."
    insertionPoint(0) = 2: insertionPoint(1) = 2: insertionPoint(2) = 0
    height = 0.5
   
    ' Create the text object in model space
    Set textObj = ThisDrawing.ModelSpace.AddText(textString, insertionPoint, height)
    ZoomAll
   
End Sub

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

wwwilli
Mitglied
Ingenieur


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

Beiträge: 410
Registriert: 21.03.2006

ACAD MAP 3D 2012.
VestraCAD.
Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.

erstellt am: 15. Sep. 2009 12:46    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 dann:

Da sind schon ein paar Verrenkungen auf dem Weg zu myCorner zu sehen, die eigentlich überflüssig erscheinen.

Code:
Option Explicit
Private Const makTitel$ = "TexteAusDateiEinfuegen v0.01" 'a
Sub TexteAusDateiEinfuegen()
Dim iZ As Integer, iP As Integer
Dim txtFile$, zeilE$
Dim TextObj As AcadText
Dim xNew, yNew, zNew
Dim myCorner(0 To 2) As Double
Dim myText$, myRotat As Double, myHeight As Double
Dim errMsg$
Dim textDaten() As String
    'On Error GoTo fehlerende
    errMsg = "Textdatei"
    txtFile = InputBox("In die aktuelle Zeichnung werden Texte eingefügt." _
    + vbCr + "Texte und Koordinaten werden aus einer Datei" _
    + vbCr + "eingelesen." + vbCr _
    + vbCr + "Pfad und Name der Textdatei, mit Extension:", makTitel, "")
    If txtFile = "" Then Exit Sub 'abbrechen
    If Dir$(txtFile, vbNormal) = "" Then GoTo fehlerende
   
    Open txtFile For Input As #1
    iZ = 0
    iP = 0
    Do While Not EOF(1)
        'zeile lesen
        iZ = iZ + 1
        errMsg = "Zeile" + Str(iZ)
        Line Input #1, zeilE
        If Left$(zeilE, 1) = "'" Then GoTo L1000
        'daten interpretieren und plausibilitätsprüfung
        'xwert;ywert;zwert;drehungaltgrad;hoehe;text;
        textDaten = Split(zeilE, ";")
        If UBound(textDaten) < 5 Then GoTo fehlerende1
        If textDaten(0) = "" Then GoTo fehlerende1
        If textDaten(1) = "" Then GoTo fehlerende1
        If textDaten(2) = "" Then GoTo fehlerende1
        If textDaten(3) = "" Then GoTo fehlerende1
        If textDaten(4) = "" Then GoTo fehlerende1
        If textDaten(5) = "" Then GoTo fehlerende1
        xNew = CDbl(Val(textDaten(0))) 'X
        yNew = CDbl(Val(textDaten(1))) 'Y
        zNew = CDbl(Val(textDaten(2))) 'Z=0
        myCorner(0) = xNew:  myCorner(1) = yNew:    myCorner(2) = zNew
        If myCorner(0) = 0# Then GoTo fehlerende1
        If myCorner(1) = 0# Then GoTo fehlerende1
        myRotat = Val(textDaten(3)) * 3.1415926535 / 180#
        myHeight = Val(textDaten(4))
        myText = textDaten(5)
        Set TextObj = ThisDrawing.ModelSpace.AddText(myText, myCorner, myHeight)
        TextObj.Rotation = myRotat
        TextObj.Alignment = acAlignmentCenter 'textausrichtung fest eingestellt.
        ZoomExtents
        iP = iP + 1
L1000:
    Loop
    Close #1
    MsgBox "Fertig." + vbCr + "Zeilen gelesen:" + Str(iZ) _
    + vbCr + "Punkte eingefügt:" + Str(iP), , makTitel
    Exit Sub
fehlerende1:
    Close #1
fehlerende:
    MsgBox "Fehler." + vbCr + errMsg, , makTitel
End Sub

Textdatei (Test-Beispiel):
'xwert;ywert;zwert;drehungaltgrad;hoehe;text;
100;200;0;45;1.5;Text mit 45 Grad;
102;202;0;70;1.5;Text mit 70 Grad;
110;205;0;135;1.5;Text mit 135 Grad;
101;206;0;180;1.5;Text mit 180 Grad;
105.5;210;0;300;1.5;Text mit 300 Grad;


MfG,
wwwilli

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


Ex-Mitglied

erstellt am: 15. Sep. 2009 12:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

nur bevor ich mir dieses lokal herrichte, offensichtlichen Fehler kann ich auf die schnelle nicht sehen, was passiert bei Dir, wenn Du einen Breakpoint setzt bei der Texterstellung und dann 'myCorner'-Inhalt überprüfst?

Steht da 0,0,0 drin, dann musst Du dich mit schrittweiser Exektution durch so eine Schleife durchbasteln.

Steht da etwas anderes als 0,0,0 drin, dann probier mal in einer TestSub nur mal eine Koordiante (<> 0,0,0) zu definieren und einen Text zu erstellen, ob der dann auch auf 0,0,0 zu liegen kommt.

Lass uns die Resultate obiger Tests wissen. 

- alfred -

------------------
www.hollaus.at

wwwilli
Mitglied
Ingenieur


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

Beiträge: 410
Registriert: 21.03.2006

ACAD MAP 3D 2012.
VestraCAD.
Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.

erstellt am: 15. Sep. 2009 13: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

Hallo,

die Koordinaten werden offenbar richtig aus der Textdatei gelesen.

Die Kontrolle auf X=0 und Y=0 ist eigentlich meines Wissens schon drin, schon als Plausibilitätskontrolle der Eingabedaten.

Kurz vor set textobj kann ich mycorner(0) und mycorner(1) mit richtigen Daten überprüfen (mit debug.print). Trotzdem kommt der Text falsch auf 0,0,0.

Auch wenn ich unmittelbar vor set textobj

Code:
mycorner(0) = 200
mycorner(1) = 250
einfüge, kommt der Text trotzdem auf 0,0,0.


Diese folgende kleine Sub setzt den Text aber richtig auf 200,250,0:

Code:
Sub TextEinfuegen()
Dim TextObj As AcadText
Dim myCorner(0 To 2) As Double
        myCorner(0) = 200
        myCorner(1) = 250
        myCorner(2) = 0
        Set TextObj = ThisDrawing.ModelSpace.AddText("Beispiel", myCorner, 1)
        ZoomExtents
End Sub

MfG,
wwwilli

[Diese Nachricht wurde von wwwilli am 15. Sep. 2009 editiert.]

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

wwwilli
Mitglied
Ingenieur


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

Beiträge: 410
Registriert: 21.03.2006

ACAD MAP 3D 2012.
VestraCAD.
Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.

erstellt am: 15. Sep. 2009 13:50    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

So, jetzt habe ich ACAD nochmal gestartet, jetzt geht es.
Keine Ahnung, warum und wie, alles so wie gewünscht.
Vielleicht liegt es auch dran, dass eTrust nicht mehr auf meinem PC rumnoddelt.
Sorry.
Ich danke Euch fürs Mitdenken.
MfG,
wwwilli

[Diese Nachricht wurde von wwwilli am 15. Sep. 2009 editiert.]

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

wwwilli
Mitglied
Ingenieur


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

Beiträge: 410
Registriert: 21.03.2006

ACAD MAP 3D 2012.
VestraCAD.
Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.

erstellt am: 15. Sep. 2009 14:07    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

Doch auch wieder nicht. Ich hatte noch etwas geändert zwischendurch.
Es scheint an der Zeile zu liegen:
Code:
TextObj.Alignment = acAlignmentCenter
Da kommt bei mir alles auf 0,0,0.
Wenn ich setze:
Code:
TextObj.Alignment = acAlignmentLeft
dann wird es richtig (allerdings eben nicht zentriert, wie ich es mir vorgestellt hatte). Damit kann ich weiter experimentieren...

MfG,
wwwilli

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 15. Sep. 2009 14: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 Nur für wwwilli 10 Unities + Antwort hilfreich

na wenn du den Text einen anderen Ausrichtepunkt verpasst, mußt du dann auch TextAlignmentPoint setzen ...

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8075
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 15. Sep. 2009 14:12    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 wwwilli 10 Unities + Antwort hilfreich

Siehe auch HIER .

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

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

wwwilli
Mitglied
Ingenieur


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

Beiträge: 410
Registriert: 21.03.2006

ACAD MAP 3D 2012.
VestraCAD.
Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.

erstellt am: 15. Sep. 2009 14:43    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

Ja, jetzt wo ich es sage, sieht es jeder, nicht wahr... 
Nun, das mit dem AlignmentPoint hatte und habe ich nicht verstanden, kann mich aber einarbeiten, muss eigentlich hier aber nicht sein.
Ich dachte, "textobj.alignment=irgendwas" wäre das selbe, wie wenn ich im DWG unter den Element-Eigenschaften die Ausrichtung auf "irgendwas" ändere. War wohl zu einfach gedacht, würde ich aber jederzeit nächstesmal wieder so denken.
MfG,
wwwilli

Herr Weiß-ich-nicht wohnt übrigens an der Autobahn.

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


Ex-Mitglied

erstellt am: 15. Sep. 2009 14:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Ja, jetzt wo ich es sage, sieht es jeder, nicht wahr... 

Oh JA, da war wohl das erste Codeschnippsel Auslöser für 'zu oberflächlich überfliegen' Deines größeren Codeteils, da war ich zumindest zu sehr fixiert auf 'wo ändern sich die Koordinaten auf 0,0,0'


>> ...das selbe, wie wenn ich im DWG unter den Element-Eigenschaften
>> die Ausrichtung auf "irgendwas" ändere...

Na dann schau Dir mal das Eigenschaftsfenster im AutoCAD an, wenn Du die Ausrichtung von linksbündig auf zentriert stellst. Du wirst hier bemerken, dass AutoCAD auch hier 2 Punkte für einen Text führt (Position und Textausrichtung) und bei der Änderung der Ausrichtung den jeweils anderen 'mitzieht'. Nun ist die Situation, dass Du die Ausrichtung nicht per UserInterface von AutoCAD machst, sondern im eigenen Programm, damit gibt AutoCAD die Verantwortung auch an Dich ab. 

- alfred -

------------------
www.hollaus.at

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8075
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 15. Sep. 2009 14:58    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 wwwilli 10 Unities + Antwort hilfreich

'Tschuldige bitte, dass ich Deinen code nicht Zeile für Zeile auseinandergenommen habe vorher...

Ist ja auch dasselbe.
Wie im verlinkten thread angedeutet:
Vergleich mal den Text, den Du in der dwg mit Ausrichtung links erzeugt hast, mit einem, dem Du die Ausrichtung Mitte verpaßt hast.

Schau Dir dabei das Eigenschaftenfenster genau an:
Geometrieteil (Position X,Y,Z) <> Textteil Textausrichtung X,Y,Z)

der AlignmentPoint gehört nunmal zur Ausrichtung dazu, kann ja von uns keiner was für

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

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



Linienführer Strangfaser/Faserband (m/w/d)

Johns Manville ist ein stolzes Mitglied der Berkshire Hathaway-Unternehmensfamilie, das Kunden in mehr als 80 Ländern bedient und innovative Produkte für die Bau-, Luft- und Raumfahrt-, Automobil-, Filtrations- und Energiebranche liefert. Wir blicken auf eine mehr als 160-jährige Geschichte zurück und wissen, dass unsere Geschichte nur dann weitergeht, wenn die richtigen Menschen die richtigen Dinge sagen, denken und tun....

Anzeige ansehenMechaniker
wwwilli
Mitglied
Ingenieur


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

Beiträge: 410
Registriert: 21.03.2006

ACAD MAP 3D 2012.
VestraCAD.
Win 7 64bit SP 1, FD 100 GB, Xeon 2,8 GHz, 12 GB.

erstellt am: 16. Sep. 2009 09:57    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

Ist gut. Ich danke Euch.
MfG,
SE

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)2023 CAD.de | Impressum | Datenschutz