找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 300|回复: 1

[求助]:好心人帮忙解释一下程序

[复制链接]
发表于 2004-7-31 11:28:31 | 显示全部楼层 |阅读模式

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

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

×
void lwpoly()
{
        AcDbDatabase *pCurDb;
        AcDbBlockTable *pBlkTable;
        AcDbBlockTableRecord *pBlkTableRecord;
        AcDbPolyline *pPolyEnt;
        AcDbObjectId polyId;
        AcGePoint2d pkPt;
        AcGePoint2dArray arPts;
        ads_point pick, lastpt;
        AcGeMatrix3d ucsMat;
        AcGeMatrix2d ucsMat2d;

        int retCode;
        int numPts;

        Adesk::Boolean keepPicking = Adesk::kTrue;
        Adesk::Boolean firstPick = Adesk::kTrue

        acdbUcsMatrix(ucsMat);

        ucsMat2d(0,0) = ucsMat(0,0);
        ucsMat2d(0,1) = ucsMat(0,1);
        ucsMat2d(0,2) = ucsMat(0,3);
        ucsMat2d(1,0) = ucsMat(1,0);
        ucsMat2d(1,1) = ucsMat(1,1);
        ucsMat2d(1,2) = ucsMat(1,3);

        while(keepPicking)
        {
                if(firstPick)
                {
                        retCode = acedGetPoint(NULL, "\nPick first point: ", pick);
                        firstPick = Adesk::kFalse;
                }
                else
                {                       
                        acdbPointSet(pick, lastpt);
                        retCode = acedGetPoint(pick, "\nPick another point - [ENTER] for no more: ", pick);
                        acedGrDraw(lastpt, pick, 1, 0);
                }
                if(retCode != RTNORM)
                {
                        keepPicking = Adesk::kFalse;
                        break;
                }

                pkPt.x = pick[X];
                pkPt.y = pick[Y];

AcGePoint2dArray    arPts.append(pkPt);
        }
        acedRedraw(NULL, 1);
        if(arPts.isEmpty())
        {
                acutPrintf("\nEmpty array.");
                return;
        }

                if(arPts.length() < 2)
        {
                acutPrintf("\nArray only contains one point.");
                return;
        }

        numPts = arPts.length();

        pCurDb = acdbHostApplicationServices()->workingDatabase();
        pCurDb->getBlockTable(pBlkTable, AcDb::kForRead);
        pBlkTable->getAt(ACDB_MODEL_SPACE, pBlkTableRecord, AcDb::kForWrite);
        pBlkTable->close();

        pPolyEnt = new AcDbPolyline(numPts);
        for(int idx = 0; idx < numPts; idx++)
        {
                pkPt = arPts.at(idx);
                pkPt.transformBy(ucsMat2d);
                pPolyEnt->addVertexAt(idx, pkPt);
        }

        pBlkTableRecord->appendAcDbEntity(polyId, pPolyEnt);
        pBlkTableRecord->close();
        pPolyEnt->close();
}


主要是pPolyEnt = new AcDbPolyline(numPts)前的部分
AcArray类模板不好理解
最好能帮助帮助注释一下
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-5 14:30:04 | 显示全部楼层
C++的书讲有类模板
AcArray相当于一个基类,可以为很多数组类型服务,以相同的操作相同的接口实现相同的结果
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-21 21:52 , Processed in 0.268490 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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