iCAx开思网

标题: CATICkeParm 之间相互赋值的问题 [打印本页]

作者: zsong22    时间: 2012-11-29 10:47
标题: CATICkeParm 之间相互赋值的问题
如创建了两个数值型(int,fact,double)的  如何将X1的值赋给X?
CATICkeParm_var X1 = fact ->CreateReal("X1",20);
CATICkeParm_var X = fact ->CreateReal("X",0);

再比如创建了两个字符型的  又如何将spString1赋给spString2
CATICkeParm_var spString1=spFact->CreateString("ModuleName","CAALifRelations");
CATICkeParm_var spString2=spFact->CreateString("rojectKey","");

求解惑   谢谢!{:soso_e176:}
作者: linlily0925    时间: 2012-11-29 12:58
    你的意思是将两个参数创建关系吗?当一个参数改变时,第二个参数会跟着改变~~~
CATCkeListOf(Parm) ParamList6;
     ParamList6.Append(spPar1);

     CATICkeParm_var spPar2 = spCkeParmFactory->CreateLength( "XXX", 0.);
     CATICkeRelation_var spParamRelation = spCkeParmFactory->CreateFormula("XX", "","",spPar2  , &ParamList6,"a1", NULL_var,CATCke::False);//其中a1表示ParamList6列表中的第一个元素
     spFunctionFactory->AddToCurrentRelationSet(spPar2 );
     CATISpecObject_var spSpecParam2=spParamRelation ;
     spParamRelation ->Update();     spParameters2->Append(spParamRelation );

作者: linlily0925    时间: 2012-11-29 13:00
或者是X->Valuate(X1->Value()->AsReal());,但是这样就木有Relation
作者: zsong22    时间: 2012-11-29 15:26
linlily0925 发表于 2012-11-29 12:58
你的意思是将两个参数创建关系吗?当一个参数改变时,第二个参数会跟着改变~~~
CATCkeListOf(Parm) P ...

丽丽 我想问一下  spParamRelation ->Update(); 是不是应该用spSpecParam2 ->Update();
再就是spParameters2->Append(spParamRelation );
这里面的spParameters2是个什么类型 做什么的呢?

作者: linlily0925    时间: 2012-11-29 15:33
嘿嘿 ,是的,我写错了,不好意思哈~~~

CATIParmPublisher_var spParameters2=spCkeRelationFactory->CreateParameterSet("AA");//新创建的参数集                       

作者: zsong22    时间: 2012-11-29 21:55
linlily0925 发表于 2012-11-29 15:33
嘿嘿 ,是的,我写错了,不好意思哈~~~

CATIParmPublisher_var spParameters2=spCkeRelationFactory->Cr ...

CATIParmPublisher_var spParameters2=spCkeRelationFactory->CreateParameterSet("AA");//新创建的参数集
        CATCkeListOf(Parm) ListOfParm;
        ListOfParm.Append(iGravX1);
        ListOfParm.Append(iGravX);
        CATICkeRelation_var spRelation= fact ->CreateFormula("Relation", "", "", iGravX , &ListOfParm, "a1",NULL_var, CATCke::False) ;

        if(NULL_var!=spRelation)
        {
        //spFunctionFactory->AddToCurrentRelationSet(iGravX);
    CATISpecObject_var spSpecParam2=spRelation;
    spSpecParam2 ->Update();
        spParameters2->Append(spRelation);
        }

除了 spFunctionFactory->AddToCurrentRelationSet(iGravX);  报空指针的错外,其他的都没问题。   我把这句话注释过后,可以生成公式,这里算是学到了。
谢谢 丽丽!

作者: linlily0925    时间: 2012-11-30 09:48
zsong22 发表于 2012-11-29 21:55
CATIParmPublisher_var spParameters2=spCkeRelationFactory->CreateParameterSet("AA");//新创建的参数集 ...

spFunctionFactory->AddToCurrentRelationSet(iGravX);应该是 spFunctionFactory->AddToCurrentRelationSet(spRelation);接口为空?那你判断下spFunctionFactory是否为空
spFunctionFactory  = CATCkeGlobalFunctions::GetFunctionFactory();
作者: 珊瑚草    时间: 2012-11-30 10:07
linlily0925 发表于 2012-11-30 09:48
spFunctionFactory->AddToCurrentRelationSet(iGravX);应该是 spFunctionFactory->AddToCurrentRelation ...

那怎么删除关系呢?
作者: zsong22    时间: 2012-11-30 10:45
linlily0925 发表于 2012-11-30 09:48
spFunctionFactory->AddToCurrentRelationSet(iGravX);应该是 spFunctionFactory->AddToCurrentRelation ...

刚才是 因为我这个地方弄错了!spFunctionFactory  = CATCkeGlobalFunctions::GetFunctionFactory();

我还用的QI方式,所以报错!
作者: linlily0925    时间: 2012-11-30 11:04
珊瑚草 发表于 2012-11-30 10:07
那怎么删除关系呢?

CATIParmPublisher->RemoveChild ()
作者: 珊瑚草    时间: 2012-11-30 14:25
linlily0925 发表于 2012-11-30 11:04
CATIParmPublisher->RemoveChild ()

这个是删除已添加到CATIParmPublisher里的Relation,我现在想删除创建关系的两个元素,用的CATIDescendants/RemoveChild,能够删除,但总在删除时弹出关系断开的警告。怎么解决呢?
作者: linlily0925    时间: 2012-11-30 19:41
珊瑚草 发表于 2012-11-30 14:25
这个是删除已添加到CATIParmPublisher里的Relation,我现在想删除创建关系的两个元素,用的CATIDescendan ...

那你是不是应该先删除关系 再删除两个元素 不然肯定会警告的~~~因为找不到创建关系的两个元素嘛
作者: 珊瑚草    时间: 2012-11-30 21:19
linlily0925 发表于 2012-11-30 19:41
那你是不是应该先删除关系 再删除两个元素 不然肯定会警告的~~~因为找不到创建关系的两个元素嘛

我创建的关系没有添加到CATIParmPublisher里,怎么删除呢?
作者: 珊瑚草    时间: 2012-12-1 16:06
珊瑚草 发表于 2012-11-30 21:19
我创建的关系没有添加到CATIParmPublisher里,怎么删除呢?

嗯,问题解决,可以先将创建的Relation挂到特征树上,再在特征树上删除它,之后再删除元素就不会弹出警告了
作者: zsong22    时间: 2012-12-2 11:01
linlily0925 发表于 2012-11-29 12:58
你的意思是将两个参数创建关系吗?当一个参数改变时,第二个参数会跟着改变~~~
CATCkeListOf(Parm) P ...

丽丽你好,上周经过你的帮忙 创建两个参数之间的的关系的确是会了,谢谢了。  但是,我还是不太会创建一个特征(重心点)   与   它对应X,Y,Z坐标参数之间的关系。
这里重心点肯定就是CATMathPoint Gravity=cFillDynCreateMassProperties3D->GetCenterOfGravity();
是一个CATMathPoint的对象      
而我想它的三个参数变量肯定是这个重心点的X,Y,Z坐标。

现目前不会的似乎就是 不知道如何将一个CATMathPoint Gravity;引入fomula(公式)中去,并如何在公式中提取这个Gravity的三个坐标值。
有烦 丽丽帮助一下,谢谢!
作者: linlily0925    时间: 2012-12-3 09:11
本帖最后由 linlily0925 于 2012-12-3 09:13 编辑
zsong22 发表于 2012-12-2 11:01
丽丽你好,上周经过你的帮忙 创建两个参数之间的的关系的确是会了,谢谢了。  但是,我还是不太会创建一个 ...

这个我也不太清楚,怎么讲重心点和特征创建关联~~~不知道哪位高手能帮忙解决一下~~~
作者: zsong22    时间: 2012-12-3 10:46
linlily0925 发表于 2012-12-3 09:11
这个我也不太清楚,怎么讲重心点和特征创建关联~~~不知道哪位高手能帮忙解决一下~~~

丽丽 我想了一下  也许需要这个函数:
CreateObjectReference
public virtual CATICkeParm_var CreateObjectReference( const CATBaseUnknown_var&  iFeature) = 0  

Creates feature reference.
A feature reference is a way to see a feature as a parameter,
Such a feature reference can only be used in input of Knowledgeware relations.

Parameters:
iFeature
feature to be referenced : should implement CATICkeFeature.
Returns:
CATICkeParm_var feature reference created

这里我就想把CATMathPoint类型的重心点 Gravity传进去,但是 不知道如何将CATMathpoint转换为CATBaseUnknown_var&  iFeature类型。
作者: linlily0925    时间: 2012-12-3 14:44
本帖最后由 linlily0925 于 2012-12-3 14:48 编辑
zsong22 发表于 2012-12-3 10:46
丽丽 我想了一下  也许需要这个函数:
CreateObjectReference
public virtual CATICkeParm_var Creat ...

CATMathPoint为几何元素,你可以通过坐标值重新建一个GSMPoint,但是这样又木有关联了~~~
CreateObjectReference 是将一个GSM类型转化为参数类型~~~好用于创建Relation~

作者: zsong22    时间: 2012-12-3 14:56
linlily0925 发表于 2012-12-3 14:44
CATMathPoint为几何元素,你可以通过坐标值重新建一个GSMPoint,但是这样又木有关联了~~~
CreateObjectR ...

哦, 这思路看来 要走到绝境了。 谢谢哈!




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