| |
| 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
Beiträge: 57 Registriert: 02.11.2009
|
erstellt am: 31. Mai. 2018 09:01 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 31. Mai. 2018 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für bccad
|
bccad Mitglied
Beiträge: 57 Registriert: 02.11.2009
|
erstellt am: 01. Jun. 2018 07:52 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 01. Jun. 2018 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für bccad
... 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
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 01. Jun. 2018 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für bccad
... 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
Beiträge: 57 Registriert: 02.11.2009
|
erstellt am: 01. Jun. 2018 14:33 <-- editieren / zitieren --> Unities abgeben:
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 |