明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2811|回复: 4

[求助]如何通过点击直线获得两端点的坐标

[复制链接]
发表于 2007-3-15 10:33:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-3-17 12:23:02 编辑

有许多不相连的任意线段
目标:通过点击每条线段,来得到每条线段两端点的坐标。最好能区分线段的StartPoint和EndPoint

如何实现这一目标?

我现在的代码如下():
float xco1, yco1, xco2, yco2;  //xco1,yco1是直线起点的x,y坐标;xco2,yco2是直线终点的x,y坐标
int LineNumCount=0;
ads_name entres;
ads_point ptres;
acedGetInt("Please input the line number:",&LineNumCount); //输入待选取的直线总数
for(int i=0;i<LineNumCount;i++)
{
     if(acedEntSel("\nPlease select a line:",entres,ptres)==RTNORM)
     {
         acutPrintf("\nPicking is OK!");

         AcDbObjectId Id1;
         acdbGetObjectId(Id1, entres);  //获得对象的ID
         acutPrintf("\nGetObjectId is OK!");

         AcDbObject *pObj;
         acdbOpenAcDbObject(pObj, Id1, AcDb::kForRead, false); //根据ID打开对象,pObj指向对象的地址

         isKindOf(AcDbLine::desc()); //这句语法对吗?要这么写吗?

         //后面该怎么写??? 
      }
      else
      {
          acutPrintf("\nPicking failed!");
      }
  }

写到isKindOf函数,后面就写不下去了。
因为编译时编译器提示错误C2065: "isKindOf()" : 未声明的标识符。
另外,我在objectARX2004的arxdoc.chm中搜索AcDbLine::desc(),没有搜到相关内容。

各位达人能否给一小段实现pick单根线段获得端点坐标的ARX代码让我借鉴一下

我现在就卡在这里了,请大家帮个忙,不胜感激

发表于 2007-3-15 11:48:00 | 显示全部楼层

 我的ARX还不太会,觉的这句 
isKindOf(AcDbLine::desc()); //这句语法对吗?要这么写吗?

应是
 isKindOf(AcDbLine::desc();); //这样写吧,

如果不对请不介意哦.我也是学习中....

 楼主| 发表于 2007-3-15 12:30:00 | 显示全部楼层
本帖最后由 作者 于 2007-3-15 12:40:40 编辑

BDYCAD发表于2007-3-15 11:48:00 我的ARX还不太会,觉的这句 isKindOf(AcDbLine::desc()); //这句语法对吗?要这么写吗?应是 isKindOf(AcDbLine::desc();); //这样写吧, 如果不对请不介意哦.我也是学习中....

谢谢2楼的回复。不过

isKindOf(AcDbLine::desc(););  //这句的写法显然是错的

我现在改成了这样:

pObj->isKindOf(AcDbLine::desc());  //判断pObj指向的对象是直线??

编译就通过了。但不知道这样写有什么意义,而且后面的代码仍然不会。

等待指点中...

发表于 2007-3-16 13:31:00 | 显示全部楼层

if(pObj->isKindOf(AcDbLine::desc()) == true)

{

AcDbLine *pLine = AcDbLine::cast(pObj);

AcGePoint3d ptStart = pLine->startPoint();

AcGePoint3d ptEnd = pLine->endPoint();

}

 楼主| 发表于 2007-3-16 15:43:00 | 显示全部楼层
老牛发表于2007-3-16 13:31:00if(pObj->isKindOf(AcDbLine::desc()) == true){AcDbLine *pLine = AcDbLine::cast(pObj);AcGePoint3d ptStart = pLine->startPoint();AcGePoint3d ptEnd = pLine->endPoint();}

牛大哥太厉害了,我要的就是这三句!

尤其是括号里的第一句,没有你的指点我怎么都不会写。

非常谢谢你的帮助:)

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-23 14:04 , Processed in 0.169816 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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