我现在明白了,因为某种原因,它给了我一个错误。
; 错误:错误的参数类型:stringp nil
但是当我运行我的另一个LISP时,然后运行这个LISP,它就可以工作了。
你知道为什么吗?
- ;Version 1.00
- (defun c:cs (/)
- (setq c (getstring "\nWhat is the spacing? (24,16,12): "))
- (and (setq ss (ssget "_:L" '((0 . "LINE"))))
- (while (setq en (ssname ss 0))
- (setq ed (entget en))
- (setq p10 (cdr (assoc 10 ed)))
- (setq p11 (cdr (assoc 11 ed)))
- (setq mpt (mapcar '(lambda (a b) (* (+ a b) 0.5)) p10 p11))
- (setq d2d (distance (cdr (reverse p10)) (cdr (reverse p11))))
- ;(setq d1d (/ d2d 12.))
- ;(setq d1c (fix (+ d1d 0.501)))
-
-
- (if (= c "24")
- (cond ((<= d2d 118)(setq e "2x6"))
- ((and(>= d2d 118.01)(<= d2d 150))(setq e "2x8"))
- ((and(>= d2d 150.01)(<= d2d 177))(setq e "2x10"))
- ((and(>= d2d 177.01)(<= d2d 209))(setq e "2x12"))
- ((and(>= d2d 209.01)(<= d2d 500))(setq e "Change Spacing"))
- );end cond
- );end if
- (if (= c "16")
- (cond ((<= d2d 144)(setq e "2x6"))
- ((and(>= d2d 144.01)(<= d2d 183))(setq e "2x8"))
- ((and(>= d2d 183.01)(<= d2d 217))(setq e "2x10"))
- ((and(>= d2d 217.01)(<= d2d 256))(setq e "2x12"))
- ((and(>= d2d 256.01)(<= d2d 500))(setq e "Change Spacing"))
- );end cond
- );end if
- (if (= c "12")
- (cond ((<= d2d 167)(setq e "2x6"))
- ((and(>= d2d 167.01)(<= d2d 211))(setq e "2x8"))
- ((and(>= d2d 211.01)(<= d2d 251))(setq e "2x10"))
- ((and(>= d2d 251.01)(<= d2d 296))(setq e "2x12"))
- ((and(>= d2d 296.01)(<= d2d 500))(setq e "Change Spacing"))
- );end cond
- );end if
- (defun radians->degrees (r)(cvunit r "radian" "degree"));end rad defun
-
- ;-------TEXT JUSTIFICATION----------------------------------------
- (setq lan (angle p10 p11))
- (setq ad (radians->degrees lan))
- (if (and (> ad 90.1) (<= ad 270.1))
- (progn
- (setq ptemp p10
- p10 p11
- p11 ptemp
- lan (angle p10 p11)
- ad (radians->degrees lan))
- );end progn
- );end if
-
- (setq dir (if (< (* pi 0.5) lan (* pi 1.5)) - +))
- (setq r3(entmake (list (cons 0 "TEXT")
- (cons 8 (getvar "CLAYER"))
- (cons 7 (getvar "TEXTSTYLE"))
- (cons 40 (getvar "TEXTSIZE"))
- (cons 41 0.80)
- (cons 72 4)
- (setq fg(cons 10 ' (0.0 0.0)));(setq r1(polar mpt (dir lan (+ 1))
- ;(getvar "TEXTSIZE")))))
- (setq hg(cons 11 (setq r2(polar mpt (dir lan (* 0.5 pi));(+ 1))
- (+ (* 0.5 (atof width)) (* 0.8 (getvar "TEXTSIZE")))))))
- (setq gg(cons 50 lan))
- (setq rg(cons 1 (strcat e)))
- );end list
- );end entmake
- );end setq r3
-
-
- (ssdel en ss)));end and
- (prin1)
- );end defun
|