找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 414|回复: 0

[编程申请]:如何画三维旋转立体图(多义线包含直线和弧线)

[复制链接]
发表于 2003-3-11 20:49:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
晓东,你好!
我现在有个问题:
我不知道如何画由一条带直线和和弧线组成的多义线旋转而成的三维立体图!
我原先是这样做的:

AcGePoint2dArray pt2d;
AcGeVector3d normal(0.0, 0.0, 1.0);
AcDbPolyline *poly = new AcDbPolyline;
AcGePoint3d moveBy(0, 0, 0);

pt2d.setLogicalLength(8);
pt2d[0].set(x1, y1);
pt2d[1].set(x2, y2);
pt2d[2].set(x3, y3);
pt2d[3].set(x4, y4);
pt2d[4].set(x5, y5);
pt2d[5].set(x6, y6);
pt2d[6].set(x7, y7);
pt2d[7].set(x8, y8);
//其中(xi, yi)代表顶点的坐标

AcDbPolyline *poly = new AcDbPolyline;

for(int i = 0; i < 8; i++)
{
poly->addVertexAt(i, pt2d);
}

poly->setClosed(Adesk::kTrue);
poly->setNormal(normal);

AcDbVoidPtrArray lines, regions;

lines.append((void *)poly);
AcDbRegion::createFromCurves(lines, regions);
AcDbRegion *pRegion = AcDbRegion::cast((AcRxObject *)regions[0]);
AcDb3dSolid *p3dObj = new AcDb3dSolid;
AcGePoint3d axisPoint(0.0, 0.0, 0.0);
AcGeVector3d axisDir(0.0, 1.0, 0.0);
double Revolution = 2.0 * PI;
AcGePoint3d origin(0.0, 0.0, 0.0);
AcGeVector3d x(1, 0, 0), y(0, 1, 0), z(0, 0, 1);
AcGeMatrix3d mat;
if(Acad::eOk == p3dObj1->revolve(pRegion1, axisPoint, axisDir,
Revolution))
{
mat.setCoordSystem(origin, x, y, z);
p3dObj->transformBy(mat);
}

delete pRegion1;

//把实体假如数据库
AcDbObjectId p3dObjId = AddEntityToDbs(p3dObj);

p3dObj1->close();

可是,这只能话直线段的封闭多义线的旋转三维图!
恳请晓东帮忙!谢谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-20 20:32 , Processed in 0.178830 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表