CStlSegArray::m_SToESeg 对于线筋,代表的是第一根线筋的长度和方向。
比如
m_SToESeg=AcGeVector3d(100, 0, 0),说明该线筋是一根水平的,长度为100的线筋。
m_SToESeg=AcGeVector3d(0, 50, 0),说明该线筋是一根竖直的,长度为50的线筋。
m_SToESeg=AcGeVector3d(100, 100, 0),说明该线筋是一根与X轴成45度的,长度为三角形斜边长度的线筋(三角形的两条直角边长度均为100)。
从第二根线筋开始,每一根线筋的长度和方向由
pSegs->AddSeg(vec, vec1, dis, 2, 2, 0);里的vec, vec1决定。
很多时候,代码是在pSegs->AddSeg()时是随意赋值的,然后用下面的代码来处理
StlSeg* pSeg;
pSeg = pSegs->GetAt(0);
AcGeVector3dArray aryVec;
aryVec.append(AcGeVector3d(100, 200.0, 0.0));//第2根线筋的起点距离第1根线筋的起点的距离为:x方向100,Y方向200
aryVec.append(AcGeVector3d(100, 200.0, 0.0));//第3根线筋的起点距离第2根线筋的起点的距离为:x方向100,Y方向200
aryVec.append(AcGeVector3d(100, 200.0, 0.0));//第4根线筋的起点距离第3根线筋的起点的距离为:x方向100,Y方向200
pSeg->SetStartSpaces(aryVec);
AcGeVector3dArray aryVec2;
aryVec2.append(AcGeVector3d(100, 200.0, 0.0));//第2根线筋的终点距离第1根线筋的终点的距离为:x方向100,Y方向200
aryVec2.append(AcGeVector3d(100, 30.0, 0.0));//第3根线筋的终点距离第2根线筋的终点的距离为:x方向100,Y方向30
aryVec2.append(AcGeVector3d(100, 20.0, 0.0));//第4根线筋的终点距离第3根线筋的终点的距离为:x方向100,Y方向20
pSeg->SetEndSpaces(aryVec2);
需要注意的是,如果
aryVec.append(AcGeVector3d(100, 200.0, 0.0));//第2根线筋的起点距离第1根线筋的起点的距离为:x方向100,Y方向200
...
aryVec2.append(AcGeVector3d(0, 200.0, 0.0));//第2根线筋的终点距离第1根线筋的终点的距离为:x方向0,Y方向200
那么,实际画出的效果上看,第2根线筋的起止点在X轴方向与第一根线筋是一样的。也就是说,如果想要第二根线筋真的向右移动100,必须在起止间距里都设置x值为100
比如
m_SToESeg=AcGeVector3d(100, 0, 0),说明该线筋是一根水平的,长度为100的线筋。
m_SToESeg=AcGeVector3d(0, 50, 0),说明该线筋是一根竖直的,长度为50的线筋。
m_SToESeg=AcGeVector3d(100, 100, 0),说明该线筋是一根与X轴成45度的,长度为三角形斜边长度的线筋(三角形的两条直角边长度均为100)。
从第二根线筋开始,每一根线筋的长度和方向由
pSegs->AddSeg(vec, vec1, dis, 2, 2, 0);里的vec, vec1决定。
很多时候,代码是在pSegs->AddSeg()时是随意赋值的,然后用下面的代码来处理
StlSeg* pSeg;
pSeg = pSegs->GetAt(0);
AcGeVector3dArray aryVec;
aryVec.append(AcGeVector3d(100, 200.0, 0.0));//第2根线筋的起点距离第1根线筋的起点的距离为:x方向100,Y方向200
aryVec.append(AcGeVector3d(100, 200.0, 0.0));//第3根线筋的起点距离第2根线筋的起点的距离为:x方向100,Y方向200
aryVec.append(AcGeVector3d(100, 200.0, 0.0));//第4根线筋的起点距离第3根线筋的起点的距离为:x方向100,Y方向200
pSeg->SetStartSpaces(aryVec);
AcGeVector3dArray aryVec2;
aryVec2.append(AcGeVector3d(100, 200.0, 0.0));//第2根线筋的终点距离第1根线筋的终点的距离为:x方向100,Y方向200
aryVec2.append(AcGeVector3d(100, 30.0, 0.0));//第3根线筋的终点距离第2根线筋的终点的距离为:x方向100,Y方向30
aryVec2.append(AcGeVector3d(100, 20.0, 0.0));//第4根线筋的终点距离第3根线筋的终点的距离为:x方向100,Y方向20
pSeg->SetEndSpaces(aryVec2);
需要注意的是,如果
aryVec.append(AcGeVector3d(100, 200.0, 0.0));//第2根线筋的起点距离第1根线筋的起点的距离为:x方向100,Y方向200
...
aryVec2.append(AcGeVector3d(0, 200.0, 0.0));//第2根线筋的终点距离第1根线筋的终点的距离为:x方向0,Y方向200
那么,实际画出的效果上看,第2根线筋的起止点在X轴方向与第一根线筋是一样的。也就是说,如果想要第二根线筋真的向右移动100,必须在起止间距里都设置x值为100