青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 3121|回复: 4

nx 8.0二次开发 移动图层

[复制链接]
发表于 2012-10-25 14:38 | 显示全部楼层 |阅读模式
不知道哪位大师有过相关的开发经验,之前没有做过这类的! 希望指导一下!
3 K9 u+ [7 s. f! C$ ^# y# |需求!在二维制图的图纸上有3个图层,底层不动,其他两层为目标图层,根据类型过滤器(注释和符号)来向目标图层移动!在图层设置中展现出来。上述功能在nx菜单中加入一个按钮,单击后,进行一系列的操作!
 楼主| 发表于 2012-10-30 17:14 | 显示全部楼层
不会吧。。没人做过????
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-31 10:35 | 显示全部楼层
等了好几天了! 都没人答复。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-19 16:08 | 显示全部楼层
自己解决!
" z; d  ^9 ^, q2 Sint ISOBJECTSNULL()# U$ n2 ?" h; Z0 s4 o* ^) Q5 o
{
9 I7 Y  d0 r8 h, |+ M        int type;//类型
% o1 t. V& {% M. B0 c! r0 F        int subType;//子类型
2 U9 _+ c9 j3 l( I0 y        int        ifali=0;
! n0 R4 w( o1 `: L! }        int        Layer_Num_Work;//当前工作的图层的编号
" K* m+ c: v2 O        tag_t findobj=NULL_TAG;: S  P3 K- A7 o9 e9 o! P- B
        //实例化
% \, s' _5 Q- K1 W$ G  E        ifali=UF_initialize();        8 b6 \. g" B: u1 P6 [9 z

0 g% w+ H, J& A4 @* S  l+ A        //获取当前工作图层
- E* t6 B+ K) d/ f+ ?& x        ifali=UF_LAYER_ask_work_layer(&Layer_Num_Work);6 f2 K/ F% v9 G3 c9 @
        if(!ifali && Layer_Num_Work)
6 O% s/ ^. G/ q- ~( G0 K& X        {6 l2 u8 _# |/ o6 R, l
                //通过图层来查找当前对象
: R' p0 i# A9 ^9 G! Y                UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);+ S  }2 X+ c! H' O4 \
                //如果当前对象不为空
$ @# ?# M( T6 m) e8 i                while(findobj!=NULL_TAG), A- Q" E+ o# I$ z4 y0 Q6 K
                {
; x! o/ z  I. N                        //获取当前对象的类型和子类型
6 H5 ~6 s. C1 S* s                        UF_OBJ_ask_type_and_subtype(findobj, &type, &subType);
1 n( r& C. m0 K4 E+ |7 W                        //类型为25,子类型为1是注释类型
, Z9 M; L- [  J& }4 O, A                        if (type==25 && subType==1). n8 g8 h- M% {
                        {
. u% Q- @: s8 m                                //移动注释类型到153图层4 W  _/ Y- Y1 f$ }) `9 s9 d
                                UF_OBJ_set_layer(findobj,153);
  ]  y- |5 |* `) [, V' O" k                        }
9 o5 c7 G2 Y( P! w2 n                        //类型为25,子类型为2是表面粗糙度符号类型
" y6 T6 g! K- B                        if (type==158 && subType==2)
% o3 \% L$ z( Y8 g8 |3 D' t* ]                        {! G$ v5 C& r  t7 V8 N
                                //移动表面粗糙度符号类型到152图层: S/ U, }3 a' D4 W7 L3 b% U
                                UF_OBJ_set_layer(findobj,152);2 \# W3 O/ `6 N& J" `' T5 S
                        }; H  r. l( a/ s
                        //递归查找下级对象,直到对象为空为止1 {# `2 Y0 H4 L8 q- n
                        UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);                        ! b- M0 E& q6 p7 y$ [0 G, T
                }  l& {3 H: P) e9 H5 C8 `
                UF_LAYER_set_status(152,2);6 _8 m! _  Y( N0 T; S
                UF_LAYER_set_status(153,2);6 _8 q+ ^4 J( f; F9 o- i
        }8 ~. ]7 }) g3 t# j
}
回复 支持 反对

使用道具 举报

发表于 2017-11-28 16:26 | 显示全部楼层
为楼主喝彩!!!!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-9-16 05:22 , Processed in 0.047732 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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