乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 86|回复: 5

UCS&WCS

[复制链接]

11

主题

85

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
129
发表于 2011-10-7 22:39:31 | 显示全部楼层 |阅读模式
现在,我可以创建一个新的UCS ang,通过代码将此ucs设置为cad中的当前ucs,但是
1。 我无法通过代码 2 将 ucs 转移到 wcs
。 我怎么能通过代码删除这个ucs。
这里是创建一个新的ucs,并将这个ucs设置为当前的ucs
//
void createNewUcs(AcGePoint3d ptOri,AcGeVector3d vecXAxis,AcGeVector3d vecYAxis,CString ucsName)
{
AcDbUCSTable *pUcsTbl;
  acdbHostApplicationServices()->workingDatabase()->
getUCSTable(pUcsTbl,AcDb::kForWrite);
  
AcDbUCSTableRecord *pUcsTblRcd = new AcDbUCSTableRecord();
//
Acad::ErrorStatus es = pUcsTblRcd->setName(ucsName);
  if (es != Acad::eOk)
{
delete pUcsTblRcd;
     pUcsTbl->close();
返回;
}
pUcsTblRcd->setOrigin(ptOri);
  pUcsTblRcd->setXAxis(vecXAxis);
pUcsTblRcd->setYAxis(vecYAxis);
//
es = pUcsTbl->add(pUcsTblRcd);
  if (es != Acad::eOk)
{
delete pUcsTblRcd;
     pUcsTbl->close();
返回;
}
//
pUcsTblRcd->close();
  pUcsTbl->close();
}//
void setCurrentUcs(CString ucsName)
{
AcDbUCSTable *pUcsTbl;
  acdbHostApplicationServices()->workingDatabase()->
getUCSTable(pUcsTbl,AcDb::kForWrite);
  
if (!pUcsTbl->has(ucsName))
{
pUcsTbl->close();
     返回;
}
AcDbUCSTableRecord *pUcsTblRcd;
  pUcsTbl->getAt(ucsName,pUcsTblRcd,AcDb::kForRead);

AcGeMatrix3d mat;
  AcGeVector3d vecXAxis,vecYAxis,vecZAxis;
vecXAxis = pUcsTblRcd->xAxis();
vecYAxis = pUcsTblRcd->yAxis();
vecZAxis = vecXAxis.crossProduct(vecYAxis);
mat.setCoordSystem(pUcsTblRcd->origin(),vecXAxis,vecYAxis,vecZAxis);
//
pUcsTblRcd->close();
  pUcsTbl->close();
//
acedSetCurrentUCS(mat);
}//

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

11

主题

85

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
129
发表于 2011-10-7 22:45:52 | 显示全部楼层
友好的提示:如果将代码括在代码标记 [代码] 中...[/代码]它更容易在眼睛上:
  1. void createNewUcs(AcGePoint3d ptOri,AcGeVector3d vecXAxis,AcGeVector3d vecYAxis,CString ucsName)
  2. {
  3.         AcDbUCSTable *pUcsTbl;
  4.         acdbHostApplicationServices()->workingDatabase()->
  5.                 getUCSTable(pUcsTbl,AcDb::kForWrite);
  6.         //
  7.         AcDbUCSTableRecord *pUcsTblRcd = new AcDbUCSTableRecord();
  8.         //
  9.         Acad::ErrorStatus es = pUcsTblRcd->setName(ucsName);
  10.         if (es != Acad::eOk)
  11.         {
  12.                 delete pUcsTblRcd;
  13.                 pUcsTbl->close();
  14.                 return;
  15.         }
  16.         pUcsTblRcd->setOrigin(ptOri);
  17.         pUcsTblRcd->setXAxis(vecXAxis);
  18.         pUcsTblRcd->setYAxis(vecYAxis);
  19.         //
  20.         es = pUcsTbl->add(pUcsTblRcd);
  21.         if (es != Acad::eOk)
  22.         {
  23.                 delete pUcsTblRcd;
  24.                 pUcsTbl->close();
  25.                 return;
  26.         }
  27.         //
  28.         pUcsTblRcd->close();
  29.         pUcsTbl->close();
  30. }
  1. void setCurrentUcs(CString ucsName)
  2. {
  3.         AcDbUCSTable *pUcsTbl;
  4.         acdbHostApplicationServices()->workingDatabase()->
  5.                 getUCSTable(pUcsTbl,AcDb::kForWrite);
  6.         //
  7.         if (!pUcsTbl->has(ucsName))
  8.         {
  9.                 pUcsTbl->close();
  10.                 return;
  11.         }
  12.         AcDbUCSTableRecord *pUcsTblRcd;
  13.         pUcsTbl->getAt(ucsName,pUcsTblRcd,AcDb::kForRead);
  14.         //
  15.         AcGeMatrix3d mat;
  16.         AcGeVector3d vecXAxis,vecYAxis,vecZAxis;
  17.         vecXAxis = pUcsTblRcd->xAxis();
  18.         vecYAxis = pUcsTblRcd->yAxis();
  19.         vecZAxis = vecXAxis.crossProduct(vecYAxis);
  20.         mat.setCoordSystem(pUcsTblRcd->origin(),vecXAxis,vecYAxis,vecZAxis);
  21.         //
  22.         pUcsTblRcd->close();
  23.         pUcsTbl->close();
  24.         //
  25.         acedSetCurrentUCS(mat);
  26. }

回复

使用道具 举报

11

主题

85

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
129
发表于 2011-10-9 22:23:54 | 显示全部楼层
我已经解决了如何从ucs列表中删除现有ucs。但不能转移到wcs。
回复

使用道具 举报

16

主题

83

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2011-10-9 22:30:08 | 显示全部楼层

  1. void deleteUcs()
  2. {
  3. //
  4. //
  5. }
回复

使用道具 举报

11

主题

85

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
129
发表于 2011-10-21 01:08:20 | 显示全部楼层
像这样:
  1. AcGeMatrix3d mat;
  2. mat.setToIdentity();
  3. acedSetCurrentUCS(mat);

回复

使用道具 举报

11

主题

85

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
129
发表于 2011-10-21 06:20:12 | 显示全部楼层
谢谢/
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 14:38 , Processed in 0.189127 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表