青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

nx 8.0二次开发 移动图层

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2012-11-19 16:08 | 显示全部楼层
自己解决!
6 [" ]/ |4 ^- G9 c: Gint ISOBJECTSNULL(); k; ], G2 ^4 I# S
{9 [: S1 O$ T3 c$ `
        int type;//类型
6 s% }/ O5 @0 B2 Y+ T2 G0 r9 Q$ R; J  d        int subType;//子类型
0 f4 S, @/ S; ?' b        int        ifali=0;
% ?- @5 o' Q  S+ B        int        Layer_Num_Work;//当前工作的图层的编号6 K) a+ g' j: ?
        tag_t findobj=NULL_TAG;8 K9 e- J! t# C8 @
        //实例化9 h5 c0 @/ c, ^9 z5 E  a+ |1 F0 r( F. C
        ifali=UF_initialize();       
  R% o# h' i5 `$ M
* v" v" a' Z2 g- x- E        //获取当前工作图层
" L% O7 ?: m  y3 t; k1 a' z% u5 W& x  p, C        ifali=UF_LAYER_ask_work_layer(&Layer_Num_Work);
+ d! k4 e" B4 `* c. V        if(!ifali && Layer_Num_Work)
2 B; X- M' g4 m2 M0 g7 ~1 q' b        {6 p1 r' M; j1 \
                //通过图层来查找当前对象
( o' _/ T6 [" ~" K( x! t4 @                UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);+ Q* M1 M" r% K: y7 D) \
                //如果当前对象不为空# A; C1 p3 T3 ?1 W6 U9 N+ Q
                while(findobj!=NULL_TAG)
2 R. S. x# f" V, i                {
; M* i/ ]( Y( [& b                        //获取当前对象的类型和子类型
0 z4 K& l9 X5 @) N( R) U3 b                        UF_OBJ_ask_type_and_subtype(findobj, &type, &subType);
! H  ?/ P+ [; W& H8 Y) ?6 I                        //类型为25,子类型为1是注释类型
2 F* e' u" I' I7 Z9 b+ B; y                        if (type==25 && subType==1)
! ^( j5 M* J6 M  o9 G4 \3 [                        {8 W* j2 I" @, p8 u3 H$ a
                                //移动注释类型到153图层
0 t5 D) H7 n" q( b) E' a                                UF_OBJ_set_layer(findobj,153);8 N: R( A: T& S* K5 I+ G* u7 [; i
                        }
8 C  |0 S9 b. p  Z% b" I                        //类型为25,子类型为2是表面粗糙度符号类型
4 R$ I* ^3 v1 `% d) }) j, b9 m                        if (type==158 && subType==2)
& }% N$ V: O1 o, N5 T                        {3 d/ d! o& L; Q; z$ \4 U- H! X. P
                                //移动表面粗糙度符号类型到152图层
2 h' L! L' D" {. X                                UF_OBJ_set_layer(findobj,152);
1 e! ^' t, h5 ?2 y. G. C7 [& @& A' v                        }3 k) `2 [( ]" g5 X, g$ I4 u9 L4 g
                        //递归查找下级对象,直到对象为空为止4 _7 c" g2 q* ]! h8 Y
                        UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);                       
, @! m- ~+ L6 u                }
% Q) @" P* z* @& E" X4 R( d! B                UF_LAYER_set_status(152,2);' w% ^2 P# X* Q& _, p
                UF_LAYER_set_status(153,2);
/ c7 N  e2 N5 j/ O+ f, y$ ]* Q  Q        }, J) H" N. h. f& K
}
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-16 03:24 , Processed in 0.047847 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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