获取viewp范围的坐标
我有一个布局,我们使用的土地地图为我们的测绘局。我需要指出视口范围的坐标,但坐标需要来自模型空间。我在考虑编写一个lisp,在视口上绘制一个矩形,用矩形创建一个选择集,将其移动到“模型”选项卡,然后查询角点的坐标并将其输入到字段中。
然后,如果视图被更改,例程将删除带有矩形的层,并再次启动该过程。
这条路过顶了吗?还有别的方法吗?
谢谢
尝试以下快速程序:
(defun c:vprec ( / _text l j k p )
(defun _text ( s p r j )
(entmake
(list
'(0 . "TEXT")
(cons 410 (getvar 'ctab))
(cons 040 (getvar 'textsize))
(cons 007 (getvar 'textstyle))
(cons 010 p)
(cons 011 p)
(cons 001 s)
(cons 050 r)
(cons 072 j)
'(73 . 2)
)
)
)
(cond
( (= 1 (getvar 'tilemode))
(princ "\nCommand only available in Paperspace.")
)
( (= 1 (getvar 'cvport))
(princ "\nPlease activate a viewport.")
)
( (setq l(cdr (assoc (getvar 'cvport) (vports)))
j '(2 0 2 0)
k '(2 0 0 2)
)
(foreach x (list (car l) (cadr l) (list (caadr l) (cadar l)) (list (caar l) (cadadr l)))
(setq p (mapcar 'rtos (trans (trans x 3 2) 2 0)))
(_text (strcat "E:" (carp)) x (/ pi 2.0) (car j))
(_text (strcat "N:" (cadr p)) x 0.0 (car k))
(setq j (cdr j)
k (cdr k)
)
)
)
)
(princ)
)
谢谢李·麦克。这太棒了。但有两个问题。
首先,如果我多次运行它,它会覆盖第一个文本。
第二个是文本高度。我曾尝试为此创建一个文本样式,并将其中的高度设置为5,但即使新样式设置为当前样式,文本仍以2.5的速度输入。我错过了什么?
再次感谢。。。 李·麦克,
刚刚找到文字高度问题的解决方案。
谢谢
当然,它只是创建文本。
文字高度来自TEXTSIZE系统变量。 谢谢李,我得到了文本高度和覆盖问题排序。还有一件事我忘了问,那就是如何将数字限制为不带小数点的整数。。
http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/Rounding-Text-to-Less-Decimal-Places/td-p/2510232
根据这个链接,您的程序中的设置似乎设置为0,但它仍然提供4位小数。。。。我看错了吗?
当前程序使用LUNITS和LUPREC的设置,因为调用rtos时没有单位或精度参数。
要包含这些参数,请更改:
(setq p (mapcar 'rtos (trans (trans x 3 2) 2 0)))至:
我强调了单位和精度参数。 谢谢LeeMac,
这就是我最后得到的。。
3
我知道我添加的内容很粗糙。。。。但它们似乎确实有效。
页:
[1]