一个快速而肮脏的,只在WCS中工作。。。试试看。。。
- (defun c:test (/ PT1 PT1Z PT2 PT2Z PT3 PT3Z S1 S2 TX1 TX2)
- (if (and (not (Prompt "\nSelect first reference TEXT: "))
- (setq s1 (ssget "+.:L:S" '((0 . "TEXT"))))
- (not (Prompt "\nSelect second reference TEXT: "))
- (setq s2 (ssget "+.:L:S" '((0 . "TEXT"))))
- (setq pt3 (getpoint "\nPick point to calculate elevation: "))
- );; and
- (progn
- (setq tx1 (entget (ssname s1 0))
- pt1 (cdr (assoc 11 tx1))
- pt1z (atof (cdr (assoc 1 tx1)))
- tx2 (entget (ssname s2 0))
- pt2 (cdr (assoc 11 tx2))
- pt2z (atof (cdr (assoc 1 tx2)))
- pt3z (+ (/ (* (distance pt1 pt3) (- pt2z pt1z)) (distance pt1 pt2)) pt1z)
- );; setq
- (entmake (list
- '(0 . "TEXT")
- '(100 . "AcDbEntity")
- (assoc 8 tx1)
- '(100 . "AcDbText")
- '(10 0.0 0.0 0.0)
- (assoc 40 tx1)
- (cons 1 (rtos pt3z))
- '(50 . 0.0)
- '(41 . 1.0)
- '(51 . 0.0)
- (assoc 7 tx1)
- '(71 . 0)
- '(72 . 2)
- (cons 11 pt3)
- '(210 0.0 0.0 1.0)
- '(73 . 1)
- );; list
- );; entmake
- );; progn
- );; if
- );; test
亨里克 |