![]() |
【转帖】[求助]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();//关闭实体 } 如何画到角 倒角需自己设计 [原创] 非常感谢 非常感谢! |
| 所有的时间均为北京时间。 现在的时间是 01:46 PM. |