iCAx开思网
标题:
关于拓展类型:相切连续
[打印本页]
作者:
xml35hyf
时间:
2013-10-28 15:15
标题:
关于拓展类型:相切连续
想请教各位大大,在CAITA的一些操作中,我们可以通过选择一条线,然后在拓展类型中选择相切连续。这样就可以选中与该线相切的所有线。我想自己写代码实现这个功能,但是目前在判断两条线是否相切卡壳了。
我目前想通过测量两条曲线的Angle。但是好像我对这个函数使用有问题,得到的角度很奇怪。下面贴出一段代码请大家指导下:
CATIMeasurable_var spotherObject = spspOtherEdge;
CATIMeasurable_var spiObject = spspiEdge;
if (spotherObject->Angle(spiObject,dAngle))
{
cout<<"角度"<<dAngle<<endl;
}
得到的角度cout出来为2.32432e-308。与我用测量间距测出来的角度不相干。
后来我用CATIMeasurableInContext接口的Angle(),代码如下: CATIMeasurableInContext_var spiMeasureEdge = spspiEdge;
CATIMeasurableInContext_var spotherMeasureEdge = spspOtherEdge;
CATMathAxis ioAxis;
spotherMeasureEdge->GetAxisSystem(ioAxis);
CATIMeasurable_var spotherObject = spspOtherEdge;
CATMeasModeOfCalc mesMode = CATMeasExactThenApproxMode;
spiMeasureEdge->SetComputationMode(mesMode);
if (spotherObject->Angle(spiObject,ioAxis,dAngle))
{
cout<<"角度"<<dAngle<<endl;
}
得到的结果也和上面提到的差不多,不知道问题出在哪里,请大神们知道下,用别的方式能实现相切连续拓展功能的也麻烦告知下,不胜感激!
作者:
xml35hyf
时间:
2013-10-31 15:53
首先声明下我用的是CATIA V5R18
interface
CATIMeasurable
接口有以下两个关于函数的介绍
[attach]1185374[/attach]
LZ做了个简便的测试
CATIMeasurableInContext_var spmeasureAngle= spendWire;
CATIMeasurable_var spmeasureAxis = spstartWire;
CATMathAxis mathAxis = NULL;
if(SUCCEEDED(spmeasureAxis->GetAxisSystem(mathAxis)))
{
CATMathPoint point4 = mathAxis.GetOrigin();
cout<<"mathAxis="<<point4.GetX()<<point4.GetY()<<point4.GetZ()<<endl;
}
double ddeg;
if (spmeasureAngle != NULL_var)
{
cout<<"spmeasureAngle != NULL_var"<<endl;
if(SUCCEEDED(spmeasureAngle->Angle(spmeasureAxis,mathAxis,ddeg)))
{
cout<<ddeg<<endl;
}
}
发现当spendWire和spstartWire是两个已经存在的特征,可以测出角度。所谓已经存在主要是与
曲面上的拓扑线经过特征化得来的特征
相区别。但是如果spendWire和spstartWire是拓扑线通过CATBRepDecode函数特征化得来的话,无法进行测量。
不知道这是什么原因?
如果我通过提取操作提出这两条线,也是可以测量角度,但这样就多出两个提取操作,虽然没添加到操作树上,但是增加了特征。
欢迎光临 iCAx开思网 (https://www.icax.org/)
Powered by Discuz! X3.3