[求助]用lisp获取屏幕角点坐标的问题
如果当前十字光标与屏幕不是水平和垂直状态,如何用LSP程序获得屏幕四个角点的坐标呢?(只要介绍个思路就可以了,程序我自己写)搜索一下,我记得龙龙仔有给过几个变量,可以取得这些坐标
这也是我在该网站上学到的,
;;;用来获得当前绘图区的坐下角和右上角坐标值 Design by Taoyi(defun forall:getscreen (/ tempos viewcnt viewH
viewW fact viewW1 Hhalf
Whalf pnt_leftdown pnt_rightdown
return
)
(setq tempos (getvar "osmode"))
(setvar "osmode" 0)
(setq viewcnt (getvar "viewctr"))
(setq viewH (getvar "viewsize"))
(setq viewW (getvar "screensize"))
(setq fact (/ viewH (cadr viewW)))
(setq viewW1 (* fact (car viewW)))
(setq Hhalf (/ viewH 2))
(setq Whalf (/ viewW1 2))
(setq pnt_leftdown
(list (- (car viewcnt) Whalf) (- (cadr viewcnt) Hhalf))
)
(setq pnt_rightup
(list (+ (car viewcnt) Whalf) (+ (cadr viewcnt) Hhalf))
)
(setvar "osmode" tempos)
(setq return (cons pnt_leftdown pnt_rightup))
)
;;;The function return a list which contain two point cordinate!
这个程序有问题
这个程序默认当前屏幕十字光标是水平的,如果不水平,结果就错了這樣...
(defun C:TT ()(command "_.UCS" "V")
(setq CTR (getvar "VIEWCTR"))
(setq SIZE (getvar "VIEWSIZE"))
(setq SCREEN (getvar "SCREENSIZE"))
(setq SCALE (/ (car SCREEN) (cadr SCREEN)))
(setq XSIZE (* SCALE SIZE))
(setq RT (list (+ (car CTR) (/ XSIZE 2)) (+ (cadr CTR) (/ SIZE 2))))
(setq LB (list (- (car CTR) (/ XSIZE 2)) (- (cadr CTR) (/ SIZE 2))))
(command "_.line" RT LB "")
(command "_.UCS" "P")
(princ)
)
不是我想要的:(
这样不能透明执行了,而且我有其它函数也不能用,能不能不使用command命令呢?另:UCS V是什么意思?UCS的提示里面怎么没有V选项?
llz
利用3个系统变量,可算出...VIEWCTR 系统变量 (只读)
类型:3D 点
储存于:图面
储存目前视埠内的视景中心点。以 UCS 坐标表示。
VIEWSIZE 系统变量 (只读)
类型:实数
储存于:图面
储存目前视埠内的视景高度。以图面单位来表示。
SCREENSIZE 系统变量(只读)
类型:2D 点
不储存
储存目前视埠的尺寸 (X 和 Y),以像素为单位元。
你把UCS放成斜的算算就知道不对了
你把UCS放成斜的算算就知道不对了搞好了
搞好了,(fp) 返回两个角点坐标的表:(defun fp (/ c03 c08 c04 c05 c07 c06 c09 c01 c02)
(setq c03 (getvar "viewctr")
c03 (trans c03 1 2)
c08 (getvar "viewsize")
c04 (getvar "screensize")
c07 (car c04)
c06 (cadr c04)
c09 (/ (* c08 c07) c06)
c01 (list (- (car c03) (* 0.5 c09)) (- (cadr c03) (* 0.5 c08)))
c02 (list (+ (car c03) (* 0.5 c09)) (+ (cadr c03) (* 0.5 c08)))
c01 (trans c01 2 1)
c02 (trans c02 2 1))
(list c01 c02)
) Taoyimaier 发表于 2003-5-28 19:13
;;;用来获得当前绘图区的坐下角和右上角坐标值 Design by Taoyi
(defun forall:getscreen (/ tempos ...
最后返回值笔误了,应该用list
(list pnt_leftdown pnt_rightup)
页:
[1]
2