?? dxfmtext.cs
字號:
?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Drawing;
namespace DXFFile
{
public class DXFMText : DXFFigure
{
// Methods
public DXFMText()
{
}
public DXFMText(DXFData aData)
: base(aData)
{
}
public override void ExportAsDXF(DXFExport ADXFExport)
{
ADXFExport.AddName("MTEXT", "AcDbMText");
ADXFExport.AddColor(base.data);
ADXFExport.Add3DPoint(10, base.data.point);
ADXFExport.AddFloat(40, ADXFExport.MM(base.data.height));
if (base.data.rotation != 0f)
{
ADXFExport.AddFloat(50, base.data.rotation);
}
if (base.data.hAlign != 0)
{
ADXFExport.AddInt(0x47, base.data.hAlign + 1);
}
ADXFExport.current.Add(" 1");
ADXFExport.current.Add(base.data.text);
}
public override bool IntersecRect(Rect aRect)
{
Rect rect = new Rect();
if (base.data.rotation == 0f)
{
rect.X1 = (int)Math.Round((double)base.data.point.X);
rect.Y1 = (int)Math.Round((double)base.data.point.Y);
rect.X2 = rect.X1 + ((int)Math.Round((double)base.data.rWidth));
rect.Y2 = rect.Y1 - ((int)Math.Round((double)base.data.height));
}
if (base.data.rotation == 90f)
{
rect.X1 = (int)Math.Round((double)base.data.point.X);
rect.Y1 = (int)Math.Round((double)base.data.point.Y);
rect.X2 = rect.X1 + ((int)Math.Round((double)base.data.height));
rect.Y2 = rect.Y1 + ((int)Math.Round((double)base.data.rWidth));
}
if (base.data.rotation == 270f)
{
rect.X1 = (int)Math.Round((double)base.data.point.X);
rect.Y1 = (int)Math.Round((double)base.data.point.Y);
rect.X2 = rect.X1 - ((int)Math.Round((double)base.data.height));
rect.Y2 = rect.Y1 - ((int)Math.Round((double)base.data.rWidth));
}
if (rect.X2 < rect.X1)
{
int num = rect.X2;
rect.X2 = rect.X1;
rect.X1 = num;
}
if (rect.Y2 < rect.Y1)
{
int num2 = rect.Y2;
rect.Y2 = rect.Y1;
rect.Y1 = num2;
}
Rectangle rectangle = new Rectangle(0, 0, 0, 0);
rectangle = Rectangle.Intersect(new Rectangle(aRect.X1, aRect.Y1, aRect.X2, aRect.Y2), new Rectangle(rect.X1, rect.Y1, rect.X2, rect.Y2));
if (((rectangle.X <= 0) && (rectangle.Y <= 0)) && ((rectangle.Width <= 0) && (rectangle.Height <= 0)))
{
return false;
}
return true;
}
public void ParseToTexts(Rect aRect, ArrayList NewElemes)
{
int num;
float num2;
string pourStr = "";
string str2 = "";
string str3 = "";
DXFData aData = new DXFData();
if (base.data.rotation == 0f)
{
aData = (DXFData)base.data.Clone();
if (aRect.X1 > aData.point.X)
{
pourStr = DXFExport.GetPourStr(aData.text);
str3 = aData.text.Substring(0, aData.text.Length - pourStr.Length);
num = (int)Math.Round((double)(pourStr.Length * ((aRect.X1 - aData.point.X) / aData.rWidth)));
for (int i = 0; i < num; i++)
{
str2 = str2 + pourStr[i];
}
pourStr = str3 + str2;
aData.rWidth = (base.data.rWidth * num) / ((float)pourStr.Length);
aData.text = pourStr;
DXFMText text = new DXFMText(aData);
NewElemes.Add(text);
}
aData = (DXFData)base.data.Clone();
str2 = "";
if (aRect.X2 < (aData.point.X + aData.rWidth))
{
pourStr = DXFExport.GetPourStr(aData.text);
str3 = aData.text.Substring(0, aData.text.Length - pourStr.Length);
num2 = ((aData.point.X + aData.rWidth) - aRect.X2) / aData.rWidth;
num = (int)Math.Round((double)(pourStr.Length * num2));
aData.point.X += aData.rWidth - (aData.rWidth * num2);
for (int j = pourStr.Length; j < ((pourStr.Length - num) + 1); j--)
{
str2 = pourStr[j] + str2;
}
pourStr = str3 + str2;
aData.rWidth = (aData.rWidth * num) / ((float)pourStr.Length);
aData.text = pourStr;
DXFMText text2 = new DXFMText(aData);
NewElemes.Add(text2);
}
}
if (base.data.rotation == 90f)
{
aData = (DXFData)base.data.Clone();
if (aRect.X1 > aData.point.X)
{
pourStr = DXFExport.GetPourStr(aData.text);
str3 = aData.text.Substring(0, aData.text.Length - pourStr.Length);
num = (int)Math.Round((double)(pourStr.Length * ((aRect.X1 - aData.point.X) / aData.rWidth)));
for (int k = 0; k < num; k++)
{
str2 = str2 + pourStr[k];
}
pourStr = str3 + str2;
aData.rWidth = (aData.rWidth * num) / ((float)pourStr.Length);
aData.text = pourStr;
DXFMText text3 = new DXFMText(aData);
NewElemes.Add(text3);
}
aData = (DXFData)base.data.Clone();
str2 = "";
if (aRect.X2 < (aData.point.X + aData.rWidth))
{
pourStr = DXFExport.GetPourStr(aData.text);
str3 = aData.text.Substring(0, aData.text.Length - pourStr.Length);
num2 = ((aData.point.X + aData.rWidth) - aRect.X2) / aData.rWidth;
num = (int)Math.Round((double)(pourStr.Length * num2));
aData.point.X += aData.rWidth - (aData.rWidth * num2);
aData.point.Y += aData.rWidth - (aData.rWidth * num2);
for (int m = pourStr.Length; m < ((pourStr.Length - num) + 1); m--)
{
str2 = pourStr[m] + str2;
}
pourStr = str3 + str2;
aData.rWidth = (aData.rWidth * num) / ((float)pourStr.Length);
aData.text = pourStr;
DXFMText text4 = new DXFMText(aData);
NewElemes.Add(text4);
}
}
if (base.data.rotation == 270f)
{
aData = (DXFData)base.data.Clone();
if (aRect.Y2 < aData.point.Y)
{
pourStr = DXFExport.GetPourStr(aData.text);
str3 = aData.text.Substring(0, aData.text.Length - pourStr.Length);
num = (int)Math.Round((double)(pourStr.Length * ((aData.point.Y - aRect.Y2) / aData.rWidth)));
for (int n = 0; n < num; n++)
{
str2 = str2 + pourStr[n];
}
aData.rWidth = (aData.rWidth * num) / ((float)pourStr.Length);
pourStr = str3 + str2;
aData.text = pourStr;
DXFMText text5 = new DXFMText(aData);
NewElemes.Add(text5);
}
aData = base.data;
str2 = "";
if (aRect.Y1 > (aData.point.Y - aData.rWidth))
{
pourStr = DXFExport.GetPourStr(aData.text);
str3 = aData.text.Substring(0, aData.text.Length - pourStr.Length);
num2 = ((aData.rWidth - aData.point.Y) + aRect.Y1) / aData.rWidth;
num = (int)Math.Round((double)(pourStr.Length * num2));
aData.point.Y -= aData.rWidth - (aData.rWidth * num2);
for (int num8 = pourStr.Length; num8 < ((pourStr.Length - num) + 1); num8--)
{
str2 = pourStr[num8] + str2;
}
aData.rWidth = (aData.rWidth * num) / ((float)pourStr.Length);
pourStr = str3 + str2;
aData.text = pourStr;
DXFMText text6 = new DXFMText(aData);
NewElemes.Add(text6);
}
}
}
// Properties
public string Text
{
get
{
return base.data.text;
}
set
{
base.data.text = (string)value.Clone();
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -