显示delta X和delta Y o
大家好,我在这里找到了Lee的以下代码,它非常接近我需要的,但我需要稍微修改一下,以打印X和Y坐标差(dX,dY)对,而不是距离。有人能帮忙吗?
(defun c:dist2 (/ doc spc pt1 pt2 tObj gr)
(vl-load-com)
(or *Mac$Rot* (setq *Mac$Rot* 0.0))
(setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)) spc (if (zerop (vla-get-activespace doc)) (if (= (vla-get-mspace doc) :vlax-true)(vla-get-modelspace doc)(vla-get-paperspace doc)) (vla-get-modelspace doc)))
(while
(and (setq pt1 (getpoint "\nSelect First Point: "))
(setq pt2 (getpoint "\nSelect Second Point: " pt1)))
(vla-put-Alignment (setq tObj (vla-addText spc (rtos (distance pt1 pt2)) (vlax-3D-point '(0 0 0))(getvar "TEXTSIZE"))) acAlignmentMiddleCenter)
(while
(or
(and (setq gr (grread t 7 0))
(eq 5 (car gr))
)
(and (eq 2 (car gr))
(eq 32 (cadr gr)))
)
(cond ((and (eq 5 (car gr))
(listp (cadr gr))
)
(vla-move tObj (vla-get-TextAlignmentPoint tObj) (vlax-3D-point (cadr gr))))
( (and (eq 2 (car gr))
(eq 32 (cadr gr))
)
(vla-put-Rotation tObj (setq *Mac$Rot* (+ *Mac$Rot* (/ pi 2.))))
)
)
)
)
(princ)) 你有超过100个帖子,你现在应该能够做到这一点,非常简单的要求自己至少试一试,如果你弄错了,我们会帮助你。
您需要更改此值(setq tObj(vla addText spc(rtos(distance pt1 pt2))而不是distance get这两个X和Y值之间的差
(nth pt1 0)
(nth pt1 1)
(nth pt2 0)
(nth pt2 1)
or (car pt1) (cadr pt1)
感谢比格尔的激励。问题是我不知道该看哪里。只要你指出那一行代码,我想我已经破解了。
看看我是怎么走的(也许在你看来是中世纪!)
(defun c:dist2 (/ doc spc pt1 pt2 tObj gr)
(vl-load-com)
(or *Mac$Rot* (setq *Mac$Rot* 0.0))
(setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object))
spc (if (zerop (vla-get-activespace doc))
(if (= (vla-get-mspace doc) :vlax-true)
(vla-get-modelspace doc)
(vla-get-paperspace doc)
)
(vla-get-modelspace doc)
)
)
(while
(and (setq pt1 (getpoint "\nSelect First Point: "))
(setq pt2 (getpoint "\nSelect Second Point: " pt1))
)
(setq pt1x (car pt1)
pt1y (cadr pt1)
pt2x (car pt2)
pt2y (cadr pt2)
dx (- pt1x pt2x)
dy (- pt1y pt2y)
)
(vla-put-Alignment
(setq tObj (vla-addText spc (strcat "(" (rtos dx) " , " (rtos dy) ")") (vlax-3D-point '(0 0 0)) (getvar "TEXTSIZE") ) )
acAlignmentMiddleCenter
)
(while
(or
(and (setq gr (grread t 7 0))
(eq 5 (car gr))
)
(and (eq 2 (car gr))
(eq 32 (cadr gr))
)
)
(cond ((and (eq 5 (car gr))
(listp (cadr gr))
)
(vla-move tObj
(vla-get-TextAlignmentPoint tObj)
(vlax-3D-point (cadr gr))
)
)
((and (eq 2 (car gr))
(eq 32 (cadr gr))
)
(vla-put-Rotation
tObj
(setq *Mac$Rot* (+ *Mac$Rot* (/ pi 2.)))
)
)
)
)
)
(princ)
) 这是一个常见的问题,必须获得X-Y值,很高兴你解决了它。
页:
[1]