Helios 发表于 2009-5-11 11:01:12

添加图案填充

大家好,
还在为金砖四国在BRX忙碌吗..
我在网上搜索了一下,编写了下面的代码,但是appendLoop方法总是失败。
三个问题?
1)这段代码有什么问题?
2)点数组必须以相同的坐标开始/结束吗?
3)凸起的数量必须等于点数吗?(我希望少一个)
问题2和问题3在各种论坛上都有提及,但我不确定它们是否正确。
提前感谢,
太阳神。
Acad::error status CAD drawing::add hatch(const acgepoint 2d array & Points,const AcGeDoubleArray & bulges)
{
Acad::error status es = Acad::enull handle;

如果(NULL!= m _ pCurDb)
{
AcDbObjectPointer
hatch;

if ((es = hatch.create())!= Acad::eOk)
{
log string(L "未能创建影线\ n ");
返回es;
}

if((es = hatch-> setNormal(acgevector 3d::kZAxis))!= Acad::eOk)
{
log string(L "未能设置图案填充法向量\ n ");
返回es;
}

if((es = hatch-> set elevation(0.0))!= Acad::eOk)
{
log string(L "未能设置图案填充高程矢量\ n ");
返回es;
}

if((es = hatch-> set pattern(AcDbHatch::KP redefined,_T("SOLID ")))!= Acad::eOk)
{
log string(L "无法将填充图案设置为实心\ n ");
返回es;
}

if((es = hatch-> setHatchStyle(AcDbHatch::kNormal))!= Acad::eOk)
{
log string(L "未能设置阴影样式\ n ");
返回es;
}

if((es = hatch-> set associative(false))!= Acad::eOk)
{
log string(L "未能设置hatch associative \ n ");
返回es;
}

if((es = hatch-> appendLoop(AcDbHatch::kex ternal | AcDbHatch::k polyline,Points,bulges))!= Acad::eOk);
{
LogString(L "无法将循环附加到hatch \ n ");
返回es;
}

if((es = setEntityCurProperties(hatch . object()))!= Acad::eOk)
{
log string(L "未能设置图案填充属性\ n ");
返回es;
}

if((es = m _ CurSpace-> appendAcDbEntity(hatch))!= Acad::eOk)
{
log string(L "无法将hatch追加到块(%s)\n ",LPCTSTR(m _ CurSpaceName));
返回es;
}

返回es;
}

返回es;
}
**** Hidden Message *****

Helios 发表于 2009-5-12 01:43:59

如果不看到调用此函数的代码,很难看到发生了什么。
另外,您可以看看使用acadErrorStatusText(st),

Helios 发表于 2009-5-12 03:30:58

嗨,Daniel,
我只是将5个点的数组传递给这个例程;
第一个和最后一个坐标是相同的。
你能对问题进行注释吗:
2)第一个/最后一个点必须相同。
3)nr的凸起与点数相同?

Helios 发表于 2009-5-12 04:42:15

从文档
和我看到的第3个样本来看,是的

Helios 发表于 2009-5-12 05:39:28

提及文件:
关于ARX的背景信息有什么好的来源?(就像您需要传递给appendLoop方法的那些标志一样)
B.T.W .我已经将上述hatch问题转发给了Bricscad支持。他们正在调查。
我也会将结果转发到这里。太阳神

Helios 发表于 2009-5-12 11:29:42

对于遵循此线程的人:
以下行中有两个问题:
if((es=hatch->appendLoop(AcDbHatch::kExternal|acdbhatth::kPolyline,Points,bulges))!=Acad::eOk)
1)行末尾的分号不应出现。(我喜欢C++:realmad:)
2)只有AcDbHatch::kExternal标志必须传递到append循环方法中。(在BRX中)
这是有效的:
如果((es=hatch->appendLoop(AcDbHatch::kExternal,Points,bulges))!=Acad::eOk)
感谢Bricsys对他们快速回复的支持。
太阳神。
页: [1]
查看完整版本: 添加图案填充