几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-29, 05:15 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】不打开实体取得实体的类型和图层 - 精华帖集合

不打开实体取得实体的类型和图层 - 精华帖集合
www.dimcax.com
不打开实体取得实体的类型和图层
, , ,
以下代码可以不打开实体,而是通过实体的dxf码判断实体的类型和图层,
用来来判断用户选择的实体是否是要求的类型,并且在要求的图层.
在arx里面 resbuf 用处很广,呵呵,下次给大家演示通过resbuf建立选择集
其中函数 struct resbuf *dxf( struct resbuf *edata, short dxf_code )
用来取得 resbuf 链表中,dxf码为指定值的项
// 选取"jmd"图层类型为"arc,polyline,circle"的实体,选择结果不是,则提示退出
void test()
{
ads_name ent;
if ( pickentity( _t("\n选择要拉直的2d曲线: "), _t("arc,polyline,circle"), _t("jmd"), ent ) )
{
dosomething();
}
}
int pickentity( tchar *promptstr, tchar *enttype, tchar *entlayer, ads_name resent )
{
int f1=0,f2=0;
ads_point pt;
struct resbuf *edata, *rb;
while( ads_entsel( promptstr, resent, pt ) == rtnorm )
{
edata = ads_entget( resent );
if ( enttype != null && enttype[0] != '\0' )
{
rb = dxf( edata, 0 );
f1 = iskeywordinstring( rb->resval.rstring, enttype );
}
if ( entlayer != null && entlayer[0] != '\0' )
{
rb = dxf( edata, 8 );
f2 = iskeywordinstring( rb->resval.rstring, entlayer );
}
ads_relrb( edata );
if ( !f1 && !f2 )
return 1;
else
ads_printf(_t( "\n\n***** 请重新选择物体 *****" ));
}
return 0;
}
int iskeywordinstring( tchar *keyword, tchar *inputstr )
{
tchar *pc1, *pc2;
int fret = 1;
pc1 = pc2 = inputstr;
while( *pc1 != '\0' && fret != 0 )
{
while( *pc2 != ',' && *pc2 != ';' && *pc2 != '|' && *pc2 != ' ' && *pc2 != '\0' )
pc2++;
fret = memcmp( keyword, pc1, (pc2-pc1)*sizeof(tchar) );
if ( *pc2 != '\0' )
pc2 = pc2 + 1;
pc1 = pc2;
}
return fret;
}
struct resbuf *dxf( struct resbuf *edata, short dxf_code )
{
struct resbuf *p;
p = edata;
while( p != null )
{
if ( p->restype == dxf_code )
break;
p = p->rbnext;
}
return p;
}
复制代码
虽然我不懂c++
我也来顶一顶,支持一下忽悠兄
支持一下忽悠兄
楼主只是利用ads的一套函数来实现此功能。
是一种思路,但是这样编程就体现不出arx的优势了
支持创新,但更要体现arx优势
用迭代器比较好
为了未来
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 05:45 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多