找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 128|回复: 0

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

[复制链接]

0

主题

0

回帖

28

积分

管理员

积分
28
发表于 2024-3-14 20:29:57 | 显示全部楼层 |阅读模式
  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. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 05:07 , Processed in 0.123816 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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