明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4686|回复: 4

[求助]arx中如何画到角和剖面线

[复制链接]
发表于 2002-5-27 16:26:00 | 显示全部楼层 |阅读模式
发表于 2002-5-27 22:44:00 | 显示全部楼层

如何画剖面线(见《机械CAD技术基础》)

图案填充是指以指定的图案去填充一个封闭的边界。因此为完成图案填充主要要完成选择填充边界、填充图案及填充方式。图案填充在机械CAD中主要是为了完成机械制图中的剖面符号。
在AutoCAD数据库中,图案填充使用AcDbHatch类的对象,通过调用其构造函数实现图案填充的创建。
l        其构造函数的格式为:
Acad::ErrorStatus AcDbHatch ();
由于其构造函数仅仅是为AcDbHatch 类的对象分配了内存空间,其填充边界、填充图案及填充方式必须使用该类的成员函数来设置。
图案填充程序设计的步骤:
1)        构造边界的对象组。
2)        调用AcDbHatch类的构造函数生成缺省的AcDbHatch类的对象。
3)        调用AcDbHatch类的成员函数作必要的设置。
4)        调用appendLoop()函数将对象组加入AcDbHatch类以构成边界。
5)        调用evaluateHatch()函数显示填充图案,否则图案不显示。
6)        要重新打开块表纪录后,再将AcDbHatch类的对象添加进图块表记录中。
    填充边界的设置有两个重要要求,第一完全封闭;第二首尾相连。首尾相连就是前一个曲线的终点和下一个曲线的起点完全重合,如果不能满足要求,则不能正确的进行图案填充。关于这项要求需要详细了解请参阅AutoCADR10版本之前的书藉。
例 95:图案填充
程序如下:
        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();//关闭实体
}
发表于 2002-5-27 22:49:00 | 显示全部楼层

如何画到角

倒角需自己设计
 楼主| 发表于 2002-5-30 10:36:00 | 显示全部楼层

[原创]

非常感谢
发表于 2009-2-18 16:04:00 | 显示全部楼层
非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 14:34 , Processed in 0.181965 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表