CAD选择曲线,把曲线从中间1/4 到 3/ 4处断开(com接口c#语言)

主要用到函数说明:

IMxDrawCurve::SplitCurves

打断曲线,详细说明如下:

参数说明

[in] IMxDrawResbuf* aryParam

打断位置参数数组,或打断的点数组,是个MxDrawResbuf对象

[out] IMxDrawResbuf** aryNewId

返回打断后生成的新曲线id,是个MxDrawResbuf对象

 选择曲线,把曲线从中间1/4 到 3/ 4处断开:

           MxDrawUtility mxUtility = new MxDrawUtility();
         object getPt;
         MxDrawEntity ent = mxUtility.GetEntity(out getPt, "选择打断的曲线:");         
         if (ent == null)             
             return;
 
         MxDrawCurve curve;         
         if (ent is MxDrawCurve)
         {
             curve = (MxDrawCurve)ent;
         }         
         else
         {
             MessageBox.Show("实体类型不对");             
             return;
         }         
         double dLen = 0.0;
         curve.GetDistAtParam(curve.GetEndParam(),out dLen);
 
         object pt1;         
         if (!curve.GetPointAtDist(dLen / 4.0, out pt1))             
         return;
  
         object pt2;         
         if (!curve.GetPointAtDist(dLen * 3.0 / 4.0, out pt2))             
         return;
 
         MxDrawPoint breakPt1 = (MxDrawPoint)pt1;
         MxDrawPoint breakPt2 = (MxDrawPoint)pt2;         
         if (breakPt1 == null || breakPt2 == null)             
         return;
 
         MxDrawResbuf param = new MxDrawResbuf();
         param.AddPoint(breakPt1, -10);
         param.AddPoint(breakPt2, -10);
 
         object objIds;         
         if (curve.SplitCurves(param, out objIds))
         {
             MxDrawResbuf rbId = (MxDrawResbuf)objIds;             
             if(rbId.Count == 3)
             {
                 axMxDrawX1.Erase(rbId.AtLong(1));
             }             
             // 把以前的删除掉。
             ent.Erase();
         }

 

posted on 2019-07-03 13:56  梦想CAD控件  阅读(377)  评论(0)    收藏  举报

导航