yjpzc 发表于 2011-1-12 14:15:35

批量标注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) "个多边形" ))
)

xiaxiang 发表于 2011-1-12 14:52:13

楼主也不详细讲讲,或上个图?

461045462 发表于 2011-1-12 14:56:41

不知楼主的可以做什么用?能否说明一下.......
谢谢

gzbccy 发表于 2011-1-12 17:16:45

不知楼主的可以做什么用啊?介绍下用法,主要应用在那个方面。
谢谢楼主

yoyoho 发表于 2011-1-12 22:19:46

感谢yjpzc楼主分享学习 <谢谢!>

shxm112233 发表于 2011-1-17 20:09:41

感谢楼主啊!!!!

zhd81617 发表于 2011-1-25 08:09:04

感谢楼主

ACADLISP 发表于 2011-1-25 10:02:39

学习了,支持楼主

yxl88168 发表于 2011-3-29 21:07:31

学习中,感谢楼主

zhengchuan 发表于 2011-4-29 01:42:48

不知楼主的可以做什么用啊?介绍下用法,主要应用在那个方面。
谢谢楼主
页: [1] 2 3
查看完整版本: 批量标注pl线