|
高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】[求助]arx中如何画到角和剖面线
[求助]arx中如何画到角和剖面线
[求助]arx中如何画到角和剖面线
如何画剖面线(见《机械cad技术基础》)
图案填充是指以指定的图案去填充一个封闭的边界。因此为完成图案填充主要要完成选择填充边界、填充图案及填充方式。图案填充在机械cad中主要是为了完成机械制图中的剖面符号。
在autocad数据库中,图案填充使用acdbhatch类的对象,通过调用其构造函数实现图案填充的创建。
l 其构造函数的格式为:
acad::errorstatus acdbhatch ();
由于其构造函数仅仅是为acdbhatch 类的对象分配了内存空间,其填充边界、填充图案及填充方式必须使用该类的成员函数来设置。
图案填充程序设计的步骤:
1) 构造边界的对象组。
2) 调用acdbhatch类的构造函数生成缺省的acdbhatch类的对象。
3) 调用acdbhatch类的成员函数作必要的设置。
4) 调用appendloop()函数将对象组加入acdbhatch类以构成边界。
5) 调用evaluatehatch()函数显示填充图案,否则图案不显示。
6) 要重新打开块表纪录后,再将acdbhatch类的对象添加进图块表记录中。
填充边界的设置有两个重要要求,第一完全封闭;第二首尾相连。首尾相连就是前一个曲线的终点和下一个曲线的起点完全重合,如果不能满足要求,则不能正确的进行图案填充。关于这项要求需要详细了解请参阅autocadr10版本之前的书藉。
例 9?5:图案填充
程序如下:
acdbblocktable *pblocktable;
acdbhostapplicationservices()->workingdatabase()//查找并以只读模式
->getsymboltable(pblocktable, acdb::kforread);//打开图块表
acdbblocktablerecord *pblocktablerecord;
pblocktable->getat(acdb_model_space, pblocktablerecord,
acdb::kforwrite);//查找并以写模式打开图块表记录(模型空间)
pblocktable->close();//关闭图块表
acdbobjectid lineid1;
acdbobjectid lineid2;
acdbobjectid lineid3;
acgepoint3d pt1( 3.0, 4.0, 0.0);
acgepoint3d pt2(110.0, 70.0, 0.0);
acgepoint3d pt3( 170.0, 20.0, 0.0);
acdbline *pline1 = new acdbline(pt1, pt2);//创建实体
acdbline *pline2 = new acdbline(pt2, pt3);//创建实体
acdbline *pline3 = new acdbline(pt3, pt1);//创建实体
pblocktablerecord->appendacdbentity(lineid1, pline1);//添加实体返回id
pblocktablerecord->appendacdbentity(lineid2, pline2);//添加实体返回id
pblocktablerecord->appendacdbentity(lineid3, pline3);//添加实体返回id
acdbobjectidarray dbobjids;
acdbobjectid id;
dbobjids.append(lineid1);
dbobjids.append(lineid2);
dbobjids.append(lineid3);
pblocktablerecord->close();//关闭图块表记录
pline1->close();//关闭实体
pline2->close();//关闭实体
pline3->close();//关闭实体
acdbhatch* phatch = new acdbhatch();
phatch->setnormal(acgevector3d(0.0,0.0,1.0));
phatch->setelevation(0.0);
phatch->setassociative(adesk::ktrue);
phatch->setpatternscale(5);
phatch->setpattern(acdbhatch::kpredefined,"ansi31");
phatch->sethatchstyle(acdbhatch::knormal);
phatch->appendloop(acdbhatch::kexternal,dbobjids);
phatch->evaluatehatch();
phatch->setcolorindex(1);
acdbhostapplicationservices()->workingdatabase()//查找并以只读模式
->getsymboltable(pblocktable, acdb::kforread);//打开图块表
pblocktable->getat(acdb_model_space, pblocktablerecord,
acdb::kforwrite);//查找并以写模式打开图块表记录(模型空间)
pblocktable->close();//关闭图块表
pblocktablerecord->appendacdbentity(id, phatch);//添加实体返回id
pblocktablerecord->close();//关闭图块表记录
phatch->close();//关闭实体
}
如何画到角
倒角需自己设计
[原创]
非常感谢
非常感谢!
|