找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 596|回复: 4

[求助]:如何操作选择集参数

[复制链接]
发表于 2004-11-5 13:43:02 | 显示全部楼层 |阅读模式

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

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

×
请教各位高人:
        在ARX编程过程中,如何操作Autolisp传递的选择集参数?比如验证参数类型和取出选择集......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2006-7-6 22:46:22 | 显示全部楼层
提供一个参考程序,自己去研究
Adesk::Boolean WJRedGeFun::SelectByWin(AcGePoint3d winPt1, AcGePoint3d winPt2,
                                       AcDbObjectIdArray &IDarrys, int entStyle,
                                       BOOL isByWin)
{
  int ret;                //选择是否成功
  long setLen;            //选择集的长度
  char sbuf[10];          //选择实体的类型
  ads_name ssname,eName;  //选择集的名称
  struct resbuf rb;       //选择集的过滤条件链表
  AcDbObjectId eId;

  rb.restype=0;
  switch(entStyle)
  {
    case 0://选择所有实体
      break;
    case 1://选择直线实体
      strcpy(sbuf,"WJREDLINE");
      rb.resval.rstring=sbuf;
      rb.rbnext=NULL;
      break;
    case 2://选择曲线实体
      strcpy(sbuf,"WJREDSPLINE");
      rb.resval.rstring=sbuf;
      rb.rbnext=NULL;
      break;
    case 3://选择矩形
      strcpy(sbuf,"WJREDRECTANGLE");
      rb.resval.rstring=sbuf;
      rb.rbnext=NULL;      
      break;
    case 4://选择点
      strcpy(sbuf,"WJREDPOINT");
      rb.resval.rstring=sbuf;
      rb.rbnext=NULL;
      break;
    case 5://选择圆
      strcpy(sbuf,"WJREDCIRCLE");
      rb.resval.rstring=sbuf;
      rb.rbnext=NULL;
      break;
    case 6://文字
      strcpy(sbuf,"WJREDMTEXT");
      rb.resval.rstring=sbuf;
      rb.rbnext=NULL;
      break;
      //以下为组合选择
    case 101://选择直线、矩形
      rb=*acutBuildList(-4,"<or",RTDXF0,"WJREDLINE",
                                 RTDXF0,"WJREDRECTANGLE",
                                 -4,"or>",0);
      break;
    case 102://选择直线、矩形和曲线实体
      rb=*acutBuildList(-4,"<or",RTDXF0,"WJREDLINE",
                                 RTDXF0,"WJREDRECTANGLE",
                                 RTDXF0,"WJREDSPLINE",
                                 -4,"or>",0);
      break;
    case 103://选择直线/矩形/曲线/点/圆实体
      rb=*acutBuildList(-4,"<or",RTDXF0,"WJREDLINE",
                                 RTDXF0,"WJREDRECTANGLE",
                                 RTDXF0,"WJREDSPLINE",
                                 RTDXF0,"WJREDPOINT",
                                 RTDXF0,"WJREDCIRCLE",
                                 -4,"or>",0);
      break;
    default://退出系统选择失败
      return Adesk::kFalse;
  }
  if(isByWin)
  {
    if(entStyle>0)
      ret=acedSSGet("W",asDblArray(winPt1),asDblArray(winPt2),&rb,ssname);
    else
      ret=acedSSGet("W",asDblArray(winPt1),asDblArray(winPt2),NULL,ssname);
  }
  else
  {
    if(entStyle>0)
      ret=acedSSGet("C",asDblArray(winPt1),asDblArray(winPt2),&rb,ssname);
    else
      ret=acedSSGet("C",asDblArray(winPt1),asDblArray(winPt2),NULL,ssname);
  }  
  if(ret!=RTNORM) return Adesk::kFalse; //退出系统选择失败  
  acedSSLength(ssname,&setLen);
  for(int i=0;i<setLen;i++)
  {
    acedSSName(ssname,i,eName);
    acdbGetObjectId(eId,eName);
    IDarrys.append(eId);
  }  
  acedSSFree(ssname);
  return Adesk::kTrue;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2006-7-7 22:43:19 | 显示全部楼层
应该是acedSSAdd函数。
但使用过程中出错。
后直接对数组赋值成功。但是个笨办法:
ss[0]=pArg->resval.rlname[0];
ss[1]=pArg->resval.rlname[1];
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 14:32 , Processed in 0.170727 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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