autocad ios 虚线_CAD交互绘制虚线(com接口)

该博客介绍了如何在iOS的AutoCAD环境中使用COM接口动态地绘制虚线。通过MxDrawCustomEntity和IMxDrawWorldDraw接口,实现了从用户交互获取点到绘制虚线直线的完整过程,包括设置线型、线宽以及动态拖放绘制虚线的事件处理。
摘要由CSDN通过智能技术生成

用户可以在控件视区任意位置绘制直线。

主要用到函数说明:

_DMxDrawX::DrawLine

绘制一个直线。详细说明如下:

参数说明

DOUBLE dX1

直线的开始点x坐标

DOUBLE dY1

直线的开始点y坐标

DOUBLE dX2

直线的结束点x坐标

DOUBLE dY2

直线的结束点y坐标

IMxDrawCustomEntity::Draw

把实体绘制到图上。一般用于动态拖放时,在拖放结束时,绘制到图上。

_DMxDrawXEvents::DynWorldDraw

动态拖放时的绘制事件。详细说明如下:

参数说明

DOUBLE dX

当前鼠标位置X坐标

DOUBLE dY

当前鼠标位置Y坐标

IDispatch* pWorldDraw

IMxDrawWorldDraw对象,用于动态绘制

IDispatch* pData

IMxDrawCustomEntity对象,动态绘制数据

_DMxDrawX::DrawText

绘制一个单行文字。详细说明如下:

参数说明

DOUBLE dPosX

文字的位置的X坐标

DOUBLE dPosY

文字的位置的Y坐标

BSTR pszText

文字内容字符串

DOUBLE dHeight

文字高度

DOUBLE dRotation

文字的旋转角度

SHORT horizontalMode

文字的水平对齐方式,0=kTextLeft,1=kTextCenter,2=kTextRight

SHORT verticalMode

文字的竖直对齐方式,1=kTextBottom,2=kTextVertMid,3=kTextTop

c#中实现代码说明:

动态拖放时的绘制事件:

private void DrawDottedLine()

{

//点取第一点

MxDrawUiPrPoint getPt = new MxDrawUiPrPoint();

getPt.message = "点取第一点:";

if (getPt.go() != MCAD_McUiPrStatus.mcOk)

return;

//点取第二点

MxDrawUiPrPoint getSecondPt = new MxDrawUiPrPoint();

getSecondPt.message = "点取第二点:";

MxDrawCustomEntity spDrawData = getSecondPt.InitUserDraw("DrawMyDottedLine");

//设置point类型的属性

spDrawData.SetPoint("startpoint", getPt.value());

//设置线宽

spDrawData.SetDouble("dottedlinewidth", 5);

if (getSecondPt.go() != MCAD_McUiPrStatus.mcOk)

return;

spDrawData.Draw();

}

动态绘制虚线直线:

private void axMxDrawX1_DynWorldDraw(object sender, AxMxDrawXLib._DMxDrawXEvents_DynWorldDrawEvent e)

{

MxDrawCustomEntity pCustomEntity = (MxDrawCustomEntity)e.pData;

MxDrawWorldDraw pWorldDraw = (MxDrawWorldDraw)e.pWorldDraw;

string sGuid = pCustomEntity.Guid;

MxDrawPoint curPoint = new MxDrawPoint();

curPoint.x = e.dX;

curPoint.y = e.dY;

if(sGuid == "DrawMyDottedLine")

{

//与用户交互在图面上提取一个点

MxDrawPoint vBasePt = pCustomEntity.GetPoint("startpoint");

//定义虚线数据据,"MyLineType"是线型名,"6,-8"是虚线的一个单位定义,6是实线长,-8是空格长

axMxDrawX1.AddLinetype("DrawMyDottedLine", "6,-10");

//设计当前线型为"MyLineType"

pWorldDraw.LineType = "DrawMyDottedLine";

double dw = pCustomEntity.GetDouble("dottedlinewidth");

pWorldDraw.LineWidth = dw;

//绘制一个直线

//参数一直线的开始点x坐标,参数二直线的开始点y坐标,参数三直线的结束点x坐标,参数四直线的结束点y坐标

pWorldDraw.DrawLine(vBasePt.x, vBasePt.y, curPoint.x, curPoint.y);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值