青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

nx 8.0二次开发 移动图层

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2012-11-19 16:08 | 显示全部楼层
自己解决!
$ z7 H3 [2 c3 Q+ Bint ISOBJECTSNULL()5 z; K) l6 ^  l0 d9 A
{
3 M- C9 e5 q" E5 `  G2 w& t6 |2 J) m        int type;//类型
9 R  r; X/ q6 g( S& A$ ~  {        int subType;//子类型& T6 {$ H) x0 D8 y. w; ?
        int        ifali=0;7 c* t5 e* F3 a* _/ P& h7 I3 C
        int        Layer_Num_Work;//当前工作的图层的编号
5 a* e- z2 o3 v# `0 X        tag_t findobj=NULL_TAG;' B% l* M) ?5 z1 ^
        //实例化
/ |0 q6 L& Y$ i0 H        ifali=UF_initialize();       
+ X/ [: O' K" v1 U$ l2 e
5 E5 u) @2 g7 B9 h7 ]        //获取当前工作图层3 q. V7 Z/ s* O
        ifali=UF_LAYER_ask_work_layer(&Layer_Num_Work);" [( q4 e# ^; W' \7 @( x
        if(!ifali && Layer_Num_Work)
  T$ U4 L& O* q, u' ~) f        {
$ w( U; E1 D& h. k                //通过图层来查找当前对象
7 i( j$ ]+ o* l0 w5 F                UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);6 {* t& X3 X3 T4 a0 e- e
                //如果当前对象不为空$ ^  g" J0 n7 q4 {" f1 r
                while(findobj!=NULL_TAG)
% |/ T8 z7 _! w3 h% x( Z; T                {+ i- z5 W' P, {" K5 N$ C- `
                        //获取当前对象的类型和子类型
% x) X4 b+ Y& A* T4 _  f                        UF_OBJ_ask_type_and_subtype(findobj, &type, &subType);
9 n/ M9 p# w6 _3 W                        //类型为25,子类型为1是注释类型! h0 h. t1 v) w- e
                        if (type==25 && subType==1)
+ f' {$ Z. ?2 l# i8 O* R# b                        {
8 Y% u( Q$ N8 B8 u. T4 E7 I$ Q* A6 Y                                //移动注释类型到153图层$ M# b$ m( U6 Y# ~& f' J8 r
                                UF_OBJ_set_layer(findobj,153);+ y! d7 C9 W1 R$ y1 o
                        }! @- d' }! q2 S3 v
                        //类型为25,子类型为2是表面粗糙度符号类型
5 u' i6 T; o: E) H$ v                        if (type==158 && subType==2)
7 {8 ]. W# u5 q' f                        {
4 F: O: Y; L+ E' \* t- I2 W                                //移动表面粗糙度符号类型到152图层: {* ?" e; x! k9 w7 J# q4 {- g. |
                                UF_OBJ_set_layer(findobj,152);1 r( x% `- [+ X+ C
                        }. `" J& N# B( \) K6 `9 ~" m
                        //递归查找下级对象,直到对象为空为止- O, H" E1 b: G/ K% y( K+ S5 ^1 M
                        UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);                        : c' j4 q) `( n2 S9 Y+ U
                }
4 d8 [$ x; v8 U6 b. I                UF_LAYER_set_status(152,2);
7 u! o, `% w* v" L6 q                UF_LAYER_set_status(153,2);
8 ^9 U( l5 ^, A        }
6 U3 |+ s' i8 ?0 S* U}
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-27 20:44 , Processed in 0.060446 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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