乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 121|回复: 6

[请问]如何遍历一条多义线的顶点并将它加到一个resbuf中?

[复制链接]

12

主题

24

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2007-4-8 22:42:00 | 显示全部楼层 |阅读模式
[请问]如何遍历一条多义线的顶点并将它加到一个resbuf中?
我想让用户指定一条多义线,并将它作为acedSSGet("F")需要的内容。应该如何把顶点内容加到resbuf中呢?
谢谢!!
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2007-4-9 07:46:00 | 显示全部楼层
应该和  
这点里面讲的涵数一样的意思,. 但是我还不会,呵呵,会的朋友请贴个代码参考一下吧
回复

使用道具 举报

10

主题

131

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2007-4-9 08:32:00 | 显示全部楼层
sample下关于扩展数据中有关于resbuf指针的详细用法,贴一下罢
addXdata()
{
    AcDbObject* pObj = selectObject(AcDb::kForRead);
    if (!pObj) {
        acutPrintf("Error selecting object\n");
        return;
    }
   
    // Get the application name and string to be added to
    // xdata.
    //
    char appName[132], resString[200];
    appName[0] = resString[0] = '\0';
    acedGetString(NULL, "Enter application name: ",
        appName);
    acedGetString(NULL, "Enter string to be added: ",
        resString);
   
    struct  resbuf  *pRb, *pTemp;
   
    pRb = pObj->xData(appName);
    if (pRb != NULL) {
        // If xdata is present, then walk to the
        // end of the list.
        //
        for (pTemp = pRb; pTemp->rbnext != NULL;
                pTemp = pTemp->rbnext)
                { ; }
    } else {
        // If xdata is not present, register the application
        // and add appName to the first resbuf in the list.
        // Notice that there is no -3 group as there is in
        // AutoLISP. This is ONLY the xdata so
        // the -3 xdata-start marker isn't needed.
        //
        acdbRegApp(appName);
        pRb = acutNewRb(AcDb::kDxfRegAppName);
        pTemp = pRb;
        pTemp->resval.rstring
            = (char*) malloc(strlen(appName) + 1);
        strcpy(pTemp->resval.rstring, appName);
    }
    // Add user-specified string to the xdata.
    //
    pTemp->rbnext = acutNewRb(AcDb::kDxfXdAsciiString);
    pTemp = pTemp->rbnext;
    pTemp->resval.rstring
        = (char*) malloc(strlen(resString) + 1);
    strcpy(pTemp->resval.rstring, resString);
    // The following code shows the use of upgradeOpen()
    // to change the entity from read to write.
    //
    pObj->upgradeOpen();
    pObj->setXData(pRb);
   
    pObj->close();
    acutRelRb(pRb);
}
当数据个数不确定时,用上面的方法,当数据个数确定时,用acutBuildList更方便
回复

使用道具 举报

12

主题

24

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2007-4-9 10:00:00 | 显示全部楼层
谢谢!问题解决了!
回复

使用道具 举报

20

主题

80

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2008-4-7 21:03:00 | 显示全部楼层
当数据个数不确定时,用acutBuildList也很方便
struct resbuf *pointlist;
ads_point pt;
for(int i=1; i
pt=XXX;
pointlist= acutBuildList(RTRESBUF, pointlist, RTPOINT, pt, 0);
}
回复

使用道具 举报

10

主题

131

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
171
发表于 2008-4-8 14:42:00 | 显示全部楼层
哦,还能这样用,那用acutBuildList确实方便多了,
回复

使用道具 举报

8

主题

30

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2018-4-24 09:28:00 | 显示全部楼层

好像会有异常
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 10:32 , Processed in 0.363131 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表