Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  vb.net - Erstellen eines MTextes mit einem bestimmten Textstils

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
Autor Thema:   vb.net - Erstellen eines MTextes mit einem bestimmten Textstils (224 mal gelesen)
tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1091
Registriert: 30.05.2002

AutoCAD (Map)2015, Topobase, Lisp, .vb.net (Einsteiger)

erstellt am: 16. Feb. 2017 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

Moin!

es geht darum, dass ich einen MText erstellen möchte der mit einem Schriftstil X erstellt werden soll. Der aktuelle Textstil in der vorliegenden DWG ist nicht X - aber X ist definiert.

Nun habe ich folgenden Code:

Code:
Public Function CreateMText(ByVal InsertPoint As Point3d, ByVal Text2Write As String, ByVal Orientation As Double, _
                      Optional TextWindowWidth As Double = 0.0, Optional TextHeight As Double = 1.0, Optional TextStyleName As String = "", _
                      Optional ByVal FreistellungAnwenden As Boolean = False, _
                      Optional ByVal UseFuellfarbeHintergrund As Boolean = True, _
                      Optional ByVal FreistellungUmlaufenderAbstand As Double = 1.0, _
                      Optional ByVal FreistellungFarbe As Integer = 255, _
                      Optional ByVal ColorIndex As Integer = 256, _
                Optional ByVal MTextAlign As AttachmentPoint = AttachmentPoint.TopLeft) As Integer

        ' wenn einmal doch etwas ungültiges kommt, dann auf Standard setzen.
        If CInt(MTextAlign) > 9 Then MTextAlign = AttachmentPoint.TopLeft

        FreistellungFarbe = SetObjectColor(FreistellungFarbe)
        ColorIndex = SetObjectColor(ColorIndex)

        '' Get the current document and database
        Dim acDoc As Autodesk.AutoCAD.ApplicationServices.Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
        Dim acCurDb As Database = acDoc.Database
        Dim ErrDetail As String = ""

        Try
            ErrDetail = "Start a transaction"
            Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()

                ErrDetail = "Open the Block table for read"
                Dim acBlkTbl As BlockTable

                ErrDetail = "lock document"
                Using acDoc.LockDocument

                    acBlkTbl = CType(acTrans.GetObject(acCurDb.BlockTableId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead), BlockTable)

                    ErrDetail = "Open the Block table record Model space for write"
                    Dim acBlkTblRec As BlockTableRecord

                    acBlkTblRec = CType(acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite), BlockTableRecord)

                    ErrDetail = "Create a multiline text object"
                    Using acMText As MText = New MText()
                        acMText.Location = InsertPoint
                        acMText.Width = TextWindowWidth
                        acMText.TextHeight = TextHeight
                        acMText.Attachment = MTextAlign
                        acMText.BackgroundFill = UseFuellfarbeHintergrund 'Füllfarbe des Zeichnungshintergrundes verwenden
                        acMText.UseBackgroundColor = FreistellungAnwenden
                        acMText.BackgroundScaleFactor = FreistellungUmlaufenderAbstand
                        acMText.BackgroundFillColor = Autodesk.AutoCAD.Colors.Color.FromColorIndex(Colors.ColorMethod.None, FreistellungFarbe) ' Farbe für den Hintergrund

                        If TextStyleName.Length > 0 Then
                            Dim acTextStyleTable As Autodesk.AutoCAD.DatabaseServices.TextStyleTable = Nothing
                            Dim acTextStyleID As Autodesk.AutoCAD.DatabaseServices.ObjectId
                            ' Transaction starten
                            Using acTransaction As Autodesk.AutoCAD.DatabaseServices.Transaction = _Database.TransactionManager.StartTransaction()

                                acTextStyleTable = acTransaction.GetObject(_Database.TextStyleTableId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead)
                                If Not acTextStyleTable.Has(TextStyleName) Then
                                    acTextStyleID = _Database.Textstyle
                                Else
                                    acTextStyleID = acTextStyleTable(TextStyleName)
                                End If

                            End Using

                            acMText.TextStyleId = acTextStyleID
                        End If


                        acMText.ColorIndex = ColorIndex

                        acMText.Contents = Text2Write
                        acMText.Rotation = Orientation


                        acBlkTblRec.AppendEntity(acMText)
                        acTrans.AddNewlyCreatedDBObject(acMText, True)
                    End Using 'acMText

                End Using 'acDoc.LockDocument
                ErrDetail = "Save the changes and dispose of the transaction"
                acTrans.Commit()
            End Using 'acTrans

        Catch ex As Exception
            _TryReport.Show("unerwarteter Fehler in EBL.Service > cls_Acad > CreateMText", "ErrDetail: " & ErrDetail & vbCrLf & vbCrLf & "Text2Write: " & Text2Write & vbCrLf & _
        "Orientation: " & Orientation.ToString & vbCrLf & _
        "TextWindowWidth: " & TextWindowWidth.ToString & vbCrLf & _
        "TextHeight: " & TextHeight.ToString & vbCrLf & _
        "TextStyleName: " & TextStyleName & vbCrLf & _
        "MTextAlign: " & MTextAlign.ToString & " (" & CInt(MTextAlign).ToString & ") nur 1-9 zulässig !" & vbCrLf & ex.ToString)
            Return 1
        End Try
        Return 0
    End Function


Es wird im in der Zeile

Code:
If Not acTextStyleTable.Has(TextStyleName) Then

erkannt, dass es den Textstil X gibt und entsprechend ist der weitere Ablauf. Aber dennoch wird dem neuen MText-Objekt nicht der Stil X zugewiesen.

Kann mir jemand weiterhelfen?

Gruß Jan

------------------
jan :-)

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

tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1091
Registriert: 30.05.2002

AutoCAD (Map)2015, Topobase, Lisp, .vb.net (Einsteiger)

erstellt am: 16. Feb. 2017 14:19    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

Moin!

hat sich erledigt und der Code funktioniert.

Ursache: Betriebsblindheit an anderer Stelle!

Gruß Jan

------------------
jan :-)

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)2017 CAD.de