找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 432|回复: 2

[编程申请]:仍然是关于UCS的疑问?

[复制链接]
发表于 2003-8-28 22:09:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我首先用AcDbUCSTableRecord 创建了一个用户坐标系,然后将其添加到AcDbUCSTable中。打算运用acdbSetCurrentUCS全局函数将其设定为当前坐标系,当以AcGeMatics3d类型的矩阵为参数调用上述全局函数时,程序却会生成另一个名位Unnamed的用户坐标系,而不是将起初创建的坐标系设定为当前坐标系。。。。。请问是否有可以通过坐标系的ObjectId参数将其设为当前坐标系的函数或方法呢???
谢谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-8-28 22:27:50 | 显示全部楼层

Re: [编程申请]:仍然是关于UCS的疑问?

最初由 bucolicwind 发布
[B]我首先用AcDbUCSTableRecord 创建了一个用户坐标系,然后将其添加到AcDbUCSTable中。打算运用acdbSetCurrentUCS全局函数将其设定为当前坐标系,当以AcGeMatics3d类型的矩阵为参数调用上述全局函数时,程序却会生成另... [/B]


你先在ACAD命令行交互输入:

UCS
O
任意选一点

这时,你建立了一个用户坐标系。

然后在命令行输入
UCSMAN
进入对话框后,点“命名UCS”标签,可以看到多出了一个“未命名”的坐标系。

这个就是你上面说的现象,这个是正常的,如果你在UCS命令设置坐标系的时候不用S选项设置名字,那么就显示“未命名”。

回到你的问题,你添加了一个AcDbUCSTable下的UCS(AcDbUCSTableRecord),紧紧是加入到UCS符号表里面,你并没有把他设置为当前的UCS,所以用我你另个帖子里面告诉你的方法,用AcDbSetCurentUcs(mat) 来设置当前的UCS,这个MAT就是和你上面添加AcDbUCSTableRecord时候用到的基点、XDIR、YDIR参数能得到的矩阵。

这个矩阵你可以用下面的函数得到:

  1. [font=courier]
  2. void
  3. XdDbUtils::getUcsToWcsMatrix(AcGeMatrix3d& m,AcGePoint3d orgPt, AcGeVector3d xDir,AcGeVector3d yDir)
  4. {
  5.         AcGeVector3d zDir = xDir.crossProduct(yDir);
  6.        
  7.         m.setCoordSystem(orgPt, xDir, yDir, zDir);
  8. }
  9. [/font]
复制代码


上面给参数UCS原点坐标orgPt, UCS的X方向矢量xDir,UCS的Y方向矢量yDir, 计算UCS到WCS转换矩阵m

用全局函数acdbSetCurentUcs(mat)这个操作,就不用你上面说的那个添加AcDbUCSTableRecord的操作了,这个全局函数就是命令UCS命令设置UCS的底层ARX实现,自动建立AcDbUCSTableRecord并设置当前了。

严格说,acdbSetCurentUcs(mat)还不是UCS命令的底层ARX实现,仅仅是全局函数,ADS级别的,又把添加错AcDbUCSTableRecord和设置当前给包装起来了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-29 08:38:20 | 显示全部楼层
问题又出来了:我用上面所说的方法建立了一个AcGeMatrix3d对象并为其设置了坐标系的参数,通过调用acdbSerCurrentUCS(mat)之后也可以得到一个名位Unnamed的UCS,但问题又出来了:为什么不能将新建的UCS用UCS/SAVE命令保存呢???我检查了AcDbUCSTable也没有发现又新的UCS加入到其中。。。。。为什么 ???怎么办???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 02:47 , Processed in 0.173050 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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