[益]CAD二次,line 成polyline
各位高手大家好,
小弟最近在一,
的概念是另用多座,串起,
在碰到的是,一是由很多段所成,
我要如何撰指令,可以多的段,合成一聚合呢?
以下是我所撰的程式:
List<double> repeat = new List<double>();
List<string> mmXX = new List<string>();
List<string> mmZZ = new List<string>();
double x = 1505.4617;
double y = 3200 + hh;
for (int i = 0; i < tList.Count; i += 2)
{
mmXX = tList[i].Tendon_X;
mmZZ = tList[i].Tendon_Z;
for (int j = 2; j < tList[i].Tendon_NO.Count; j++)
{
if (!repeat.Contains(Convert.ToDouble(mmXX[j])))
{
repeat.Add(Convert.ToDouble(mmXX[j]));
}
else
{
break;
}
if (Convert.ToDouble(mmXX[j]) != 0 && Convert.ToDouble(mmXX[j]) <= ll * lu * 100)
{
AcadLine linePT1;
double[] startpointPT1 = new double[] { x + Convert.ToDouble(mmXX[j - 1]),
y + Convert.ToDouble(mmZZ[j - 1]),
0 };
double[] endpointPT1 = new double[] { x + Convert.ToDouble(mmXX[j]),
y + Convert.ToDouble(mmZZ[j]),
0 };
linePT1 = gbl_doc.ModelSpace.AddLine(startpointPT1, endpointPT1);
linePT1.Layer = "L3";
//AcadPolyline plinePT;
//double[] plpointsPT = new double[] { x + Convert.ToDouble(mmXX[j-1]),
// y + Convert.ToDouble(mmZZ[j-1]),
// 0,
// x + Convert.ToDouble(mmXX[j]),
// y + Convert.ToDouble(mmZZ[j]),
// 0};
//plinePT = gbl_doc.ModelSpace.AddPolyline(plpointsPT);
//plinePT.Update();
//plinePT.Layer = "L3";
}
}
}
色的指令是我著用聚合的方式撰,
但因的方法不,所以最後呈的跟用段撰所生的果一模一......
想了很久在想不到解法,希望有高手可以破盲~
在CAD程式中,工作面有: 修改-物件-聚合 可以到我想要的效果(段成聚合),
不知...要如何在C# 中完成指令呢?
怕各位看得有,整理一下重:
1.使用聚合方式撰,直接出一。
2.或者,增加指令,段成聚合。
各位高手指教,感各位!
[解决办法]
没接触过。
不过建议楼主展示问题代码时用C#模板,方便解答者阅读。
期待高手来解答,帮楼主顶一个。
[解决办法]
因同人不能回三次,只好再申一解答......
次debug後....
- C# code
#region//------力腱 List<double> repeat = new List<double>(); List<string> mmXX = new List<string>(); List<string> mmZZ = new List<string>(); List<double> plpointsPTX = new List<double>(); List<double> plpointsPTY = new List<double>(); AcadPolyline plinePT; double[] plpointsPT = new double[] { }; double x = 1505.4617; double y = 3200 + hh; int ppt = 0; for (int i = 0; i < tList.Count; i += 2) { mmXX = tList[i].Tendon_X; mmZZ = tList[i].Tendon_Z; for (int j = 1; j < tList[i].Tendon_NO.Count; j++) { if (!repeat.Contains(Convert.ToDouble(mmXX[j]))) { repeat.Add(Convert.ToDouble(mmXX[j])); } else { continue; } if (Convert.ToDouble(mmXX[j]) <= ll * lu * 100) { plpointsPTX.Add(x + Convert.ToDouble(mmXX[j])); plpointsPTY.Add(y + Convert.ToDouble(mmZZ[j])); } } } plpointsPT = new double[plpointsPTX.Count * 3]; for (int cpt = 0; cpt < plpointsPTX.Count * 3; cpt += 3) { plpointsPT[cpt] = plpointsPTX[ppt]; plpointsPT[cpt + 1] = plpointsPTY[ppt]; plpointsPT[cpt + 2] = 0; ppt++; } plinePT = gbl_doc.ModelSpace.AddPolyline(plpointsPT); plinePT.Layer = "L3"; #endregion