明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2653|回复: 3

在线求助各位高手 选择集的操作

[复制链接]
发表于 2003-1-13 16:34:00 | 显示全部楼层 |阅读模式
我现在有一选择集,比如是有一些正交的线段组成,我现在要把各线段的端点移动到交点上去,请问,我如何遍历选择集的各实体并编辑之?
  希望高手提供思路一二,不胜感激
  谢谢!!!!!
发表于 2003-1-14 08:42:00 | 显示全部楼层

遍历选择集

首先假定你的选择集为 ads_name e;(用acedSSGet或acedSSAdd函数获得)
利用acedSSLength()可获得选择集内实体数;用acedSSName()获得指定位置的实体。注意:这两个函数都应该使用long类型参数!
代码例子:
ads_name e;
......//获取选择集代码略
ads_name ent;  //这个变量用于存放选择集内实体
long iLen;
if(acedSSLength(e,&iLen)!=RTNORM)
  {  acutPrintf("\n获取选择集长度出错!");
    return;  }
for(long i=0;i<=iLen;i++)
{
   if(acedSSName(e,i,ent)!=RTNORM)
  { acutPrintf("\n获取选择集内第%d个实体出错!",i);
    return;     }
   ...../*现在你可以使用ads_name ent;若要使用AcDb类库,用acdbGetObjectId()函数获取实体ID,用acdbOpenObject()函数获取AcDb实体*/
}
 楼主| 发表于 2003-1-14 08:57:00 | 显示全部楼层

谢谢……另外……

思路已知,谢谢,问题是在操作实体时的各种小问题,对于这种经验的东西,不知道有何参考?

另外,我现在有一直线(Line),同时该直线和其他直线有实交点、虚交点,我要首先找出各实交点,并利用交点把直线阿打断,并操作各线段,曾问过一人,只是提了一些思路,但想知道具体函数,请教?
发表于 2003-1-14 09:44:00 | 显示全部楼层

其实我也只能提供思路

求交点的函数:(要使用AcDb类库)
Virtual Acad::ErrorStatus AcDbEntity::intersectWith(const AcDbEntity* ent,AcDb::intersect intType,AcGePoint3dArray& points,int thisGS=0,int otherGS=0) const;
该函数用于求解图形中两个实体间的交点。调用它时,要提供求交操作的另一个实体及求交点的方式,由points参数返回交点数组。其中求交点的方式可取以下值:kOnBothOperands(在两个实体上,即不延长对象,求实交点)、kExtendThis(延长调用者对象)、kExtendArg(延长目标对象)、kExtendBoth(两个对象都延长)。
该函数的最后两个参数用于指定自定义对象的GS标志,求直线交点不需要。
ARX不提供现成的打断函数,打断直线可用修改一条线,再添加一条线来完成操作。

点评

版主高!!!  发表于 2013-4-25 14:52
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 09:43 , Processed in 0.162943 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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