wweien 发表于 2002-9-19 09:27:00

请问怎样才能得到已知AcDbCurve的起点和终点坐标?

我用AcDbCurve *pLine = new AcDb2dPolyline(
             k2dSimplePoly,               
         vertices,
          0,
          Adesk::kFalse,
          1,
          1,
         NULL) ;
画了一条线,现在想通过pline来提取它的起点和终点的坐标,请问该怎么做?

leeyeafu 发表于 2002-9-19 11:08:00

AcDbCurve的起点和终点

其实,起点和终点坐标就在AcDb2dPolyline()构造函数的vertices参数中,这个参数是AcGePoint3dArray类型的,AcGePoint3dArray是AcArray类模板的一个模板类,可以用vertices->first()返回起点坐标,用vertices->last()返回终点坐标。至于vertices参数的获取,可以用
AcGePoint3d AcDb2dPolyline::vertexPosition(const AcDb2dVertex& vert) const;
函数。

wweien 发表于 2002-9-19 11:55:00

thank you very much!

wweien 发表于 2002-9-20 10:56:00

我还不太明白,再想请问一下怎样我才能得到AcDb2dVertex& vert?

不好意思 leeyeafu 给我的AcGePoint3d AcDb2dPolyline::vertexPosition(const AcDb2dVertex& vert) const;函数。我看了帮助还是不会用。想再请问一下。const AcDb2dVertex& vert是不是已知的顶点?这个函数的返回值是一个AcGePoint3d还是一个AcGePoint3dArrary?
我是在做一个多义线的反应器,用到void
AsdkObjectToNotifyer::modified(const AcDbObject* pObj)
{
AcDb2dPolyline *pLine = AcDb2dPolyline::cast(pObj);
//--------
现在我想得到pline的起点和终点坐标
却不知道怎样做?
另外如果我想把一个已知圆心和多义线的起点联系起来。用
AcGePoint3d q = pCircle->center();
AcGePoint3dArray vertices;
   vertices.append(q);
       
pLine->appendVertex(vertices);
怎样才能保证q一定是和起点联系的呢?

leeyeafu 发表于 2002-9-20 13:01:00

AcDb2dVertex是AcDb2dPolyline的子实体(Subentity)对象

开始我没明白你的意图,AcDb2dPolyline::vertexPosition()返回的是AcGePoint3d对象。要获取AcDb2dVertex 对象,需使用AcDb2dPolyline子实体读写函数(Subentity Access Functions)。
用pLine->appendVertex(); 可以添加顶点,但你的程序中参数使用不对。应该是这样:
AcGePoint3d *q = pCircle->center();
AcDb2dVertex *pVertex=new AcDb2dVertex(q);
pLine->appendVertex(pVertex);
这样一个已知圆心和多义线的终点联系起来了。
如果想把一个已知圆心和多义线的起点联系起来,要用到AcDb2dPolyline::vertexIterator();顶点浏览器函数。

wweien 发表于 2002-9-20 15:30:00

不好意思,请问怎样使用AcDb2dPolyline子实体读写函数?或哪有参考的例子?

谢谢,这方面的书籍真的很难找。。
页: [1]
查看完整版本: 请问怎样才能得到已知AcDbCurve的起点和终点坐标?