CAD计算两曲线间最短路径(com接口)
|
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
44
45
46
47
48
49
50
|
axMxDrawX1.StopAllTwinkeEnt(); MxDrawEntity ent1 = (MxDrawEntity)(axMxDrawX1.GetEntity("选择开始曲线:") ); if (ent1 == null) return; MxDrawEntity ent2 = (MxDrawEntity)(axMxDrawX1.GetEntity("选择结束曲线:")); if (ent2 == null) return; MxDrawDatabase database = (MxDrawDatabase)(axMxDrawX1.GetDatabase()); MxDrawResbuf param = new MxDrawResbuf(); param.AddObjectId(ent1.ObjectID); param.AddObjectId(ent2.ObjectID); MxDrawResbuf ret = (MxDrawResbuf)(axMxDrawX1.CallEx("ExApp_ShortestPath",param)); if (ret.AtString(0) != "Ok") { MessageBox.Show("曲线不连通!"); } else { for (int i = 1; i < ret.Count; i++) { Int64 lId = ret.AtObjectId(i); axMxDrawX1.TwinkeEnt(lId); // 由lId得到对象,并得到对象的坐标 MxDrawMcDbObject obj = database.ObjectIdToObject(lId); if (obj == null) continue; if (obj is MxDrawLine) { MxDrawLine line = (MxDrawLine)obj; MxDrawPoint sPt = (MxDrawPoint)(line.StartPoint); MxDrawPoint ePt = (MxDrawPoint)(line.EndPoint); //MessageBox.Show(sPt.x.ToString() + "," + sPt.y.ToString() + "," // + ePt.x.ToString() + "," + ePt.y.ToString() // ); } else if (obj is MxDrawText) { MxDrawText text = (MxDrawText)obj; // 是这文字对象 } } } |
浙公网安备 33010602011771号