UG模具网

 找回密码
 注册

QQ登录

只需一步,快速开始

瑞洪模具学校UG专业培训招生
查看: 139|回复: 0

[原创] 梦想CAD常用系统变量说明

[复制链接]
  • TA的每日心情

    2018-8-30 08:48
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    0

    主题

    0

    帖子

    -91

    金币

    乞丐

    积分
    -75
    发表于 2018-8-8 15:46:21 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松学习交流!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 MxDraw 于 2018-8-8 15:48 编辑 & }" w8 E/ c/ C# J6 g6 G' F9 X
    . f! A9 _6 i" v) V1 p
    1.说明:# W  {8 f/ O" ~4 d8 {
    系统变量,有String,double,long,点,等类型,有些是随图纸,有些不随图纸,用来控制当前各种状态。9 N& u. L# H. m" A# n9 R
    系统变量非常多,这里只是介绍一些常用系统变量。8 K  s' n& |/ Q8 X6 X- Q5 ]
    2.设置系统变量函数
    1 U' |$ t+ |  g4 Q' sC++接口: MrxDbgUtils::setSysVar
    " I) e/ P" u' o3 p  B5 H* Q* W 图片6.png 1 a. D' m# V: ~
    该函数有种参数类型重载,可以支持int,double,LPCTSTR,McGePoint3d,McGePoint2d类型变量。
    . N, N& H/ D3 g* i; R; X6 j+ ^: t4 c
    % D3 E( z8 Y& _* S: kCOM接口: / |9 Z1 O" @3 g1 f1 }0 p
    _DMxDrawX::SetSysVarDouble
    3 F: F$ \% ]3 }0 {+ Q9 B3 x_DMxDrawX::SetSysVarLong3 l0 q' x+ f" c- _6 `( L
    _DMxDrawX::SetSysVarString
    ; z: J# w# G4 R5 Q: ?8 e. m* t 图片7.png
      M6 w( r" L. ~7 e  f3.取系统变量函数
      C& i) E" ^& y# B* z3 V9 d3 MC++接口: MrxDbgUtils::getSysVar
    6 A- V! m  G, G+ ]9 E$ d# ~) G 图片8.png % i9 |8 n$ C4 `1 U
    COM接口:, I2 I% t( ?$ r4 \' `
    _DMxDrawX::GetSysVarDouble% N6 K& f: \" S) G4 X- X5 l
    _DMxDrawX::GetSysVarLong
    / m! X. z$ X) S; @& r  v: T: t_DMxDrawX::GetSysVarString$ W$ ^/ }- m0 s9 b
    图片9.png 2 c2 N! w. T4 Q& K# p2 n/ e, {
    4.系统变量详细说明
    $ s& b( }1 l+ @7 N( X1 o2 r栅格设置: t7 L" r2 K  U' r" i+ e7 D3 {
    系统变量名:GRIDMODE
    ( @  ]7 R  G& K0 \6 K8 w打开栅格捕捉:( k: ?- F6 z% z2 F. D/ \
    axMxDrawX1.SetSysVarLong("GRIDMODE", 1);
    5 {4 F. ?# J: z, G$ ~# u( r关闭栅格捕捉:9 Q# M$ C) y% W8 L( r
    axMxDrawX1.SetSysVarLong("GRIDMODE", 0);
    # R+ A1 }8 G' E# x5 {# {+ G1 r- p2 X, P: T# I0 L& u
    4 Q  ?$ l* z! H
    栅格间距系统变量名:SNAPUNIT
    $ b4 Y; Q# v1 ~) {) p& i* Y设置栅格间距为500,500如下:
    # a* h/ T' w; m' }5 k0 a1 JMxDrawPoint ptSNAPUNIT = new MxDrawPoint();
    . n) d; U$ N. t) p6 ?5 T+ _        ptSNAPUNIT.x = 500;6 N  o+ e/ u7 H1 F' K# u
            ptSNAPUNIT.y = 500;
    # j6 l) [. R% c; K6 t9 {/ _( e2 W# q        param.AddString("SNAPUNIT");
    ) ?% o8 b- b5 n: V1 z        param.AddPointEx(ptSNAPUNIT,5002);1 |. n. ^: g, z$ h0 n
    . }. z3 F+ \6 S1 M& p. _$ g) X
            axMxDrawX1.CallEx("Mx_SetSysVar", param);1 U6 a; A- u4 I: `8 g

    - Y  A0 v- s, X3 T0 D! ~
    7 y, F: s* [6 m; b( N7 E正交设置
    + Q1 J4 @% }. m% v9 T: H系统变量名:ORTHOMODE' C( }% d! x: P2 L5 X
    启用正交:
    # ]3 ?" T  s* @. aaxMxDrawX1.SetSysVarLong("ORTHOMODE", 1);$ [' n( a; C9 H- I9 M
    4 d: [$ s5 _& C! v' x2 ^$ `
    正交模式打开后,需要参考上一次的输入点,一般控件会自动确定,也可以用户自己指定,指定系统变量名:LASTPOINT) f  e1 n: x( i) H2 t7 i; F8 v
    设置上一次用户输入点: C++语言
    / J) `: r) _% y0 I  K; Wresbuf rb;9 w6 ?: e  ?/ m5 j, q. o
                rb.restype = RTPOINT;
    ! W; \$ W3 B; n/ A) \            rb.resval.rpoint[X]= prvPoint.x;
    # Q' [( p7 _( ]# o# y            rb.resval.rpoint[Y]= prvPoint.y;/ W9 r% x8 U- e9 S
                rb.resval.rpoint[Z]= prvPoint.z;9 D8 i! L8 B: }
                Mx::mcedSetVar(_T("LASTPOINT"),&rb);
    . y3 `9 W+ S* ]% U7 o- I
    / ~9 a- n6 U3 N3 ~& Y+ ^" r极轴设置
    # G) t' V, r+ G2 l调用自定义函数Mx_SetPoloarTracee实现,如下,VC2005代码:
    6 G' n' w6 G; q9 H% sIDispatchPtr spRet1(m_ocx.CallLongParam1(_T("Mx_SetPoloarTracee"),1),false);1 a4 \- j7 K# Z2 ~0 j% z7 I

    % O' b8 P1 e$ V5 M8 c3 [+ W! c) K" ^3 T7 a" a
    另外它是系统变量:AUTOSNAP的第4个二制位控制.* t' ?6 [; e1 j6 O8 y# |& X& E/ F
    如下,C#代码,打开极轴:" _9 W7 I8 S! }9 ]
    int iRet = 0;
    & H( f! ^1 S4 X- |- H% o! \: A            axMxDrawX1.GetSysVarLong("AUTOSNAP",ref iRet);& |4 t9 @' I3 u/ E% Q9 s7 _
                iRet |= 8;6 n1 {% w$ D7 |3 G9 p6 [
                axMxDrawX1.SetSysVarLong("AUTOSNAP",iRet);
    1 G5 {1 U. o5 f# G  l3 u" D2 V7 s$ U6 f+ v7 M4 i
    对像捕捉
    6 |- O' g" K" Q! `% ], l& ^系统变量名:OSMODE
    ! F: r/ f0 x! U2 ]5 b. A' O# s, MC++代码,去掉最近点捕捉标志. C4 N' X7 L5 i3 d/ k( ]- S
    MrxDbgRbList spVal  = Mx::mcutNewRb(RTSHORT);
    , \6 O0 y0 L* p! n2 ?1 K6 W, |    Mx::mcedGetVar(_T("OSMODE"),spVal.data());
    0 \. P. r3 R7 Y8 u- H1 E. [7 J$ w    // 最近点捕足的值为512,进行位运算,去掉最近点捕捉标志
    * _$ F) N6 @" D3 \    int iNewMode = spVal.data()->resval.rint & (~512);
    $ U0 @4 J. Y  Q- e0 S2 N( i    // 设置新值/ x. O. J; ?/ J- v) S
        spVal.data()->resval.rint = iNewMode;
    # v0 r/ t9 s2 `3 YMx::mcedSetVar(_T("OSMODE"),spVal.data() );
    # Q+ ~& V$ Y8 J. }# |( O& b
    5 j7 y! M/ q7 Y$ z4 X
    , ^( H. k; i& Q1 @0 FC#代码,关闭捕捉
    . a6 t' l) o5 b# q" EaxMxDrawX1.SetSysVarLong("OSMODE", 0);
    * W' Q1 A: q' W: g0 p6 v# d6 L对象追踪3 b! y  o( }* }/ v: H3 O5 j, Q# O
    系统变量名:DYNTRACE
    9 X2 ~0 B! z; h; E4 wC++代码:禁用动态追踪: # @6 h) E+ r% J
    MrxDbgUtils::setSysVar(_T("DYNTRACE"),0);
    : H9 l# L$ ^8 V1 A8 M, P
    3 k9 ?- y9 ]; z  a+ f1 f) x
    : _7 z' M6 {- @6 v# a" N2 |0 L* |7 GC#代码:禁用动态追踪:
    5 Q+ E& y, B1 R$ `7 waxMxDrawX1.SetSysVarLong("DYNTRACE", 0);
    4 S6 l3 x: V" l# Z
    / [! K" {- z4 R2 D, j, X5.动态输入
    0 d& i* Z' L  i系统变量名:DYNINPUT
    7 o# {. o9 H% z$ n) H" kC#代码:禁用动态输入:6 @" ^3 m  ]1 l1 ?; [
    axMxDrawX1.SetSysVarLong("DYNINPUT", 0);
    " O) ^" J7 V+ f+ e. H
    0 A0 c& r: D% V( h4 ?
    - l( Q* R- s) h" CC++代码:禁用动态输入功能
    8 w: `0 l- }; o, PMrxDbgUtils::setSysVar(_T("DYNINPUT"),0)
    ; \- Z% y: S% v3 L: x' z
    8 [  M! p2 @* f! v, a& k2 M5 m) X6.线宽显示  l; d, `2 _; ~5 G, c: ]% f
    系统变量名:LWDISPLAY9 B: |9 D' v5 a8 z
    C#代码:显示线重:
    8 N1 n8 P- ?: xaxMxDrawX1.SetSysVarLong("LWDISPLAY", 1);
    2 l& \* Y  B# h
    / L4 ^& Y! G+ G* _- J: ~或者调用自定义函数Mx_ShowWeight实现,如下,C#代码:
    / J7 n' \9 l( K7 Z4 P" XmxOcx.Cal("Mx_ShowWeight");
    瑞洪模具学校,专业的模具设计培训!招生热线:13535692060 咨询:18138921941 唐老师
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|UG模具网 ( 粤ICP备10229226号 )

    GMT+8, 2020-3-29 07:13 , Processed in 0.662037 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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