我通过选择它们来获得分数。。。
这是完整的Lisp程序
- ;;; Calculating heights of points on slope by selecting 3 points
- ;;; first two points are for determining longitudinal slope and third is for
- ;;; latitudinal slope
- (defun c:PHOS (/ 1_pnt 2_pnt 3_pnt h_ppx h_ppy 2_pnt_t 3_pnt_t 1_pnt_u 2_pnt_u 3_pnt_u)
- (setvar "cmdecho" 0)
- (setq osm(getvar 'OSMODE))
- (setvar 'OSMODE
- (princ"\nSelect 3 points with known height for determining slope...\n
- ...starting point,ending point and point on the left side relative to first two")
- (setq 1_pnt(getpoint)
- 2_pnt(getpoint)
- 3_pnt(getpoint)
- h nil
- h_ppx(/(-(caddr 2_pnt)(caddr 1_pnt))
- (sqrt(+(expt(-(car 2_pnt)(car 1_pnt))2)(expt(-(cadr 2_pnt)(cadr 1_pnt))2))))
- 1_pnt_u (reverse(cons 0.0 (cdr(reverse 1_pnt))))
- 2_pnt_u (reverse(cons 0.0 (cdr(reverse 2_pnt))))
- 3_pnt_u (reverse(cons 0.0 (cdr(reverse 3_pnt))))
- )
- (setvar 'OSMODE 0)
- (command "ucs" "3p" 1_pnt_u 2_pnt_u "")
- (setq 1_pnt_t(trans 1_pnt 0 1)
- 2_pnt_t(trans 2_pnt 0 1)
- 3_pnt_t(trans 3_pnt 0 1)
- h_ppy(/(-(caddr 3_pnt_t)(+(* h_ppx (car 3_pnt_t))(caddr 1_pnt)))(cadr 3_pnt_t))
- )
- (setvar 'OSMODE
- (while(setq pnt(getpoint"\nPick point for calculating height"))
- (setq h(+ (caddr 1_pnt)(*(car pnt)h_ppx)(*(cadr pnt)h_ppy)))
- (command "text" "j" "bl" (trans pnt 1 0) "" "" (rtos h 2 3))
- ;(princ "\n")
- ;(princ (rtos h 2 3))
- )
- (command "ucs" "")
- (setvar 'OSMODE osm)
- )
- (princ
- "\nCalculating point heights on slope...
- Copyright © by TOMISLAV VARGEK...Osijek,Croatia...\n ...Type PHOS to start..."
- )
- (defun *error* (msg)
- (command "ucs" "")
- (setvar 'OSMODE osm)
- (princ)
- )
请注意带有命令“text”的行。。。这就是我需要将文本放置到wcs的地方 |