找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1329|回复: 16

[编程申请]:再议获得屏幕角点坐标的问题

[复制链接]
发表于 2003-5-28 11:11:59 | 显示全部楼层 |阅读模式

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

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

×
如果当前十字光标与屏幕不呈水平状态,如何得到屏幕四个角点的坐标呢?用XDRX不能得到正确结果,请高手介绍一下思路,程序我自己写就行了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-5-28 13:09:03 | 显示全部楼层
变量viewctr是用户坐标系下的屏幕中心位置
变量viewsize是屏幕坐标系屏幕高度
变量screensize是屏幕的长和宽(单位为像素)
根据这些,完全可以算出屏幕四个角点的坐标。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-28 14:17:22 | 显示全部楼层
这些我是知道的,而且如果屏幕十字光标是水平的,是很容易算的,但如果设置了当前UCS,而且十字光标不水平,仅有这些数据是不够的,不信你试试XDRX里面的获得屏幕角点的函数,结果是错误的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-28 15:04:44 | 显示全部楼层
这些数据是足够的,你看一下这个,或许会有些启发。
http://www.xdcad.net/forum/showthread.php?s=&threadid=53730
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-28 15:25:17 | 显示全部楼层
是下面这段程序吗?
不好意思,我不怎么看得懂这个VBA程序
能讲讲用lisp的思路吗?

Public WithEvents InputMgr As AcadXInputManager


Public Sub AcadStartup()
    If InputMgr Is Nothing Then
        Set InputMgr = New AcadXInputManager
    End If
    InputMgr.InputPointEventsEnabled = True

End Sub


Private Sub InputMgr_InputPointEvent(Document As AutoCAD.AcadDocument, RawPoint As Variant, ComputedPoint As Variant, ByVal History As Long)

    Dim Vctr As Variant
    Dim Vbl As Variant
    Dim Vsize As Double
    Dim Vchang As Double
    Dim Mypro As String
    Dim RawPoint1 As Variant
    RawPoint1 = ThisDrawing.Utility.TranslateCoordinates(RawPoint, acWorld, acDisplayDCS, False)
    Vctr = ThisDrawing.Utility.TranslateCoordinates(ThisDrawing.GetVariable("viewctr"), acUCS, acDisplayDCS, False)
    Vsize = ThisDrawing.GetVariable("viewsize")
    Vbl = ThisDrawing.GetVariable("screensize")
    Vchang = Vbl(0) * Vsize / Vbl(1)
    Vsize = Vsize * 0.4
    Vchang = Vchang * 0.4
   
    If Abs(RawPoint1(0) - Vctr(0)) > Vchang Or Abs(RawPoint1(1) - Vctr(1)) > Vsize Then
       ThisDrawing.Application.ZoomCenter Mypoint(ThisDrawing.Utility.TranslateCoordinates(Vctr, acDisplayDCS, acWorld, False), RawPoint), ThisDrawing.GetVariable("viewsize")
      
    End If

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-5-28 18:25:09 | 显示全部楼层
我没有研究过这个问题,不过坐标系转换应该使用trans函数,如果需要计算,还有几个系统变量有影响,就是ucsorg、ucsxdir、ucsydir。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-28 21:57:15 | 显示全部楼层
这几个变量我研究过,找不到什么办法(我的水平有限)
要不讲晓东帮忙?他的函数也不正确。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

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

使用道具 举报

 楼主| 发表于 2003-5-29 09:47:03 | 显示全部楼层
lijiao的那个程序我不懂,能否介绍一下用lisp怎么实现呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2003-5-29 10:10:51 | 显示全部楼层
查看
http://www.mjtd.com/bbs/dispbbs. ... ID=26501&skin=1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-29 14:32:11 | 显示全部楼层
通过坐标变换好象不能解决问题,不管怎么变,在通过屏幕中心点计算角点的时候,没办法确定角度,所以要知道当前十字光标相对于屏幕的旋转角才行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-29 15:09:27 | 显示全部楼层
通过坐标变换好象不能解决问题,不管怎么变,在通过屏幕中心点计算角点的时候,没办法确定角度,所以要知道当前十字光标相对于屏幕的旋转角才行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 14:25 , Processed in 0.208541 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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