Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  einfacher Text

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:  einfacher Text (1005 / mal gelesen)
bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 31. Mai. 2018 09:01    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 bräuchte mal kurz eure Hilfe.
Beim Einfügen eines normalen Textes wird der Breitenfaktor immer auf 1.0 gesetzt,
obwohl in der Definition der Schriftart (hier ROMANS) die Breite auf 0.8 gesetzt ist.
Wie kann ich erreichen das der Wert aus der Schriftdefinition genommen wird oder
wo kann ich das programmtechnisch 'von Hand' einstellen ?

mfg bccad

Code:

Public Class Class1
    <CommandMethod("test")>
    Public Shared Sub text()
        Dim doc As Document = _AcAp.Application.DocumentManager.MdiActiveDocument
        Dim db As Database = doc.Database
        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim bt As BlockTable
            Dim tx As DBText = New DBText()
            bt = CType(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
            Dim btr As BlockTableRecord = CType(tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)
            Dim tst As TextStyleTable = CType(tr.GetObject(db.TextStyleTableId, OpenMode.ForRead, False), TextStyleTable)
            For Each id As ObjectId In tst
                If Not id.IsErased Then
                    Dim txtstyle As TextStyleTableRecord = CType(tr.GetObject(id, OpenMode.ForWrite, False), TextStyleTableRecord)
                    If String.Compare(txtstyle.Name, "ROMANS", True) = 0 Then
                        tx.TextStyleId = id
                        Exit For
                    End If
                End If
            Next
            tx.SetDatabaseDefaults()
            tx.Position = New Point3d(100, 100, 0)
            tx.Height = 5
            tx.Layer = "0"

            ' tx.??? = 0.8    'Breitenfaktor

            tx.TextString = "Hallo Welt"
            btr.AppendEntity(tx)
            tr.AddNewlyCreatedDBObject(tx, True)
            tr.Commit()
        End Using

    End Sub
End Class


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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 31. Mai. 2018 09: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 Nur für bccad 10 Unities + Antwort hilfreich

(ungetestet nimm das SetDatabaseDefaults mal direkt unter die Erzeugung des Textobjekts. Damit überschreibst du ggf. die zuvor gesetzte Stil-Einstellung.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 01. Jun. 2018 07:52    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:

(ungetestet nimm das SetDatabaseDefaults mal direkt unter die Erzeugung des Textobjekts. Damit überschreibst du ggf. die zuvor gesetzte Stil-Einstellung.


Hallo Holger,

danke für deine schnelle Antwort, aber das war es leider nicht.   

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 01. Jun. 2018 08:59    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 bccad 10 Unities + Antwort hilfreich

... dann würde ich an deiner Stelle erst einmal den Code säubern.
Mir fällt auf, dass du alle möglichen Objekte öffnest, den Text erzeugst, aber keines dieser Objekte wieder schließt bzw. disposed. Sowas führt zu nicht nachvollziehbaren Fehlern und auch AutoCAD-Abstürzen, auch wenn der Befehl ansich fertig ist.
Ich habe mir angewöhnt, alle Objekte innerhalb eines using-statement zu kapseln (so wie die transaction indeinem code).

Wenn es das auch nicht war, dann (ich habe gerade kein Acad zur Hand) schau mal, ob es nicht irgendeine Set-Methode gibt, mit der man den Stil zuweisen kann. Weitere Lösungsidee ist, dass der Stil erst nach der Erzeugung im Modellberich geändert wird.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 01. Jun. 2018 13:04    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 bccad 10 Unities + Antwort hilfreich


... jetzt habe ich ein Acad zur Hand.
Den Breitenfaktor kannst du auch direkt mit der Eigenschaft WidthFactor setzen.
Eine Set-Methode für den Style gibt es nicht .. geht dann auch nur über die Eigenschaften.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 01. Jun. 2018 14: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

Hallo Holger,

danke, das war der entscheidende Hinweis.
Den Breitenfaktor des Textstils bekommt man aus txtstyle.XScale.
Beides zusammen ist die Lösung für mein Problem.

Code:

' tx.??? = 0.8    'Breitenfaktor ???
  tx.WidthFactor = txtstyle.XScale

mfg bccad

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