CAD动态绘制多段线(com接口)
主要用到函数说明:
_DMxDrawX::DrawLine
绘制一个直线。详细说明如下:
| 参数 | 说明 |
|---|---|
|
DOUBLE dX1 |
直线的开始点x坐标 |
|
DOUBLE dY1 |
直线的开始点y坐标 |
|
DOUBLE dX2 |
直线的结束点x坐标 |
|
DOUBLE dY2 |
直线的结束点y坐标 |
_DMxDrawX::PathLineTo
把路径下一个点移到指定位置。详细说明如下:
| 参数 | 说明 |
|---|---|
|
DOUBLE dX |
点的X坐标 |
|
DOUBLE dY |
点的Y坐标 |
_DMxDrawX::DrawPathToPolyline
把路径变成一个Polyline。
c#中实现代码说明:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
private void DrawPolyline(){ MxDrawPoint point1 = (MxDrawPoint)(axMxDrawX1.GetPoint(false, 0, 0, "点取第一点:"));
if (point1 == null)
return;
//把路径的开始位置移动指定的点
//参数一为点的X坐标 ,参数二为点的Y坐标
axMxDrawX1.PathMoveTo(point1.x, point1.y);
//与用户交互到在图上提取一个点
MxDrawPoint point2 = (MxDrawPoint)(axMxDrawX1.GetPoint(true, point1.x, point1.y, "点取下一点:"));
if (point2 == null)
return;
//把路径下一个点移到指定位置
//参数一为点的X坐标 ,参数二为点的Y坐标
axMxDrawX1.PathLineTo(point2.x, point2.y);
long id = axMxDrawX1.DrawLine(point1.x, point1.y, point2.x, point2.y);
//创建一个数组
long[] tmpobj = new long[1000];
int iCount = 0;
tmpobj[iCount++] = id;
point1 = point2;
while (true)
{
point2 = (MxDrawPoint)(axMxDrawX1.GetPoint(true, point1.x, point1.y, "点取下一点:"));
if (point2 == null)
break;
axMxDrawX1.PathLineTo(point2.x, point2.y);
id = axMxDrawX1.DrawLine(point1.x, point1.y, point2.x, point2.y);
tmpobj[iCount++] = id;
point1 = point2;
}
for (int i = 0; i < iCount; i++)
{
//由id删除一个对象
axMxDrawX1.Erase(tmpobj[i]);
}
//把路径变成一个Polyline
axMxDrawX1.DrawPathToPolyline();
} |