青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

nx 8.0二次开发 移动图层

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2012-11-19 16:08 | 显示全部楼层
自己解决!
  `& c+ @2 j! z0 S# Rint ISOBJECTSNULL()5 C6 r* g1 O! h& ~1 L6 }
{
. b( Q; I; M! G; k0 S% t6 j        int type;//类型7 {1 G( c8 D. o: ~6 k" h1 D4 X
        int subType;//子类型
2 n/ J) A) |4 h0 v: c0 w+ G; I        int        ifali=0;
# G' h7 A3 g8 b        int        Layer_Num_Work;//当前工作的图层的编号( w+ t- G& J9 s' i8 T% V
        tag_t findobj=NULL_TAG;& O" v9 K8 ]' D+ X$ d+ A0 B
        //实例化
: }2 |# c% ~8 s) J8 f8 Z2 b        ifali=UF_initialize();       
! f  Z1 X' b- X% w/ F  L) g
) e" ?+ J) o4 @        //获取当前工作图层8 g' K0 p  g# S
        ifali=UF_LAYER_ask_work_layer(&Layer_Num_Work);/ j: G1 Q1 g, ^6 s0 k) h
        if(!ifali && Layer_Num_Work)+ L1 `' V2 s4 E% i
        {
! N2 ^- n( d/ v4 \: Q3 C                //通过图层来查找当前对象
- v8 _! W* a+ d7 v8 h* Y7 J                UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);
# T7 X- `1 c2 C- C% L4 a1 o. y% k                //如果当前对象不为空' }1 J3 u- y& }+ [( m4 R" ]( g; ]
                while(findobj!=NULL_TAG)
$ j$ F6 v; b/ \0 `, {) O                {7 I  H+ H, I- E2 }) C" i
                        //获取当前对象的类型和子类型+ y+ k5 K6 z$ O
                        UF_OBJ_ask_type_and_subtype(findobj, &type, &subType);" m6 o- _% k. x: g, ^
                        //类型为25,子类型为1是注释类型
# k& {- @/ q" V* b  [                        if (type==25 && subType==1)  u  n; i( j3 l. _" q3 D$ l0 k6 Q
                        {
! F6 t8 I. X0 ^4 u+ A                                //移动注释类型到153图层, b& j; I0 |1 e" G9 v# e  K
                                UF_OBJ_set_layer(findobj,153);2 b& r$ n& {7 w
                        }% o6 Y; U- @9 p
                        //类型为25,子类型为2是表面粗糙度符号类型
& v3 \$ [# H; L$ ^, I- \! X5 U, C% t' O                        if (type==158 && subType==2)
' t6 F% S# D0 O                        {( l! R& d- z- D' ~; @, W
                                //移动表面粗糙度符号类型到152图层
) F# `9 e# q4 ]! r5 k3 |' d                                UF_OBJ_set_layer(findobj,152);: c8 p  D* S& O2 U7 r
                        }
( P7 M5 r3 I* R) X  V                        //递归查找下级对象,直到对象为空为止" C/ Z5 C1 O3 e! h& t
                        UF_LAYER_cycle_by_layer(Layer_Num_Work,&findobj);                        ) e3 P2 @' H! E% f0 Z! x( P
                }
2 W, T/ q$ U) _                UF_LAYER_set_status(152,2);
; p! `/ q. p% x0 ^5 [7 X                UF_LAYER_set_status(153,2);3 d1 u" z) P; g- ?
        }: p! d$ d8 M. J8 K) @
}
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-27 20:54 , Processed in 0.046548 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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