cdr再绘cad图元(2020年6月13日)

cdr再绘cad图元(2020年6月13日)

private void Drawing_Click(object sender, RoutedEventArgs e)
{
stylesController.Delevent();
capp.ActiveDocument.BeginCommandGroup(“开始记录操作”);
capp.Optimization = true;//阻止界面刷新
//ShapeRange OrigSelection = capp.ActiveSelectionRange;
capp.ActiveDocument.Unit = cdrUnit.cdrMillimeter;
if (MyMethod.GetActiveACadApp() == false) return;
Cs = Ca.SelectEntityOnScreen();
MyMethod.SetForegroundWindow((IntPtr)capp.AppWindow.Handle);
double[] Pt0 = new double[3];
if (Cs.Count > 0)
{
try
{
MyMethod.SetForegroundWindow((IntPtr)Ca.HWND);
Cd.Utility.Prompt(“\n请拾取基点:”);
Pt0 = Cd.Utility.GetPoint();
}
catch { return; }
foreach (object itm in Cs)
{
#if ZwCad
ZcadObject obj = itm as ZcadObject;
if (obj.ObjectName.Equals(“AcDbLine”))
{
ZcadLine lsobj = obj as ZcadLine;
double[] stpt = lsobj.StartPoint;
double[] edpt = lsobj.EndPoint;
capp.ActiveLayer.CreateLineSegment(stpt[0] – Pt0[0], stpt[1] – Pt0[1], edpt[0] – Pt0[0], edpt[1] – Pt0[1]);
}
if (obj.ObjectName.Equals(“AcDbPolyline”))
{
ZcadLWPolyline lsobj = obj as ZcadLWPolyline;
double[] cdts = lsobj.Coordinates;
Curve crv = capp.ActiveDocument.CreateCurve();
//int ptn = (cdts.Length / 2) – 1;
//for (int i = 1; i <= ptn; i++)
//{
// sp.AppendLineSegment(cdts[i * 2] – Pt0[0], cdts[(i * 2) + 1] – Pt0[1]);
//}
//crv.Closed = lsobj.Closed;
//Shape s1 = capp.ActiveLayer.CreateCurve(crv);
//s1.Fill.ApplyNoFill();
int ptn = cdts.Length / 2, para;
if (lsobj.Closed) para = ptn;
else para = ptn – 1;
List<EndPtLst> cdlst = new List<EndPtLst>();
for (int i = 1; i <= para; i++)
{
EndPtLst pt = new EndPtLst();
pt.X1 = cdts[(i – 1) * 2] – Pt0[0];
pt.Y1 = cdts[(i – 1) * 2 + 1] – Pt0[1];
if (lsobj.Closed && i == para)
{
pt.X2 = cdts[0] – Pt0[0];
pt.Y2 = cdts[1] – Pt0[1];
}
else
{
pt.X2 = cdts[i * 2] – Pt0[0];
pt.Y2 = cdts[(i * 2) + 1] – Pt0[1];
}
cdlst.Add(pt);
}
SubPath sp = crv.CreateSubPath(cdlst[0].X1, cdlst[0].Y1);
for (int i = 0; i < cdlst.Count; i++)
{
if (lsobj.GetBulge(i) == 0)
{
sp.AppendLineSegment(cdlst[i].X2, cdlst[i].Y2);
}
else
{
Curve lscrv = capp.ActiveDocument.CreateCurve();
double[] midpt = new double[] { (cdlst[i].X1 + cdlst[i].X2) / 2.0, (cdlst[i].Y1 + cdlst[i].Y2) / 2.0 };
double ang = Math.Atan2(cdlst[i].Y2 – cdlst[i].Y1, cdlst[i].X2 – cdlst[i].X1);
double hafl = Math.Sqrt(Math.Pow(cdlst[i].X2 – cdlst[i].X1, 2.0) + Math.Pow(cdlst[i].Y2 – cdlst[i].Y1, 2.0)) / 2.0;
double h = lsobj.GetBulge(i) * hafl;
double[] threept = new double[] { midpt[0] + h * Math.Cos(ang – Math.PI / 2.0), midpt[1] + h * Math.Sin(ang – Math.PI / 2.0) };
lscrv.AppendSubpathThreePointArc(cdlst[i].X1, cdlst[i].Y1, cdlst[i].X2, cdlst[i].Y2, threept[0], threept[1]);
Shape lss1 = capp.ActiveLayer.CreateCurve(lscrv);
foreach (Segment sg in lss1.Curve.Segments)
{
sp.AppendCurveSegment(sg.EndNode.PositionX, sg.EndNode.PositionY, sg.StartingControlPointLength, sg.StartingControlPointAngle, sg.EndingControlPointLength, sg.EndingControlPointAngle);
}
lss1.Delete();
}
}
crv.Closed = lsobj.Closed;
Shape s1 = capp.ActiveLayer.CreateCurve(crv);
if (lsobj.Closed) s1.Fill.ApplyNoFill();
}
if (obj.ObjectName.Equals(“AcDbArc”))
{
ZcadArc lsobj = obj as ZcadArc;
double r = lsobj.Radius;
double[] cenpt = lsobj.Center;
double sang = lsobj.StartAngle * 180 / Math.PI;
double eang = lsobj.EndAngle * 180 / Math.PI;
Shape s1 = capp.ActiveLayer.CreateEllipse2(cenpt[0] – Pt0[0], cenpt[1] – Pt0[1], r, -r, sang, eang);
}
if (obj.ObjectName.Equals(“AcDbCircle”))
{
ZcadCircle lsobj = obj as ZcadCircle;
double r = lsobj.Radius;
double[] cenpt = lsobj.Center;
Shape s1 = capp.ActiveLayer.CreateEllipse2(cenpt[0] – Pt0[0], cenpt[1] – Pt0[1], r);
s1.Fill.ApplyNoFill();
}
if (obj.ObjectName.Equals(“AcDbSpline”))
{
ZcadSpline lsobj = obj as ZcadSpline;
double[] pts = lsobj.ControlPoints;
BSpline bs = capp.ActiveDocument.CreateBSpline(lsobj.NumberOfControlPoints, lsobj.Closed);
if (lsobj.Closed)
{
for (int i = 1; i <= lsobj.NumberOfControlPoints; i++)
{
bs.ControlPoints[i].SetProperties(pts[(i – 1) * 3] – Pt0[0], pts[(i – 1) * 3 + 1] – Pt0[1], false);
}
Shape s1 = capp.ActiveLayer.CreateBSpline(bs);
s1.Fill.ApplyNoFill();
}
else
{
for (int i = 1; i <= lsobj.NumberOfControlPoints; i++)
{
if (i == 1 || i == lsobj.NumberOfControlPoints) bs.ControlPoints[i].SetProperties(pts[(i – 1) * 3] – Pt0[0], pts[(i – 1) * 3 + 1] – Pt0[1], true);
else bs.ControlPoints[i].SetProperties(pts[(i – 1) * 3] – Pt0[0], pts[(i – 1) * 3 + 1] – Pt0[1], false);
}
Shape s1 = capp.ActiveLayer.CreateBSpline(bs);
}
}
if (obj.ObjectName.Equals(“AcDbEllipse”))
{
ZcadEllipse lsobj = obj as ZcadEllipse;

double[] cenpt = lsobj.Center;
double[] maxis = lsobj.MajorAxis;
double[] normal = lsobj.Normal;
double[] startpt = new double[] { cenpt[0] + maxis[0], cenpt[1] + maxis[1] };
double ang = Math.Atan2(startpt[1] – cenpt[1], startpt[0] – cenpt[0]);
double major = lsobj.MajorRadius, minor = lsobj.MinorRadius, startang, entang;
if (normal[2] > 0)
{
startang = 360 – lsobj.EndParameter * 180 / Math.PI;//EndParameter
entang = 360 – lsobj.StartParameter * 180 / Math.PI;//StartParameter
}
else
{
startang = 360 – lsobj.StartParameter * 180 / Math.PI;//EndParameter
entang = 360 – lsobj.EndParameter * 180 / Math.PI;//StartParameter
}
while (startang < -360 || startang > 360)
{
if (startang < -360) startang += 360;
if (startang > 360) startang -= 360;
}
while (entang < -360 || entang > 360)
{
if (entang < -360) entang += 360;
if (entang > 360) entang -= 360;
}
Shape s1 = capp.ActiveLayer.CreateEllipse2(cenpt[0] – Pt0[0], cenpt[1] – Pt0[1], major, minor);
s1.Rotate(ang * 180 / Math.PI);
s1.Ellipse.StartAngle = startang;
s1.Ellipse.EndAngle = entang;
s1.Fill.ApplyNoFill();
}
if (obj.ObjectName.Equals(“AcDbText”))
{
ZcadText lsobj = obj as ZcadText;
string str = lsobj.TextString;
double[] inpt = lsobj.InsertionPoint;
double[] alpt = lsobj.TextAlignmentPoint;
double[] txtpt;
if (Enumerable.SequenceEqual(alpt, new double[] { 0.0, 0.0, 0.0 })) txtpt = inpt;
else txtpt = alpt;
cdrAlignment cdral;
switch (lsobj.Alignment)
{
case ZcAlignment.zcAlignmentLeft:
case ZcAlignment.zcAlignmentTopLeft:
case ZcAlignment.zcAlignmentMiddleLeft:
case ZcAlignment.zcAlignmentBottomLeft:
cdral = cdrAlignment.cdrLeftAlignment;
break;
case ZcAlignment.zcAlignmentCenter:
case ZcAlignment.zcAlignmentMiddle:
case ZcAlignment.zcAlignmentTopCenter:
case ZcAlignment.zcAlignmentMiddleCenter:
case ZcAlignment.zcAlignmentBottomCenter:
cdral = cdrAlignment.cdrCenterAlignment;
break;
case ZcAlignment.zcAlignmentRight:
case ZcAlignment.zcAlignmentTopRight:
case ZcAlignment.zcAlignmentMiddleRight:
case ZcAlignment.zcAlignmentBottomRight:
cdral = cdrAlignment.cdrRightAlignment;
break;
default:
cdral = cdrAlignment.cdrCenterAlignment;
break;
}
switch (lsobj.Alignment)
{
case ZcAlignment.zcAlignmentLeft:
case ZcAlignment.zcAlignmentCenter:
case ZcAlignment.zcAlignmentRight:
break;
case ZcAlignment.zcAlignmentTopLeft:
case ZcAlignment.zcAlignmentTopCenter:
case ZcAlignment.zcAlignmentTopRight:
txtpt[1] = txtpt[1] – lsobj.Height;
break;
case ZcAlignment.zcAlignmentMiddleLeft:
case ZcAlignment.zcAlignmentMiddleCenter:
case ZcAlignment.zcAlignmentMiddleRight:
txtpt[1] = txtpt[1] – lsobj.Height / 2.0;
break;
case ZcAlignment.zcAlignmentBottomLeft:
case ZcAlignment.zcAlignmentBottomCenter:
case ZcAlignment.zcAlignmentBottomRight:
txtpt[1] = inpt[1];
break;
default:
txtpt[1] = txtpt[1] – lsobj.Height / 2.0;
break;
}
Shape s1 = capp.ActiveLayer.CreateArtisticText(txtpt[0] – Pt0[0], txtpt[1] – Pt0[1], str, cdrTextLanguage.cdrLanguageNone, cdrTextCharSet.cdrCharSetMixed, “仿宋”, (float)(lsobj.Height * 72 / 25.4), cdrTriState.cdrUndefined, cdrTriState.cdrUndefined, cdrFontLine.cdrMixedFontLine, cdral);
s1.Fill.UniformColor.CMYKAssign(0, 0, 0, 100);
s1.Outline.SetNoOutline();
}
if (obj.ObjectName.Equals(“AcDbMText”))
{
ZcadMText lsobj = obj as ZcadMText;
string str = Regex.Replace(MyMethod.GetMTextRegstr(lsobj.TextString), “\\\\P”, “\\V”);
double[] inpt = lsobj.InsertionPoint;
cdrAlignment cdral;
switch (lsobj.AttachmentPoint)
{
case ZcAttachmentPoint.zcAttachmentPointTopLeft:
case ZcAttachmentPoint.zcAttachmentPointMiddleLeft:
case ZcAttachmentPoint.zcAttachmentPointBottomLeft:
cdral = cdrAlignment.cdrLeftAlignment;
break;
case ZcAttachmentPoint.zcAttachmentPointTopCenter:
case ZcAttachmentPoint.zcAttachmentPointMiddleCenter:
case ZcAttachmentPoint.zcAttachmentPointBottomCenter:
cdral = cdrAlignment.cdrCenterAlignment;
break;
case ZcAttachmentPoint.zcAttachmentPointTopRight:
case ZcAttachmentPoint.zcAttachmentPointMiddleRight:
case ZcAttachmentPoint.zcAttachmentPointBottomRight:
cdral = cdrAlignment.cdrRightAlignment;
break;
default:
cdral = cdrAlignment.cdrCenterAlignment;
break;
}
switch (lsobj.AttachmentPoint)
{
case ZcAttachmentPoint.zcAttachmentPointTopLeft:
case ZcAttachmentPoint.zcAttachmentPointTopCenter:
case ZcAttachmentPoint.zcAttachmentPointTopRight:
inpt[1] = inpt[1] – lsobj.Height;
break;
case ZcAttachmentPoint.zcAttachmentPointMiddleLeft:
case ZcAttachmentPoint.zcAttachmentPointMiddleCenter:
case ZcAttachmentPoint.zcAttachmentPointMiddleRight:
inpt[1] = inpt[1] – lsobj.Height / 2.0;
break;
}
Shape s1 = capp.ActiveLayer.CreateArtisticText(inpt[0] – Pt0[0], inpt[1] – Pt0[1], str, cdrTextLanguage.cdrLanguageNone, cdrTextCharSet.cdrCharSetMixed, “仿宋”, (float)(lsobj.Height * 72 / 25.4), cdrTriState.cdrUndefined, cdrTriState.cdrUndefined, cdrFontLine.cdrMixedFontLine, cdral);
s1.Fill.UniformColor.CMYKAssign(0, 0, 0, 100);
s1.Outline.SetNoOutline();
}
#else
AcadObject obj = itm as AcadObject;
if (obj.ObjectName.Equals(“AcDbLine”))
{
AcadLine lsobj = obj as AcadLine;
double[] stpt = lsobj.StartPoint;
double[] edpt = lsobj.EndPoint;
capp.ActiveLayer.CreateLineSegment(stpt[0] – Pt0[0], stpt[1] – Pt0[1], edpt[0] – Pt0[0], edpt[1] – Pt0[1]);
}
if (obj.ObjectName.Equals(“AcDbPolyline”))
{
AcadLWPolyline lsobj = obj as AcadLWPolyline;
double[] cdts = lsobj.Coordinates;
Curve crv = capp.ActiveDocument.CreateCurve();
//int ptn = (cdts.Length / 2) – 1;
//for (int i = 1; i <= ptn; i++)
//{
// sp.AppendLineSegment(cdts[i * 2] – Pt0[0], cdts[(i * 2) + 1] – Pt0[1]);
//}
//crv.Closed = lsobj.Closed;
//Shape s1 = capp.ActiveLayer.CreateCurve(crv);
//s1.Fill.ApplyNoFill();
int ptn = cdts.Length / 2, para;
if (lsobj.Closed) para = ptn;
else para = ptn – 1;
List<EndPtLst> cdlst = new List<EndPtLst>();
for (int i = 1; i <= para; i++)
{
EndPtLst pt = new EndPtLst();
pt.X1 = cdts[(i – 1) * 2] – Pt0[0];
pt.Y1 = cdts[(i – 1) * 2 + 1] – Pt0[1];
if (lsobj.Closed && i == para)
{
pt.X2 = cdts[0] – Pt0[0];
pt.Y2 = cdts[1] – Pt0[1];
}
else
{
pt.X2 = cdts[i * 2] – Pt0[0];
pt.Y2 = cdts[(i * 2) + 1] – Pt0[1];
}
cdlst.Add(pt);
}
SubPath sp = crv.CreateSubPath(cdlst[0].X1, cdlst[0].Y1);
for (int i = 0; i < cdlst.Count; i++)
{
if (lsobj.GetBulge(i) == 0)
{
sp.AppendLineSegment(cdlst[i].X2, cdlst[i].Y2);
}
else
{
Curve lscrv = capp.ActiveDocument.CreateCurve();
double[] midpt = new double[] { (cdlst[i].X1 + cdlst[i].X2) / 2.0, (cdlst[i].Y1 + cdlst[i].Y2) / 2.0 };
double ang = Math.Atan2(cdlst[i].Y2 – cdlst[i].Y1, cdlst[i].X2 – cdlst[i].X1);
double hafl = Math.Sqrt(Math.Pow(cdlst[i].X2 – cdlst[i].X1, 2.0) + Math.Pow(cdlst[i].Y2 – cdlst[i].Y1, 2.0)) / 2.0;
double h = lsobj.GetBulge(i) * hafl;
double[] threept = new double[] { midpt[0] + h * Math.Cos(ang – Math.PI / 2.0), midpt[1] + h * Math.Sin(ang – Math.PI / 2.0) };
lscrv.AppendSubpathThreePointArc(cdlst[i].X1, cdlst[i].Y1, cdlst[i].X2, cdlst[i].Y2, threept[0], threept[1]);
Shape lss1 = capp.ActiveLayer.CreateCurve(lscrv);
foreach (Segment sg in lss1.Curve.Segments)
{
sp.AppendCurveSegment(sg.EndNode.PositionX, sg.EndNode.PositionY, sg.StartingControlPointLength, sg.StartingControlPointAngle, sg.EndingControlPointLength, sg.EndingControlPointAngle);
}
lss1.Delete();
}
}
crv.Closed = lsobj.Closed;
Shape s1 = capp.ActiveLayer.CreateCurve(crv);
if (lsobj.Closed) s1.Fill.ApplyNoFill();
}
if (obj.ObjectName.Equals(“AcDbArc”))
{
AcadArc lsobj = obj as AcadArc;
double r = lsobj.Radius;
double[] cenpt = lsobj.Center;
double sang = lsobj.StartAngle * 180 / Math.PI;
double eang = lsobj.EndAngle * 180 / Math.PI;
Shape s1 = capp.ActiveLayer.CreateEllipse2(cenpt[0] – Pt0[0], cenpt[1] – Pt0[1], r, -r, sang, eang);
}
if (obj.ObjectName.Equals(“AcDbCircle”))
{
AcadCircle lsobj = obj as AcadCircle;
double r = lsobj.Radius;
double[] cenpt = lsobj.Center;
Shape s1 = capp.ActiveLayer.CreateEllipse2(cenpt[0] – Pt0[0], cenpt[1] – Pt0[1], r);
s1.Fill.ApplyNoFill();
}
if (obj.ObjectName.Equals(“AcDbSpline”))
{
AcadSpline lsobj = obj as AcadSpline;
double[] pts = lsobj.ControlPoints;
BSpline bs = capp.ActiveDocument.CreateBSpline(lsobj.NumberOfControlPoints, lsobj.Closed);
if (lsobj.Closed)
{
for (int i = 1; i <= lsobj.NumberOfControlPoints; i++)
{
bs.ControlPoints[i].SetProperties(pts[(i – 1) * 3] – Pt0[0], pts[(i – 1) * 3 + 1] – Pt0[1], false);
}
Shape s1 = capp.ActiveLayer.CreateBSpline(bs);
s1.Fill.ApplyNoFill();
}
else
{
for (int i = 1; i <= lsobj.NumberOfControlPoints; i++)
{
if (i == 1 || i == lsobj.NumberOfControlPoints) bs.ControlPoints[i].SetProperties(pts[(i – 1) * 3] – Pt0[0], pts[(i – 1) * 3 + 1] – Pt0[1], true);
else bs.ControlPoints[i].SetProperties(pts[(i – 1) * 3] – Pt0[0], pts[(i – 1) * 3 + 1] – Pt0[1], false);
}
Shape s1 = capp.ActiveLayer.CreateBSpline(bs);
}
}
if (obj.ObjectName.Equals(“AcDbEllipse”))
{
AcadEllipse lsobj = obj as AcadEllipse;

double[] cenpt = lsobj.Center;
double[] maxis = lsobj.MajorAxis;
double[] normal = lsobj.Normal;
double[] startpt = new double[] { cenpt[0] + maxis[0], cenpt[1] + maxis[1] };
double ang = Math.Atan2(startpt[1] – cenpt[1], startpt[0] – cenpt[0]);
double major = lsobj.MajorRadius, minor = lsobj.MinorRadius, startang, entang;
if (normal[2] > 0)
{
startang = 360 – lsobj.EndParameter * 180 / Math.PI;//EndParameter
entang = 360 – lsobj.StartParameter * 180 / Math.PI;//StartParameter
}
else
{
startang = 360 – lsobj.StartParameter * 180 / Math.PI;//EndParameter
entang = 360 – lsobj.EndParameter * 180 / Math.PI;//StartParameter
}
while (startang < -360 || startang > 360)
{
if (startang < -360) startang += 360;
if (startang > 360) startang -= 360;
}
while (entang < -360 || entang > 360)
{
if (entang < -360) entang += 360;
if (entang > 360) entang -= 360;
}
Shape s1 = capp.ActiveLayer.CreateEllipse2(cenpt[0] – Pt0[0], cenpt[1] – Pt0[1], major, minor);
s1.Rotate(ang * 180 / Math.PI);
s1.Ellipse.StartAngle = startang;
s1.Ellipse.EndAngle = entang;
s1.Fill.ApplyNoFill();
}
if (obj.ObjectName.Equals(“AcDbText”))
{
AcadText lsobj = obj as AcadText;
string str = lsobj.TextString;
double[] inpt = lsobj.InsertionPoint;
double[] alpt = lsobj.TextAlignmentPoint;
double[] txtpt;
if (Enumerable.SequenceEqual(alpt, new double[] { 0.0, 0.0, 0.0 })) txtpt = inpt;
else txtpt = alpt;
cdrAlignment cdral;
switch (lsobj.Alignment)
{
case AcAlignment.acAlignmentLeft:
case AcAlignment.acAlignmentTopLeft:
case AcAlignment.acAlignmentMiddleLeft:
case AcAlignment.acAlignmentBottomLeft:
cdral = cdrAlignment.cdrLeftAlignment;
break;
case AcAlignment.acAlignmentCenter:
case AcAlignment.acAlignmentMiddle:
case AcAlignment.acAlignmentTopCenter:
case AcAlignment.acAlignmentMiddleCenter:
case AcAlignment.acAlignmentBottomCenter:
cdral = cdrAlignment.cdrCenterAlignment;
break;
case AcAlignment.acAlignmentRight:
case AcAlignment.acAlignmentTopRight:
case AcAlignment.acAlignmentMiddleRight:
case AcAlignment.acAlignmentBottomRight:
cdral = cdrAlignment.cdrRightAlignment;
break;
default:
cdral = cdrAlignment.cdrCenterAlignment;
break;
}
switch (lsobj.Alignment)
{
case AcAlignment.acAlignmentLeft:
case AcAlignment.acAlignmentCenter:
case AcAlignment.acAlignmentRight:
break;
case AcAlignment.acAlignmentTopLeft:
case AcAlignment.acAlignmentTopCenter:
case AcAlignment.acAlignmentTopRight:
txtpt[1] = txtpt[1] – lsobj.Height;
break;
case AcAlignment.acAlignmentMiddleLeft:
case AcAlignment.acAlignmentMiddleCenter:
case AcAlignment.acAlignmentMiddleRight:
txtpt[1] = txtpt[1] – lsobj.Height / 2.0;
break;
case AcAlignment.acAlignmentBottomLeft:
case AcAlignment.acAlignmentBottomCenter:
case AcAlignment.acAlignmentBottomRight:
txtpt[1] = inpt[1];
break;
default:
txtpt[1] = txtpt[1] – lsobj.Height / 2.0;
break;
}
Shape s1 = capp.ActiveLayer.CreateArtisticText(txtpt[0] – Pt0[0], txtpt[1] – Pt0[1], str, cdrTextLanguage.cdrLanguageNone, cdrTextCharSet.cdrCharSetMixed, “仿宋”, (float)(lsobj.Height * 72 / 25.4), cdrTriState.cdrUndefined, cdrTriState.cdrUndefined, cdrFontLine.cdrMixedFontLine, cdral);
s1.Fill.UniformColor.CMYKAssign(0, 0, 0, 100);
s1.Outline.SetNoOutline();
}
if (obj.ObjectName.Equals(“AcDbMText”))
{
AcadMText lsobj = obj as AcadMText;
string str = Regex.Replace(MyMethod.GetMTextRegstr(lsobj.TextString), “\\\\P”, “\\V”);
double[] inpt = lsobj.InsertionPoint;
cdrAlignment cdral;
switch (lsobj.AttachmentPoint)
{
case AcAttachmentPoint.acAttachmentPointTopLeft:
case AcAttachmentPoint.acAttachmentPointMiddleLeft:
case AcAttachmentPoint.acAttachmentPointBottomLeft:
cdral = cdrAlignment.cdrLeftAlignment;
break;
case AcAttachmentPoint.acAttachmentPointTopCenter:
case AcAttachmentPoint.acAttachmentPointMiddleCenter:
case AcAttachmentPoint.acAttachmentPointBottomCenter:
cdral = cdrAlignment.cdrCenterAlignment;
break;
case AcAttachmentPoint.acAttachmentPointTopRight:
case AcAttachmentPoint.acAttachmentPointMiddleRight:
case AcAttachmentPoint.acAttachmentPointBottomRight:
cdral = cdrAlignment.cdrRightAlignment;
break;
default:
cdral = cdrAlignment.cdrCenterAlignment;
break;
}
switch (lsobj.AttachmentPoint)
{
case AcAttachmentPoint.acAttachmentPointTopLeft:
case AcAttachmentPoint.acAttachmentPointTopCenter:
case AcAttachmentPoint.acAttachmentPointTopRight:
inpt[1] = inpt[1] – lsobj.Height;
break;
case AcAttachmentPoint.acAttachmentPointMiddleLeft:
case AcAttachmentPoint.acAttachmentPointMiddleCenter:
case AcAttachmentPoint.acAttachmentPointMiddleRight:
inpt[1] = inpt[1] – lsobj.Height / 2.0;
break;
}
Shape s1 = capp.ActiveLayer.CreateArtisticText(inpt[0] – Pt0[0], inpt[1] – Pt0[1], str, cdrTextLanguage.cdrLanguageNone, cdrTextCharSet.cdrCharSetMixed, “仿宋”, (float)(lsobj.Height * 72 / 25.4), cdrTriState.cdrUndefined, cdrTriState.cdrUndefined, cdrFontLine.cdrMixedFontLine, cdral);
s1.Fill.UniformColor.CMYKAssign(0, 0, 0, 100);
s1.Outline.SetNoOutline();
}
#endif
}
}
capp.ActiveDocument.EndCommandGroup(); //’结束记录操作
capp.Application.Optimization = false; //’恢复界面刷新
capp.ActiveWindow.Refresh(); //’刷新当前界面
stylesController.Plusevent();
}

分享到 :
制作图框–tk
2021-12-25 下一篇