本人想在添加按钮点击的时候纪录下组件名字,并输出在textbox5中,然后顺便记录下坐标,然后再在计算按钮中调用,并计算全部在textbox5中显示的组件的距离和,在textbox6中显示距离和,可是运行下来,textbox6的显示一直是0,这是为什么啊?是哪里逻辑不对吗?小白勿喷…
public struct MY_POS
{
public double x;
public double y;
public double z;
}
private void 纪录_Click(object sender, EventArgs e) // 人行走路径点击选择
{
IvcSelection Selection = app.findSelection("Component");
for (int i = 0; i < Selection.ItemCount; i++)
{
comp = (IvcComponent)Selection.getItem(i);
object name = comp.getProperty("Name");
double[] matrix = (double[])comp.RootNode.getProperty("WorldPositionMatrix");//获得坐标下x,y,z的坐标
if (textBox5.Text != "")
{
textBox5.Text += "->" + name.ToString();
}
else
{
textBox5.Text = name.ToString();
}
string[] tmp = textBox5.Text.Split("->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);//根据textbox的输出分割得到pos[]是行数
MY_POS [] pos = new MY_POS[tmp.Length];
for (int W = 0; W < tmp.Length; W++)
{
pos[W].x = matrix[0];
pos[W].y = matrix[1];
pos[W].z = matrix[2];
}
}
}
private void 计算_Click(object sender, EventArgs e)
{
string[] tmp = textBox5.Text.Split("->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
double sum = 0;
MY_POS[] pos = new MY_POS[tmp.Length];
for (int W = 0; W < tmp.Length; W++)
{
double xd = pos[W].x - pos[W + 1].x;
double yd = pos[W].y - pos[W + 1].y;
double zd = pos[W].z - pos[W + 1].z;
sum += Math.Sqrt(xd * xd + yd * yd + zd * zd);
textBox6.Text = sum.ToString();
}
}
解决方案
50
24 行处定义的 pos 是局部变量
25 ~ 30 行对他的赋值,在方法结束后就丢失了
37 行处定义了 pos,但赋的是空值
38 ~ 45 只是在对一个空值数组在做计算
25 ~ 30 行对他的赋值,在方法结束后就丢失了
37 行处定义了 pos,但赋的是空值
38 ~ 45 只是在对一个空值数组在做计算