青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

nx 8.0二次开发 移动图层

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2012-11-19 16:08 | 显示全部楼层
自己解决!
. Z2 ^+ S/ @* b8 _$ |) P7 j$ tint ISOBJECTSNULL(); R" N' n; b& i0 O
{3 B" c/ O2 T$ v% z5 F6 Z
        int type;//类型
) F. k5 a. O+ k9 Q2 j        int subType;//子类型
" }/ P! V6 ]' ?" e; t& C        int        ifali=0;4 ?5 ?$ K4 U( A
        int        Layer_Num_Work;//当前工作的图层的编号
: c6 G: ?6 G( W        tag_t findobj=NULL_TAG;
/ \9 g6 x* @! Z7 `1 o7 k+ M6 @2 H$ B        //实例化3 |1 X' w2 g% ]. A
        ifali=UF_initialize();        ! f4 H, \0 C& p, V5 E& r4 h
: e) T8 T3 E+ `0 g  _: [6 k) E
        //获取当前工作图层
4 I. X$ I( {& O$ K7 m5 n' X        ifali=UF_LAYER_ask_work_layer(&Layer_Num_Work);6 _( o) H9 N8 l0 H0 H
        if(!ifali && Layer_Num_Work)* F( ~3 h; G& c
        {
" X9 ?: q0 l: V$ H2 X                //通过图层来查找当前对象
  B1 E. k0 v5 y: O# i1 |# f" h& v                UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);! p: u+ d/ D( @; c$ H; E
                //如果当前对象不为空: f- K6 S& u7 s" _) l/ [7 _% S) `8 K4 i+ G
                while(findobj!=NULL_TAG)0 n# \9 D9 B: k' s' |9 e" _- C
                {2 }( p: l4 o! A6 _$ S
                        //获取当前对象的类型和子类型: }. y6 v# w; F' W7 a7 V
                        UF_OBJ_ask_type_and_subtype(findobj, &type, &subType);
3 _& |4 B8 `2 y5 C: `                        //类型为25,子类型为1是注释类型
' `) ?; E' d3 D) R# z6 o6 f2 e6 a                        if (type==25 && subType==1)
' v, [' W, y9 c* t2 [                        {6 O; d* j% ?# R. c
                                //移动注释类型到153图层! [; d6 ^' h% k. [$ Q8 {1 y
                                UF_OBJ_set_layer(findobj,153);
' i- P3 t/ ~4 t                        }
0 A: ]$ {! e  P# d: X7 k) g3 s                        //类型为25,子类型为2是表面粗糙度符号类型
5 _3 ?- `( w; c+ ~3 H& p+ P  H                        if (type==158 && subType==2)0 x: \$ O+ g; T7 ?* s
                        {0 f' ?" |8 J4 d7 h+ s
                                //移动表面粗糙度符号类型到152图层
% ]* v$ u; U4 b  R; {- e+ }5 |$ h                                UF_OBJ_set_layer(findobj,152);
) w1 P* v% x0 i) I+ s1 _5 {( H% p) w. Q                        }# {! I+ x1 N: ~- I. N
                        //递归查找下级对象,直到对象为空为止: |0 G- K' |3 K& Z) w
                        UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);                       
/ z( x; D" o" }3 M8 M4 V% t' I7 K                }
4 _5 q4 R7 D9 Y3 B9 {/ x4 i0 l2 _                UF_LAYER_set_status(152,2);) h) @9 X, g; N  T4 }, a$ A0 o
                UF_LAYER_set_status(153,2);
# I3 {; O$ \0 t6 m; [6 J        }' Q& u' U# ?7 L3 p9 ?* U. G
}
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-10 09:43 , Processed in 0.121242 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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