找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 638|回复: 2

[每日一码] 不打开实体取得实体的类型和图层

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2017-5-25 08:10:00 | 显示全部楼层 |阅读模式

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

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

×
  1. // 选取"JMD"图层类型为"ARC,POLYLINE,CIRCLE"的实体,选择结果不是,则提示退出
  2. void test()
  3. {
  4.         ads_name ent;
  5.         if ( PickEntity( _T("\n选择要拉直的2D曲线: "), _T("ARC,POLYLINE,CIRCLE"), _T("JMD"), ent ) )
  6.         {
  7.                 DoSomeThing();
  8.         }
  9. }

  10. int PickEntity( TCHAR *promptstr, TCHAR *EntType, TCHAR *EntLayer, ads_name resent )
  11. {
  12.         int f1=0,f2=0;
  13.         ads_point pt;
  14.         struct resbuf *edata, *rb;

  15.         while( ads_entsel( promptstr, resent, pt ) == RTNORM )
  16.         {
  17.                 edata = ads_entget( resent );

  18.                 if ( EntType != NULL && EntType[0] != '\0' )
  19.                 {

  20.                         rb = dxf( edata, 0 );

  21.                         f1 = isKeywordInString( rb->resval.rstring, EntType );
  22.                 }
  23.                 if ( EntLayer != NULL && EntLayer[0] != '\0' )
  24.                 {

  25.                         rb = dxf( edata, 8 );

  26.                         f2 = isKeywordInString( rb->resval.rstring, EntLayer );
  27.                 }
  28.                 ads_relrb( edata );

  29.                 if ( !f1 && !f2 )
  30.                         return 1;
  31.                 else
  32.                         ads_printf(_T( "\n\n***** 请重新选择物体 *****" ));
  33.         }

  34.         return 0;

  35. }

  36. int isKeywordInString( TCHAR *keyword, TCHAR *inputstr )
  37. {
  38.         TCHAR *pc1, *pc2;
  39.         int fret = 1;

  40.         pc1 = pc2 = inputstr;
  41.         while( *pc1 != '\0' && fret != 0 )
  42.         {
  43.                 while( *pc2 != ',' && *pc2 != ';' && *pc2 != '|' && *pc2 != ' ' && *pc2 != '\0' )
  44.                         pc2++;

  45.                 fret = memcmp( keyword, pc1, (pc2-pc1)*sizeof(TCHAR) );

  46.                 if ( *pc2 != '\0' )
  47.                         pc2 = pc2 + 1;

  48.                 pc1 = pc2;
  49.         }

  50.         return fret;
  51. }


  52. struct resbuf *dxf( struct resbuf *edata, short DXF_CODE )
  53. {
  54.         struct resbuf *p;

  55.         p = edata;
  56.         while( p != NULL )
  57.         {
  58.                 if ( p->restype == DXF_CODE )
  59.                         break;
  60.                 p = p->rbnext;
  61.         }

  62.         return p;
  63. }


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

已领礼包: 5060个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-12 13:59 , Processed in 0.456980 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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