iCAx开思网

标题: 关于UG调用dll之后的撤销问题………… [打印本页]

作者: qindongjun88    时间: 2009-9-17 13:41
标题: 关于UG调用dll之后的撤销问题…………
我在UG中画了一个圆柱,接着调用一个DLL(是一个生成四方块的dll),四方块的生成后,我在UG界面中执行了一次撤销操作,结果把圆柱也给撤销掉了!!按理说只是把四方块给撤销掉才对呀!这是怎么回事呢???

下面是我的代码:

    {
        /* TODO: Add your application code here */
   
  UF_FEATURE_SIGN sign = UF_NULLSIGN;
        double block_orig[3] = {0.0,0.0,0.0};
        char *block_len[3] = {"1","2","3"};
        tag_t blk_obj;
        UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj);
        /* Terminate the API environment */
        errorCode = UF_terminate();
    }


我用别人做的DLL时,是不会撤销到我之前所做的模型的,只会撤销DLL生成的结果。是不是还要在C++中加入其他的代码才有这样的效果呀…………

希望路过的高手解答。小弟多谢啦!!!
作者: zale_lzj    时间: 2009-9-17 18:14
需要设UNDO,参考uf_undo.h头文件
作者: qindongjun88    时间: 2009-9-19 08:49
多谢 zale_lzj  兄的指点,问题已经解决……


现把代码贴出来:

    {
        /* TODO: Add your application code here */
                  
        UF_FEATURE_SIGN sign = UF_NULLSIGN;
        double block_orig[3] = {0.0,0.0,0.0};
        char *block_len[3] = {"1","2","3"};
        tag_t blk_obj;
        UF_UNDO_mark_id_t     mark_id;

                UF_UNDO_set_mark(UF_UNDO_visible, NULL, &mark_id);
        UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj);
       

        /* Terminate the API environment */
        errorCode = UF_terminate();
    }
作者: daojianrm    时间: 2009-9-19 16:54
LZ 能不能具体解释一下 UF_UNDO_set_mark(UF_UNDO_visible, NULL, &mark_id);
的用法,学习学习
作者: kailler    时间: 2009-10-3 19:46
/*****************************************************************************
Instructs every data manager which is logged on to set a mark.
Returns an identifier which the application can use to identify the
state of the data managers at the time the mark is set. Additionally,
the application can register a name by which this mark can later be
referenced.

Note:  The maximum number of undo marks in an Open API program is 100.

Environment: Internal  and  External

See Also:

History:
******************************************************************************/
extern UFUNEXPORT int UF_UNDO_set_mark(
UF_UNDO_user_visibility_t visibility ,/* <I>
                                      The user visibility of this mark.
                                      */
UF_UNDO_mark_name_t mark_name ,/* <I>
                               optional name for this mark. If NULL
                               then not used. If not NULL then must
                               be '\0' terminated. UF_UNDO copies this
                               name to some space of its own, therefore,
                               the caller may do whatever it wants with
                               'mark_name' after the call.
                               */
UF_UNDO_mark_id_t * mark_id  /* <O>
                             identifier associated with this mark.
                             */
);
作者: tealy    时间: 2009-10-7 23:00
如果你使用BlockStyler创建界面的话就不用加MARK函数,因为会自动加上,
作者: ffhi    时间: 2009-10-9 09:20
学习了。。。
作者: ahutxiaxue    时间: 2009-10-13 23:09
在头文件里面加 uf_undo.h
char sUndoname[]="设置后退的提示";
UF_UNDO_mark_id_t mark_id;
UF_UNDO_set_mark(UF_UNDO_visible,sUndoname,&mark_id);
很简单的
作者: hd726    时间: 2010-8-31 10:01
不错 ,学习了。。。
作者: navy102019    时间: 2010-11-7 00:22
谢谢!!!!!!!!!!!!!
作者: 万丈蒿丛    时间: 2012-11-14 15:34
追问一下:我也是在dll文件中写了一个创建block的,代码跟你的差不多,但用NX7.5打开后,没得到Block,也没反应,只不过NX环境的工具栏下面出现一行:“撤销成功,会话可安全进行”
作者: 万丈蒿丛    时间: 2012-11-14 16:07
万丈蒿丛 发表于 2012-11-14 15:34
追问一下:我也是在dll文件中写了一个创建block的,代码跟你的差不多,但用NX7.5打开后,没得到Block,也没 ...

哎,刚刚提问,又突然把这个问题解决了。 原来是打开NX7.5过后,直接ctrl + U ,打开dll文件。所以总出现“撤销成功,会话可安全进行”,正确步骤应该是先打开NX7.5,然后新建一个.prt文件,然后在这个空的.prt文件中再 ctrl + U .这样就可以显示出dll文件中的画出的block。并且假如在dll文件中有 UF_PART_save()函数的话,将NX7.5环境关闭后,在刚才的.prt文件中就已经存下了dll文件中画出的block.




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3