找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 19595|回复: 14
打印 上一主题 下一主题

CAA 如何修改界面的值

[复制链接]
跳转到指定楼层
1
发表于 2005-10-9 13:16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如图,我想修改Options->DisPlay->performances中的3D Accuracy 的值将Fixed中的5.00改成0.1,应该如何操作?

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2005-10-9 13:19:06 | 只看该作者
用        //VRepository=CATSettingRepository::GetRepository("VisualizationRepository");
        ////VRepository->Unlock("3DFxAccuracy");
        //VRepository->WriteSetting("3DFxAccuracy",&f);
        ////        VRepository->Lock("3DFxAccuracy");
        //VRepository->SaveRepository();
        //VRepository->Commit();
能够修改但是不能够即时刷新,我想通过直接修改界面的值去实现所需要的功能,能不能完成?
如果可以请帮忙指点一下思路。谢谢!
3
发表于 2005-10-9 13:58:30 | 只看该作者
这个刷新要自己做

{
        // edit option setting

        // redraw
        do {
                // get current editor
                CATFrmEditor* pEditor = CATFrmEditor::GetCurrentEditor();
                if(!pEditor){
                        break;
                }

                // get document from current editor
                CATDocument* pDocument = pEditor->GetDocument();
                if( !pDocument ) {
                        break;
                }

                // get docroot fromg document
                CATIDocRoots_var spDocRoots = pDocument;
                if( !spDocRoots ) {
                        break;
                }

                // get root object
                CATLISTV(CATBaseUnknown_var)* pRootProducts = spDocRoots->GiveDocRoots();
                if( !pRootProducts ) {
                        break;
                }
                if( pRootProducts->Size() <= 0 ) {
                        delete pRootProducts;
                        pRootProducts = NULL;
                        break;
                }

                // get CATIDescendants interface
                CATIDescendants_var spDescendants = (*pRootProducts)[1];
                delete pRootProducts;
                pRootProducts = NULL;
                if(!spDescendants){
                        break;
                }

                // get all object you want to redraw( if you want redraw all object, just dispath the root is OK
                CATLISTV(CATISpecObject_var) spList;
                spDescendants->GetAllChildren( _your_Mask_, spList);

                // loop
                for(int index = 1 ; index <= spList.Size() ; index++){
                        CATISpecObject_var spSpec = spList[index];
                        if(!spSpec){
                                continue;
                        }
                        // dispatch
                        // DispatchModelModifyToVisuFather of spSpec here
                }
        } while (false );

}

[ 本帖最后由 acoka 于 2005-10-9 14:36 编辑 ]
4
发表于 2005-10-9 15:33:11 | 只看该作者
非常感谢acoka兄,
我已经将CATISpecObject
   spSpec->SetUpToDate(false);
   spSpec->Update();
虽然我已经WriteSetting("3DFxAccuracy",&f);了
但是因为Options中的3D Accuracy值没有变化,
   spSpec->SetUpToDate(false);
   spSpec->Update();
操作之后图像仍然没有改变。
5
发表于 2005-10-9 15:34:52 | 只看该作者
怎样能够让界面的值由5.00变成我修改后的值?
帮帮忙!
6
发表于 2005-10-10 11:39:45 | 只看该作者
有谁能帮帮忙啊!
7
发表于 2005-10-10 14:20:30 | 只看该作者
你在2楼不是说你已经可以修改了吗?
8
发表于 2005-10-10 16:57:29 | 只看该作者
没有,我用
用        //VRepository=CATSettingRepository::GetRepository("VisualizationRepository");
        ////VRepository->Unlock("3DFxAccuracy");
        //VRepository->WriteSetting("3DFxAccuracy",&f);
        ////        VRepository->Lock("3DFxAccuracy");
        //VRepository->SaveRepository();
        //VRepository->Commit();
能够修改但是界面(一楼的界面)上的值不能够即时刷新,要用鼠标重新点击一下Options弹出一楼的窗口,在取消掉后,我想要改的值才能发生变化。
换句话说才能由5.00变成我想要的0.01。
之后才能用到您给出的那部分代码。
您由什么方法能够在程序里刷新窗口(一楼的界面)的值吗?
9
发表于 2005-10-10 17:23:26 | 只看该作者
联系到你的另一个提问"CAA 怎样能够在CAA中打开CATIA的options界面", 好象你想用CATAfrStartCommand("CATAfrOpenSettingsHdr", pCmd); 打开Options Dialog, 然后用API改变值,希望那个Dialog也相应变化.
这样应该不行吧.如果用了CATAfrStartCommand,就不能用API,如果要用API来改变Options的话,就不能用由CATAfrStartCommand激活的Dialog.因为你无法在由CATAfrStartCommand激活的Dialog和API之间建立联系.
10
发表于 2005-10-11 08:23:50 | 只看该作者
就是,我的思路就是您说的那样,但是确实像您说的不能够激活Dialog和API之间的联系,你还有什么高见吗?修改CATIA的sag我已经没有什么思路了。用发送消息的方式能不能够做到?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-24 02:04 , Processed in 0.030220 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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