Błąd w metodzie ZwCAD .net - formatowanie tekstu [rozwiązany]


Recommended Posts

 using (zzd.DBText acText = new zzd.DBText())
                {
                    if (pełny.IsChecked == false)
                    {
                        acText.TextString = "%%U" + textBox.Text + "-" + textBox.Text;
                    }
                    else
                    {
                        acText.TextString = "%%UPrzekrój " + textBox.Text + "-" + textBox.Text;
                    }
                    acText.HorizontalMode = zzd.TextHorizontalMode.TextCenter;
                    acText.VerticalMode = zzd.TextVerticalMode.TextBottom;
                    acText.AlignmentPoint = ptStart;
                    acText.Height = dimscala * 5;  
					btr.AppendEntity(acText);
                    tr.AddNewlyCreatedDBObject(acText, true);                    
                }            

Powyższy kod w AutoCAD 2010 tworzy podkreślony napis "single text". Napis ten jest wstawiany centralnie do punktu który wskazuję.

Film ukazujący działanie kodu

W ZwCAD 2017 użycie tak spreparowanego stringa 

string text = "%%UPrzekrój " + textBox.Text + "-" + textBox.Text;

powoduje to, że metoda nie radzi sobie z wyznaczeniem środka tekstu.

Na razie poradziłem sobie w ZwCAD poprzez rezygnację z podkreślenia. Ale wydaje mi się, że trzeba to zakwalifikować jako błąd do poprawy i zgłosić producentowi.

Funkcja w ZwCAD pozbawiona podkreślenia ze względu na brak dokładnego ustawienia napisu.

 

 

Edited by Parikon
Link to comment
Share on other sites

 // Create a single-line text object

                using (zzd.DBText acText = new zzd.DBText())
                {
                    if (pełny.IsChecked == false)
                    {
                        string text = "%%U" + textBox.Text + "-" + textBox.Text;
                        acText.TextString = text;
                    }
                    else
                    {
                        string text = "%%UPrzekrój " + textBox.Text + "-" + textBox.Text;
                        acText.TextString = text;
                    }
                    acText.HorizontalMode = zzd.TextHorizontalMode.TextCenter;
                    acText.VerticalMode = zzd.TextVerticalMode.TextVerticalMid;
                    acText.AlignmentPoint = ptStart;

                    acText.Height = dimscala * 5;
                    acText.Layer = layername;
                    acText.ColorIndex = coloroznaczenia;
                    acText.TransformBy(mat);

                    btr.AppendEntity(acText);
                    tr.AddNewlyCreatedDBObject(acText, true);
                    anonyGroup.Append(acText.ObjectId);
                }

vernum = "2017.04.06(15637)_x64"

Tworzymy obiekt o nazwie acText któremu nadajemy właściwość  Textstring

Ten string zaczynamy %%U aby był podkreślony

W AutoCAD tekst jest wyśrodkowany

a w powyższym vernum wygląda to tak.

Film w ZwCAD z podkreśleniem

 

Edited by Parikon
Link to comment
Share on other sites

Z zachowania wynika, że metoda w ZwCAD wylicza centrum dla ciągu gdzie bierze część stringu %%U jako tekst, który powiększa długość tekstu jaki został wyświetlony, a metoda w AutoCAD uwzględnia, że ten tekst w rzeczywistości jest krótszy o te 3 niewyświetlane  znaki.

Link to comment
Share on other sites

już (dopiero?) rozumiem na czym polega problem. Odpowiednie zgłoszenie przesłałem do ZWSOFT.

co Pan na to, żeby skorzystać z MText zamiast Text ?

using (MText objText = new MText())
{
    objText.Contents = "{\\LPrzekrój A-A}";
    objText.SetAttachmentMovingLocation( AttachmentPoint.BottomCenter );
    objText.Height = 5; 
    zsBlkTblRec.AppendEntity(objText);
    ZsTrans.AddNewlyCreatedDBObject(objText, true);
    objText.Location = new ZwSoft.ZwCAD.Geometry.Point3d(100, 100, 0);
}

 

Link to comment
Share on other sites

  • 9 months later...
  • dmatusz3 changed the title to Błąd w metodzie ZwCAD .net - formatowanie tekstu [rozwiązany]
  • dmatusz3 locked this topic
Guest
This topic is now closed to further replies.
 Share