您曾经帮我编过标注边长的程序:
(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) )
这个程序每次标注必需要先选多义线,如果图形中有很多个多义线就会很麻烦。
求助meflying能不能在此程序的基础上改编一下,使其在由多个LINE线组成的
多边形区域内点击,可以自动生成边界并能够根据边界自动标注边长,最后删除边界线。
小弟先向大哥道声谢了!!!!!
|