AcDbCurve::extend 延长指定多义线的前后长度

int myExtendPolyline(AcDbPolyline* pl,double sOff,double eOff)
{
	ASSERT(pl);
	if (pl->numVerts() < 2)
	{
		return 0;
	}
	if (sOff > 0)
	{
		AcGePoint3d sPt,sPt2;
		pl->getStartPoint(sPt);
		pl->getPointAt(1,sPt2);

		double td1,td2;
		pl->getDistAtPoint(sPt,td1);
		pl->getDistAtPoint(sPt2,td2);
		double off = td2 - td1;
		
		double sParam = fabs(sOff) / off;

		if(pl->extend(-sParam) != Acad::eOk)
		{
			ASSERT(0);
			return 0;
		}
	}
	if (eOff > 0)
	{
		AcGePoint3d ePt,ePt2;
		pl->getEndPoint(ePt);
		pl->getPointAt(pl->numVerts() - 2,ePt2);

		double td1,td2;
		pl->getDistAtPoint(ePt2,td1);
		pl->getDistAtPoint(ePt,td2);
		double off = td2 - td1;

		double eparam = fabs(eOff) / off;
		if(pl->extend(eparam) != Acad::eOk)
		{
			ASSERT(0);
			return 0;
		}
	}

	return 1;
}

阅读更多
个人分类: Arx
想对作者说点什么? 我来说一句

CAD计算线段长度的LISP程序

2010年10月08日 883B 下载

多义线生成

2007年12月25日 1.16MB 下载

lisp连续画线

2016年09月07日 1KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭