找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 939|回复: 19

2013-08-14 QQ群:CAD开发高级服务群(325489190) 聊天记录:看了昨天的讨论今天有感而发一个

  [复制链接]
发表于 2013-8-14 06:08:54 | 显示全部楼层 |阅读模式

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

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

×
孤单的时候~~(286168051)于2013-08-14 06-08-54:
看了昨天的讨论今天有感而发一个
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2013-8-14 06:09:17 | 显示全部楼层
孤单的时候~~(286168051)于2013-08-14 06-09-17:
static void Asdkaddvertexaddvertex(void)
        {
                // Add your code for command Asdkaddvertex.addvertex here
                ads_name ss; ads_point pt,pt1;
                if (acedEntSel(_T("\n选择要加点的二维线:"),ss,pt)!=RTNORM)
                {
                        return;
                }
                AcDbObjectId id;
                acdbGetObjectId(id,ss);
                AcDbEntity *pEnt;
                acdbOpenObject(pEnt,id,AcDb::kForWrite);
                if (pEnt->isKindOf(AcDb2dPolyline::desc()))
                {
                        if (acedGetPoint(pt,_T("\n指定插入点:"),pt1)!=RTNORM)
                        {
                                return;
                        }
                        AcDb2dPolyline *pPline = AcDb2dPolyline::cast(pEnt);
                        if (pPline->polyType()!=AcDb::k2dSimplePoly)
                        {
                                AfxMessageBox(_T("请选择非拟合线!"));
                                pEnt->close();
                                return;
                        }
                        AcGePoint3d p0 (pt[X],pt[Y]        ,0.0);
                        AcGePoint3d p1  (pt1[X],pt1[Y],0.0);
                        AcGePoint3d p2;
                        pPline->getClosestPointTo(p0,p2);
                        double param1(0);
                        pPline->getParamAtPoint(p2,param1);
                        int n = int (param1)   ;
                    AcDbObjectIterator *pVertIter = pPline->vertexIterator();
                        AcDb2dVertex *pVertex;
                        AcGePoint3d location;
                        AcDbObjectId vertexObjId;
                         
                        for (int vertexNumber = 0; !pVertIter->done(); vertexNumber++, pVertIter->step())
                        {
                                vertexObjId = pVertIter->objectId();
                                acdbOpenObject(pVertex, vertexObjId, AcDb::kForRead);
                                double bugle = pVertex->bulge();
                                double startwidth = pVertex->startWidth();
                                double endwidth = pVertex->endWidth();
                                double tangen = pVertex->tangent();
                                location = pVertex->position();
                                if(vertexNumber == n)
                                {
                                  AcDb2dVertex *pNewVertex = new AcDb2dVertex(p1,bugle,startwidth,endwidth,tangen);
                                  
                                  AcDbObjectId newId;
                                  pPline->insertVertexAt(newId,vertexObjId,pNewVertex);
                                  pNewVertex->close();
                                }
                                pVertex->close();
                        }
                        delete pVertIter;
           
                    

                }
                else
                {
                        AfxMessageBox(_T("请选择二维线!"));
                       
                }
                pEnt->close();
        }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 09:22:19 | 显示全部楼层
huangshan(460534293)于2013-08-14 09-22-19:
谁帮忙看下这个属性块怎么只有个块点,没有块文字
        // 获得绘图比例尺
        struct resbuf cxm;
        cxm.restype = RTREAL;
        acedGetVar("USERR1",&cxm);
        ads_real blc,blc1;
        blc = cxm.resval.rreal;
        if (blc == 0.0)
        {
            if (acedGetReal("\n请输入比例尺",&blc1) != RTNORM)
            {
                blc1 = 500.00;
                cxm.resval.rreal = blc1;
                acedSetVar("USERR1",&cxm);
            }
            cxm.resval.rreal = blc1;
            acedSetVar("USERR1",&cxm);
        }
        // 获得当前数据库的块表
        AcDbBlockTable *pBlkTbl;
        acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForWrite);
        // 查找用户指定的块定义是否存在
        CString strBlkDef;
        strBlkDef.Format("%s", "GC200");
        if (!pBlkTbl->has(strBlkDef))
        {
            acutPrintf("\n当前图形中未包含GC200的块定义!");
            pBlkTbl->close();
            return;
        }
        // 获得用户输入的块参照的插入点
        AcGePoint3d basePt(0,0,0);
        if (acedGetPoint(NULL, "\n输入块参照的插入点:",asDblArray(basePt)) != RTNORM)
        {
            pBlkTbl->close();
            return;
        }
        char height[20];
        if (acedGetString(NULL,"\n输入高程值:",height) != RTNORM)
        {
            pBlkTbl->close();
            return;
        }
        // 定义图块比例系数
        double xyzScale = blc * 0.001;
        AcGePoint3d newbasePt(basePt.x,basePt.y,atof(height));     // 设置图块插入点
        AcGePoint3d textPt(basePt.x + blc * 0.0012,basePt.y,0.0);  // 设置文字插入点
        double textH(blc * 0.002);  // 设置文字高度
        // 获得用户指定的块表记录
        AcDbObjectId blkDefId;
        pBlkTbl->getAt(strBlkDef,blkDefId);
        // 创建块参照引用对象
        AcDbBlockReference *pBlkRef = new AcDbBlockReference(newbasePt,blkDefId);
        // 将块参照添加到模型空间
        AcDbBlockTableRecord *pBlkTblRcd;
        pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd, AcDb::kForWrite);
        // 设置块比例系数
        pBlkRef->setScaleFactors(xyzScale);
        pBlkTbl->close();
        AcDbObjectId entId;
        pBlkTblRcd->appendAcDbEntity(entId,pBlkRef);
        // 属性插入部分
        AcDbBlockTableRecord *pBlkDefRcd;   // 定义指向块表记录的指针
        acdbOpenObject(pBlkDefRcd,blkDefId,AcDb::kForRead);   // 获得指向块表记录的指针
        if (pBlkDefRcd->hasAttributeDefinitions())
        {
            AcDbBlockTableRecordIterator *pIterator;  // 定义遍历块表记录的浏览器
            pBlkDefRcd->newIterator(pIterator);
            AcDbEntity *pEnt;   // 定义指向实体的指针
            AcDbAttributeDefinition *pAttDef;  // 定义指向属性定义的指针
            for (pIterator->start();!pIterator->done();pIterator->step())
            {
                pIterator->getEntity(pEnt,AcDb::kForRead);  // 得到下一个实体
                pAttDef = AcDbAttributeDefinition::cast(pEnt);  // 得到指向属性定义的指针
                if (pAttDef != NULL && !pAttDef->isConstant())
                {
                    // 调用属性定义的缺省构造函数,得到其指针
                    AcDbAttribute *pAtt = new AcDbAttribute();
                    // 设置属性插入位置
                    AcGePoint3d textPt = pAttDef->position();
                    textPt += pBlkRef->position().asVector();
                    pAtt->setPosition(textPt); // 设置属性位置
                    pAtt->setHeight(textH);    // 设置属性文字的高度
                    pAtt->setRotation(0.0);    // 设置文字旋转角度
                    pAtt->setHorizontalMode(AcDb::kTextLeft);  // 设置水平对齐方式
                    pAtt->setVerticalMode(AcDb::kTextBase);  // 设置垂直对齐方式
                    pAtt->setTextString(height);  // 设置属性的缺省值
                    pAtt->setTag("heigth");       // 设置属性标签
                    pAtt->setInvisible(Adesk::kFalse); // 设置不可见选项为假
                    AcDbObjectId attId;
                    pBlkRef->appendAttribute(attId,pAtt);
                    pAtt->close(); // 关闭属性定义对象
                }
                pEnt->close(); // 关闭实体对象
            }
            delete pIterator;  // 删除浏览器对象
        }
        // 关闭数据库的对象
        pBlkRef->setLayer("GCD");
        pBlkRef->close();
        pBlkTblRcd->close();
        pBlkDefRcd->close();
    }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 16:46:18 | 显示全部楼层
骁勇王爷(136529409)于2013-08-14 16-46-18:
[qqimg]{EB0C4C70-999D-69D8-CF35-440D6B298264}.jpg[/qqimg]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 16:47:01 | 显示全部楼层
骁勇王爷(136529409)于2013-08-14 16-47-01:
实现了“2维多段线连续去除节点”的代码了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 16:49:11 | 显示全部楼层
骁勇王爷(136529409)于2013-08-14 16-49-11:
[qqimg]{103F74DA-8775-9A63-73CC-B2469581C3C5}.jpg[/qqimg]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 16:50:04 | 显示全部楼层
骁勇王爷(136529409)于2013-08-14 16-50-04:
今晚完成任意位置增加多个节点的代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 18:00:45 | 显示全部楼层
雕梁(273825995)于2013-08-14 18-00-45:
objectarx3.0对应CAD是那个版本
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 18:01:07 | 显示全部楼层
雕梁(273825995)于2013-08-14 18-01-07:
现在上到那一课了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 18:09:13 | 显示全部楼层
雕梁(273825995)于2013-08-14 18-09-13:
[face9.gif]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 18:47:01 | 显示全部楼层
十年祭(1036442869)于2013-08-14 18-47-01:
今晚上课么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 19:28:14 | 显示全部楼层
人生机缘(21123283)于2013-08-14 19-28-14:
今晚上课么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 19:29:11 | 显示全部楼层
骁勇王爷(136529409)于2013-08-14 19-29-11:
徒步走4Km,流汗600g
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 19:29:25 | 显示全部楼层
人生机缘(21123283)于2013-08-14 19-29-25:
[face76.gif]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 19:29:58 | 显示全部楼层
孤单的时候~~(286168051)于2013-08-14 19-29-58:
周五上课 眼睛现在不能长期电脑
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 02:36 , Processed in 0.192698 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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