你好
我从当前线程中找到了一个lisp(代码),它可以选择多段线的尺寸标注(不适用于直线),如果可以修改lisp,使其同时适用于两个(多段线和直线),这将非常有帮助
我已经在下面发布了代码以供参考
注意:我对auto lisp很陌生,非常感谢您的帮助
- (defun c:pdim(/ plSet pLlst vLst oldOsn cAng cDis cPt)
- (princ "\n<<< Select LwPolyline for dimensioning >>> ")
- (if(setq plSet(ssget '((0 . "LWPOLYLINE"))))
- (progn
- (setq pLlst(vl-remove-if 'listp
- (mapcar 'cadr(ssnamex plSet))))
- (setvar "OSMODE" 0)(setvar "CMDECHO" 0)
- (foreach pl pLlst
- (setq vLst(mapcar 'cdr
- (vl-remove-if-not
- '(lambda(x)(= 10(car x)))(entget pl)))
- oldOsn(getvar "OSMODE")
- ); end setq
- (while(< 1(length vLst))
- (setq cAng(angle(car vLst)(cadr vLst))
- cDis(/(distance(car vLst)(cadr vLst))2)
- cPt(polar(polar(car vLst)cAng cDis)
- (+ cAng(/ pi 2))(* 2(getvar "DIMTXT")))
- ); end setq
- (command "_.dimaligned"(car vLst)(cadr vLst) cPt)
- (setq vLst(cdr vLst))
- ); end while
- ); end foreach
- (setvar "OSMODE" oldOsn)(setvar "CMDECHO" 1)
- ); end progn
- ); end if
- (princ)
- ); end of c:pdim
|