几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-04-16, 01:59 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】[求助]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();//关闭实体
}
如何画到角
倒角需自己设计
[原创]
非常感谢
非常感谢!
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 06:59 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多