感谢比格尔的激励。问题是我不知道该看哪里。只要你指出那一行代码,我想我已经破解了。
看看我是怎么走的(也许在你看来是中世纪!)
- (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)
-
- )
|