[LISP]请高手帮忙,还是标注边长的程序
<P>诸位大哥,我在绘图时标注多边形边长经常是一个边、一个边的标注边长,这样工作起来就非常麻烦。</P><P>劳驾诸位大哥,能不能编一个程序,使得标注边长更加方便、快捷。</P>
<P>谢谢!</P> 请试用。
(DEFUN C:DIMPL ()
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
(COMMAND ".UNDO" "BE")
(SETVAR "OSMODE" 0)
(PROMPT "\nSelect lwpolyline :")
(IF (SETQ SS (SSGET '((0 . "LWPOLYLINE")))) (PROGN
(SETVAR "DIMSD1" 1)(SETVAR "DIMSD2" 1)
(SETVAR "DIMSE1" 1)(SETVAR "DIMSE2" 1)
(SETQ SL (SSLENGTH SS) I 0)
(REPEAT SL
(SETQ LC (ENTGET (SSNAME SS I)) I (1+ I))
(SETQ LL (LENGTH LC) J 0 N (CDR (ASSOC 90 LC))
CL (CDR (ASSOC 70 LC)) K 1)
(WHILE (< J LL)
(IF (/= (CAR (NTH J LC)) 10) (SETQ J (1+ J)) (SETQ LL J))
)
(SETQ P1 (CDR (NTH J LC)) PS P1)
(WHILE (< K N)
(SETQ P2 (CDR (NTH (+ J (* K 4)) LC)))
(COMMAND "DIMALIGNED" P1 P2 P2)
(SETQ P1 P2 K (1+ K))
)
(IF (= CL 1) (COMMAND "DIMALIGNED" P1 PS P1))
)
(SETVAR "DIMSD1" 0)(SETVAR "DIMSD2" 0)
(SETVAR "DIMSE1" 0)(SETVAR "DIMSE2" 0)
))
(COMMAND ".UNDO" "E")
(SETVAR "OSMODE" OLDOS)
(SETVAR "CMDECHO" 1)
(PRINC)
)
<P>多谢大哥的程序。</P>
<P>这个程序很好,但还是有个问题,就是在标注边长的时候有的边长在多边形的外侧,有的边长在多边形的内侧。</P>
<P>请问,能不能把所有的边长标注都调整为外侧呢?</P>
<P>谢谢!!!</P> 跟你说了很多次了,让你不要一个问题发多个帖
(defun c:Dimline( / dir gap ss i ent ents pts)
(vl-load-com)
(setq dir (getstring "\n选择方向[(A)顺时针外部/(B)顺时针内部](逆时针则相反)<A>:"))
(setq gap (getreal "\n输入标注文字到边边距离:"))
(if (= (strcase dir) "B")
(setq dir 0)
(setq dir pi)
)
(setq ss (ssget '((0 . "LWPOLYLINE"))))
(setq i 0)
(setvar "cmdecho" 0)
(if ss
(progn
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq ents (entget ent))
(setq pts (mapcar 'cdr (vl-remove-if-not '(lambda (e) (= (car e) 10)) ents)))
(mapcar '(lambda(e1 e2) (command "_.dimaligned" e1 e2 (polar e1 (+ dir (angle e1 e2) (/ pi 2.0)) gap)))
pts (append (cdr pts) (list (car pts))))
(setq i (1+ i))
)
);progn
);if
(princ)
) <P>真对不起!</P>
<P>因为没人理我,我才多发了几个帖子。</P> 下次改正 <P>按顺时针标注时,当线的角度大于行等于180度时,怎样才能把长度标注在线段的另一侧呢?</P> <P>标注样式中修改,如图,选择外部</P>
<P></P> <P>我的意思是指:</P>
<P>在您的标注边长的程序中,我按顺时针标注多边形时,当线段的角度小于180度时,边长的标注就会在多边形的外侧,线段的角度大于等于180度时就会在内侧,我想让它统一标注在多边形的外侧(不管线段的角度是否小于、等于、大于180度,都要标注在多边形的外侧),在您的程序中该怎样实现呢?</P>
<P>谢谢!!!</P> <P>我的程序就是按你的要求啊,不会由于180而改变啊,看图:</P>
<P> </P>
页:
[1]
2