好的,首先,谢谢大家在我来这里的时候帮助我。这个lisp是不同lisp的组合,我一直在尝试修改它来为我做事情。我现在不知道出了什么问题,有人能帮我一下吗。这是我运行它时遇到的错误。
“错误:错误的参数类型:2D/3D点:(2898.99)”
我想做的是用长度向上取整的多段线来标记多段线。文本应始终位于行的顶部,并从上到下或从左到右阅读。
- (defun c:pt (/ layerset hr raf1 raf2 ss en ed p10 p11 mpt d2d d1d d3d d4d lan tan fg hg)
- (defun errorhandler (s)
- (if (/= s "Function cancelled")
- (princ (strcat "\nError: " s))
- (princ "SW function cancelled!"))
- (setvar "clayer" layerset)
- (setvar "orthomode" orthoset)
- (setvar "osmode" osset)
- (setvar "cmddia" cmddiaset)
- (setvar "attdia" attdiaset)
- (setvar "regenmode" 1)
- (setq *error* olderr)
- (princ))
- (setq layerset (getvar "clayer"))
- ;----------PICK WHICH LINES YOU WANT TO LABEL-------------
- (setq hr (getstring "\nCeiling or Ridges?(C/R): "))
- (if (= hr "c")
- (progn
- (command "_.layer" "s" "s-frm-cjoist" "off" "*" "n" "on" "s-anno-text" "s" "s-anno-text" "" "")))
- (if (= hr "r")
- (progn
- (command "_.layer" "s" "s-frm-roof" "off" "*" "n" "on" "s-anno-text" "s" "s-anno-text" "" "")))
- (command "textsize" "6" "")
- (command "_.style" "jaytxt" "romans" "0" "0.80" "" "" "" "")
- (and (setq ss (ssget '((0 . "*polyline"))))
- (while (setq en (ssname ss 0))
- (setq ed (entget en))
- (setq p10 (cdr (assoc 10 ed)))
- (setq p9 (reverse ed))
- (setq p11 (cdr (assoc 10 p9)))
- (setq mpt (mapcar '(lambda (a b) (* (+ a b) 0.5)) p10 p11))
- ;(setq d2d (distance (cdr (reverse p10)) (cdr (reverse p11))))
- (setq d2d (distance (cdr p10)(cdr p11)))
- (setq d1d (/ d2d 12.))
- (setq d4d (fix (* (+ (/ d1d 2.0) 0.5)2.0)))
- ;------ROUNDING--------------------
- (defun even (n)
- (if (zerop (rem n 2)) n (1+ n)))
- ;-------TEXT JUSTIFICATION----------------------------------------
- (setq lan (angle p10 p11))
- (setq ad (radians->degrees lan))
- (if (and (> ad 90.1) (<= ad 270.1))
- (progn
- (setq ptemp p10)
- (setq p10 p11)
- (setq p11 ptemp)
- (setq lan (angle p10 p11))
- (setq ad (radians->degrees lan))))
- ;(if (> lan 4) (setq lan 1.57079))
- ;(if (> lan 4)(< lan 5) (setq lan lan))
- ;(if (> lan 3) (setq lan (- lan pi)))
- ;(if (> lan 2) (setq lan (+ lan pi)))
- (setq dir (if (< (* pi 0.5) lan (* pi 1.5)) - +))
- ;(setq tan (if (> (* pi 1.5) lan (* pi 0.5)) (+ lan pi) lan))
- (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 (setq r1(polar mpt (dir lan (+ 1)) ;(* pi 0.5))
- (getvar "TEXTSIZE")))))
- (setq hg(cons 11 (setq r2(polar mpt (dir lan (+ 1)) ;(* pi 0.5))
- (getvar "TEXTSIZE")))))
- (setq gg(cons 50 lan))
- (cons 1 (strcat (itoa (even d4d)) "'")))))
- (ssdel en ss)))
- (command "_.layer" "on" "*" "" "")
- (setvar "clayer" layerset)
- (prin1))
|