|
www.mxdraw.com
|
由闭合区域内部一个点,绘制一个填充对象。
static LONG Mx_DrawHatchFromPoint(DOUBLE dX, DOUBLE dY, DOUBLE dPatternScale, McDbObjectIdArray filterIds);
|
参数 |
说明 |
|
DOUBLE dX |
点坐标X 点坐标Y |
|
DOUBLE dPatternScale |
填充图案缩放比例 |
|
McDbObjectIdArray filterIds |
用来过滤的id数组 |
|
ladOpt |
对填充内部的孤岛的处理.0 =忽略孤岛, 1 = 处理孤岛, 2 = 嵌套处理孤岛 |
成功返回新绘制的填充对象id,失败返回0
例如: VB代码,点取闭合区域一点,填充。
'《---------------------------------------》
'绘制一个有图案的填充
'angle, x-origin,y-origin, delta-x,delta-y,dash-1,dash-2, …
'45 = angle 是图案线角度.
'0 = x-origin 是第一个填充线经过的点位置X坐标
'0 = y-origin 是第一个填充线经过的点位置Y坐标
'0 = delta-x 是下一个填充线相对前一个线的X方向偏移
'0.125 = delta-y 是下一个填充线相对前一个线的Y方向偏移
MxDrawX1.AddPatternDefinition "MyHatchPattern1", "((45, 0,0, 0,0.125))"
MxDrawX1.PatternDefinition = "MyHatchPattern1"
Dim getPt8 As MxDrawXLib.MxDrawPoint
Set mxUtility = New MxDrawXLib.MxDrawUtility
Set getPt8 = mxUtility.GetPoint(, Chr(13) + Chr(10) + "拾取内部点:")
If (getPt8 Is Nothing) Then
Exit Sub
End If
Dim param8 As MxDrawXLib.MxDrawResbuf
Set param8 = New MxDrawXLib.MxDrawResbuf
param8.AddDouble getPt8.x, -10
param8.AddDouble getPt8.y, -10
'图案缩放比例
param8.AddDouble 20#
Dim ret8 As MxDrawXLib.MxDrawResbuf
Set ret8 = MxDrawX1.CallEx("Mx_DrawHatchFromPoint", param8)
If ret8.AtString(0) = "Ok" Then
MsgBox ret8.AtLong(1)
End If例如: 选择指实体作为边界填充
IMxDrawUiPrPointPtr getPt;
getPt.CreateInstance(__uuidof( MxDrawXLib::MxDrawUiPrPoint ));
IMxDrawUiPrPoint* pGetPt = getPt;
pGetPt->put_message(_T("点取绘制点"));
if(pGetPt->go() != mcOk)
{
return;
}
IMxDrawPointPtr pickPt = pGetPt->value();
if(pickPt == NULL)
return;
IMxDrawSelectionSetPtr ss;
ss.CreateInstance(__uuidof( MxDrawXLib::MxDrawSelectionSet ));
ss->Select(mcSelectionSetUserSelect,NULL,NULL,NULL);
IMxDrawResbufPtr param;
param.CreateInstance(__uuidof( MxDrawXLib::MxDrawResbuf ));
param->AddDouble(pickPt->x);
param->AddDouble(pickPt->y);
param->AddDouble(20.0);
for(long i = 0; i < ss->Count;i++)
{
IMxDrawEntityPtr ent = ss->Item(i);
if(ent == NULL)
continue;
param->AddObjectId(ent->ObjectID);
}
IDispatchPtr spRet(m_ocx.CallEx(_T("Mx_DrawHatchFromPoint"),param),false);