- UID
- 5537
- 积分
- 371
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-5-23
- 最后登录
- 1970-1-1
|
发表于 2002-10-31 09:54:22
|
显示全部楼层
- /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
- //| 函数名: 绘制PLine线
- //| MakePlineEx()
- //|
- //| 输入参数: int n 项点的各数
- //| char* lay 所在层
- //| ads_point pt[] 各项点坐标
- //| double wid 线宽
- //| int col 颜色
- //| struct resbuf *xData 附加扩展数据
- //| BOOL draw 是否绘制
- //|
- //| 返回: AcDbObjectId
- //| 说明: 指定层名,建立PLine线
- //| 举例: 略
- /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
- AcDbObjectId MakePlineEx(int n,char* lay,ads_point pt[],double wid,
- int col,struct resbuf *xData,BOOL draw)
- {
- int i;
- AcDbObjectId PlineId;
- AcGePoint3dArray ptArr;//定义三维坐标数组
- ptArr.setLogicalLength(n);
- for (i = 0;i < n ;i++)
- ptArr[i].set(pt[i][0],pt[i][1],0.0); //转换坐标数组
- if (draw) {
- AcDb2dPolyline *pLine = new AcDb2dPolyline(AcDb::k2dSimplePoly,
- ptArr,0.0,Adesk::kTrue,wid,wid);
- AcDbBlockTable *pBlockTable;
- if (acdbHostApplicationServices()->workingDatabase()->
- getBlockTable(pBlockTable,AcDb::kForRead) != Acad::eOk) {
- pLine->close();
- return 0;
- }
- AcDbBlockTableRecord *pBlockTableRecord;
- if (pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,
- AcDb::kForWrite) != Acad::eOk) {
- pBlockTable->close();
- pLine->close();
- return 0;
- }
- if (pBlockTable->close() != Acad::eOk) {
- pBlockTableRecord->close();
- pLine->close();
- return 0;
- }
- pLine->setColorIndex(col);
- if (pLine->makeOpen() != Acad::eOk) {
- pBlockTableRecord->close();
- pLine->close();
- return 0;
- }
-
- pLine->setLayer(lay);
- //将对象添加到数据库中
- if (pBlockTableRecord->appendAcDbEntity(PlineId,pLine) != Acad::eOk) {
- pBlockTableRecord->close();
- pLine->close();
- return 0;
- }
-
- if (pBlockTableRecord->close() != Acad::eOk) {
- pLine->close();
- return 0;
- }
- //===========加扩展数据===========
- pLine->upgradeOpen();
- if (pLine->setXData(xData) != Acad::eOk){
- ads_printf("\n警告: 实体(多义线 ID=%d)添加扩展数据时出错!\n",PlineId);
- pLine->close();
- return PlineId;
- }
- //================================
- pLine->close();
- }
- else {
- for (i = 0;i < n;i++) {
- if (i < n - 1)
- acedGrDraw(pt[i],pt[i + 1],col,0);
- }
- }
- return PlineId;
- }
复制代码 |
|