使用autolisp标记
我的同事制作了这个lsip例程来测量和标记线,但它不起作用,请帮助。(defun C:LF()
(setq en(car (entsel "\n Select Line: ")))
(setq enlist(entget en)
pt1 (cdr(assoc 10 enlist))
pt2 (cdr(assoc 11 enlist))
ang (angle pt1 pt2)
dis (distance pt1 pt2)
)
(command "Dtext"
(polar (polar pt1 ang (/ dis 2.0)) (+ ang (/ pi 2.0))(* (getvar"ltscale") 0.0625))
(* (getvar"ltscale") 0.09375)
(angtos ang)
(strcat (rtos (/ dis 12.0) 2 2) "' " (angtos ang))
)
)
(defun c:lf (/ p1 p2 di ang ins txt)
(setq p1 (getpoint "\nspecify first point: "))
(setq p2 (getpoint p1 "\nspecify second point: "))
(setq di (distance p1 p2))
(setq ang (angle p1 p2))
(setq ins (getpoint "\nspecify text location: "))
(setq txt (strcat (rtos di 2 2) "' " (angtos ang)))
(command "text" ins 2.5 0 txt)
(princ)
)
我刚刚修改了我使用的那个。你需要进一步修改,但我认为这更容易理解发生了什么。 谢谢你做得很好 有没有可能让它写在建筑而不是十进制 值得深思。。。
(defun c:Test (/ ss)
(if (setq ss (ssget '((0 . "LINE"))))
((lambda (i / e l p1 p2 a)
(while (setq e (ssname ss (setq i (1+ i))))
(entmake
(list
'(0 . "TEXT")
(cons 10
(mapcar (function (lambda (a b) (/ (+ a b) 2.)))
(setq p1 (cdr (assoc 10 (setq l (entget e)))))
(setq p2 (cdr (assoc 11 l)))
)
)
(cons 40 (getvar 'textsize))
(cons 1
(strcat (rtos (/ (distance p1 p2) 12.) 4 2)
"' "
(angtos (setq a (angle p1 p2)))
)
)
(cons 50 a)
)
)
)
)
-1
)
)
(princ)
) 很好,艾伦,这是我唯一会做的改变-希望你不介意:
(defun c:Test (/ ss)
;; AJ Thompson, angle modified by LeeMac
(if (setq ss (ssget '((0 . "LINE"))))
((lambda (i / e l p p1 p2 a)
(while (setq e (ssname ss (setq i (1+ i))))
(entmake
(list
'(0 . "TEXT")
(cons 10
(setq p ; LM
(mapcar (function (lambda (a b) (/ (+ a b) 2.)))
(setq p1 (cdr (assoc 10 (setq l (entget e)))))
(setq p2 (cdr (assoc 11 l)))
)
)
)
(cons 40 (getvar 'textsize))
(cons 1
(strcat (rtos (/ (distance p1 p2) 12.) 4 2)
"' "
(angtos (setq a (angle p1 p2)))
)
)
(cons 50 (LM:MakeReadable a)) ; LM
(cons 72 1) ; LM
(cons 73 0) ; LM
(cons 11 p) ; LM
)
)
)
)
-1
)
)
(princ)
)
(defun LM:MakeReadable ( a )
;; © Lee Mac 2010
(cond
(
(and (> a (/ pi 2)) (<= a pi))
(- a pi)
)
(
(and (> a pi) (<= a (/ (* 3 pi) 2)))
(+ a pi)
)
(
a
)
)
)
我终于进入了entmake/mod!谢谢李和艾伦
____
很抱歉编辑了这么多。。 谢谢我不想再要求你们了,因为你们已经为我做了这么多了,但有没有可能让你们的程序写成10'-6“而不是10 1/2”。我是一个autolisp新手,不知道自己怎么做 哦,没关系,我明白了 谢谢大家的帮助
不客气。
页:
[1]
2