找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1074|回复: 10

[求助]:有没有办法获得当前视口的世界坐标??

[复制链接]
发表于 2003-7-7 16:05:40 | 显示全部楼层 |阅读模式

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

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

×
有没有办法获得当前视口的世界坐标??
谢谢各位大人!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-7 16:08:12 | 显示全部楼层

Re: [求助]:有没有办法获得当前视口的世界坐标??

最初由 HillMan 发布
[B]有没有办法获得当前视口的世界坐标??
谢谢各位大人!! [/B]


你要获得的是一个点在当前的UCS坐标系的坐标?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-7 16:16:18 | 显示全部楼层
我要获得视口的四个角点的WCS坐标。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-7 16:20:53 | 显示全部楼层
最初由 HillMan 发布
[B]我要获得视口的四个角点的WCS坐标。 [/B]


你看下系统变量 viewctr , viewsize , screensize ,通过这几个变量你可以算出屏幕四角的坐标。

给你贴一个XDRX_API 的库的一个函数

  1. [font=courier]
  2. void  obtainScreenBox(AcGePoint3dArray &nPts)
  3. {
  4.         AcGePoint3d scen;
  5.         resbuf vctr,vsize,ssize;
  6.         ads_getvar("VIEWCTR",&vctr);
  7.         scen=asPnt3d(vctr.resval.rpoint);
  8.         ads_getvar("VIEWSIZE",&vsize);
  9.         double high=vsize.resval.rreal;
  10.         ads_getvar("SCREENSIZE",&ssize);
  11.         double scale=ssize.resval.rpoint[X]/ssize.resval.rpoint[Y];
  12.         double xoffset=high*scale/2,yoffset=high/2;
  13.         AcGeVector3d mvec1(-xoffset,-yoffset,0),mvec2(xoffset,-yoffset,0),mvec3(xoffset,yoffset,0),mvec4(-xoffset,yoffset,0);
  14.         nPts.setLogicalLength(0);
  15.         nPts.append(scen+mvec1);
  16.         nPts.append(scen+mvec2);
  17.         nPts.append(scen+mvec3);
  18.         nPts.append(scen+mvec4);
  19. }
  20. [/font]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-7 16:36:16 | 显示全部楼层
谢谢晓东!!!
:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-7 16:44:01 | 显示全部楼层
有没有办法,判断一个实体在当前显示区域中是否可见。我试过AcDbEntity::Visibility函数,它总是返回真,即使我将实体移动到显示区域外。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-7 16:47:42 | 显示全部楼层
最初由 blas 发布
[B]有没有办法,判断一个实体在当前显示区域中是否可见。我试过AcDbEntity::Visibility函数,它总是返回真,即使我将实体移动到显示区域外。 [/B]


AcDbEntity::Visibility 不是做这个的,他是判断一个实体是否可见,如果不可见,在屏幕外面也不可见。

你可以用AcDbEntity::getGeomExtents 获得实体的包围盒的四个坐标,然后和上面的帖子得到的屏幕四个点,然后判断是否有一个点在屏幕内就可以了。

如果你希望判断实体是否完全在屏幕内,那么你就判断上面是否有一个点不在屏幕内,真的话,那么实体就安全在屏幕外面了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-7 16:52:09 | 显示全部楼层
谢谢!请问AcDbEntity::Visibility什么时候为false
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-7 16:56:39 | 显示全部楼层
最初由 blas 发布
[B]谢谢!请问AcDbEntity::Visibility什么时候为false [/B]


AcDbEntity::Visibility 这个方法是查看实体自身是否在数据库内显示

如果你用,AcDbEntity::setVisibility (..)设置了AcDb::kInvisible在查询就是FALSE了,不过你从屏幕上是选择不到它了:)

  1. [font=courier]
  2. AcDbEntity::setVisibility Function virtual Acad::ErrorStatus

  3. setVisibility(

  4. AcDb::Visibility newVal,

  5. Adesk::Boolean doSubents = true);

  6. newVal Input visibility value to which the entity will be set.
  7. The possible AcDb::Visibility values are:
  8. AcDb::kInvisible
  9. AcDb::kVisible
  10. doSubents Input Boolean indicating whether to propagate
  11. the change to
  12. any subentities the entity may own

  13. This method sets the visibility of an entity to the value specified by
  14. newVal. If the entity owns subentities and doSubents == Adesk::kTrue,
  15. then the visibility change will be applied to the subentities as well.


  16. Note The only built-in entities for which kTrue has an effect are:
  17. AcDb2dPolyline, AcDb3dPolyline, AcDbPolyFaceMesh, and
  18. AcDbPolygonMesh.


  19. Returns Acad::eOk if successful.

  20. [/font]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-7-7 17:01:07 | 显示全部楼层
非常感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-14 16:42:45 | 显示全部楼层
非常感谢,也给了我很大的启发啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 17:02 , Processed in 0.271606 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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