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(); }
|
浙公网安备 33010602011771号