批量标注pl线
本帖最后由 yjpzc 于 2011-1-26 19:32 编辑(defun c:plbz()
(command "layer" "M" "bz" "C" "4" "" "LT" "CONTINUOUS" "" "");设置一个标注图层
(setq ss(ssget))
(setq n 0)
(setq pts nil)
(repeat (sslength ss)
(setq en (entget (ssname ss n)))
(if (= (cdr (assoc 0 en)) "LWPOLYLINE")
(progn
;(setq nul(cdr (assoc 90 en)))
(foreach lst en
(if (= (car lst) 10);判断如果点表的第一个数为10就将坐标添加进新的列表
(setq pts (append pts (list (cons n (cdr lst)))))))
;;;;---------------
(setq pps nil)
(setq k 0)
;----------------------->标注选择的实体
(repeat (length pps);设置循环的次数为新建表的长度
(setq pt1(nth k pps))
(if (<= (length pps)(1+ k))
(setq pt2 (nth 0 pps))
(setq pt2(nth (1+ k) pps))
);判断如果表的长度小于运行次数+1的话那么pt2就取列表的一个坐标
(setq dis(/ (distance pt1 pt2) 1.00));取点之间的距离
(setq text (rtos dis 2 3));将距离转换成字符串
(setq rang(angle pt1 pt2));取点间的角度
(setq ang(* (/ rang pi) 180));转弧度角
(setq pos(/ dis 2.0));求点间距离一半的长度
(setq mid_pt (polar pt1 rang pos));求两点间的中点坐标
(setq mid_pt1(polar mid_pt (+ rang (/ pi 2)) 0.4));求文字标注点的坐标
(if
(and (> ang 90) (<= ang 270))
(setq ang(+ ang 180))
(setq mid_pt1(polarmid_pt1 (+ rang (/ (* pi 3) 2)) 0.25))
)
(command "text" "j" "c" mid_pt1 "0.3" ang text);标注文字
(setq k(1+ k))
)
)
)
(setq n(1+ n))
)
(princ (strcat "\n" "共标注" (itoa n) "个多边形" ))
)
楼主也不详细讲讲,或上个图? 不知楼主的可以做什么用?能否说明一下.......
谢谢 不知楼主的可以做什么用啊?介绍下用法,主要应用在那个方面。
谢谢楼主 感谢yjpzc楼主分享学习 <谢谢!> 感谢楼主啊!!!! 感谢楼主 学习了,支持楼主 学习中,感谢楼主 不知楼主的可以做什么用啊?介绍下用法,主要应用在那个方面。
谢谢楼主