iCAx开思网

标题: 求助:CAA中如何在选取的曲线上画点 [打印本页]

作者: bright1206    时间: 2004-9-13 20:30
标题: 求助:CAA中如何在选取的曲线上画点
如题。我要编程实现在鼠标选取的一条CURVE上画一个点,知道使用CreatePoint(spCurve,spPoint,spParm,hOrient)这个函数,但是不知道怎么把鼠标选择的曲线设置为spCurve,也不会编选取曲线的程序,求教各位高手。急!!!!!!!!!!
作者: acoka    时间: 2004-9-14 11:44
CATDialogAgent + Filter
作者: bright1206    时间: 2004-9-15 10:31
使用CATFeatureImportAgent,在选取曲线后其回调函数得到曲线指针为空。
_pCurveAgent = new CATFeatureImportAgent(^);
  
CATBaseUnknown *pSelection = _pCurveAgent->GetElementValue_(pCurveAgent->GetValue());
  
请问有何问题?
作者: bright1206    时间: 2004-9-15 10:34
程序1
作者: bright1206    时间: 2004-9-15 10:34
程序2
作者: bright1206    时间: 2004-9-15 10:37
还有,代理是否只能在commond中使用?
在上面程序运行中,SelectCurve函数出现无限循环;若将AddTransition函数中第二个stStartState改为NULL,不出现循环,但是得到pSelection为空。
作者: acoka    时间: 2004-9-15 11:16
对你的线的限定不太明白,不妨试试下面的方法
(你的定义可能不能读取pad的edge)
  
HRESULT rc = S_OK;
CATISpecObject_var spCurve = NULL_var;
  
do {
   CATPathElement* pPathElem = _pCurveAgent->GetValue();
   if ( !pPahElem ) {
       break;
   }
   CATISpecObject* pIFeature = NULL;
   rc = pPathElem->Search(  IID_CATISpecObject, (void**)[$pIFeature )]
   if ( FAILED(rc) || !pIFeature ) {
      break;
   }
   spCurve =  pIFeature;
   pIFeature->Release();
   pIFeature = NULL;
} while ( FALSE );
  
   
作者: acoka    时间: 2004-9-15 11:17
bright1206 wrote:
还有,代理是否只能在commond中使用?  
  在上面程序运行中,SelectCurve函数出现无限循环;

  
Action method的最后,清除一下
  if ( !!_pAgent) {
    _pAgent->InitializeAcquisition();
  }
作者: acoka    时间: 2004-9-15 11:19
bright1206 wrote:
若将AddTransition函数中第二个stStartState改为NULL,不出现循环,但是得到pSelection为空。

  
这等于
有了curve的agent发生,就从startstate退出,命令就结束了
一般这时候要设OKAction;
作者: bright1206    时间: 2004-9-15 14:26
我所定义的曲线就是根据输入点的坐标,程序自动生成一天空间曲线。然后我要在这条空间曲线上做一个点。acoka,非常感谢你的答复,我再试试你的方法。
作者: acoka    时间: 2004-9-15 14:57
可以取pick处的坐标,然后生成线上点




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