明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3204|回复: 2

多义线长度标注

[复制链接]
发表于 2013-1-13 14:01:30 | 显示全部楼层 |阅读模式
(defun c:cdbz()
(command "layer" "M" "长度标注" "C" "4" "" "LT" "CONTINUOUS" "" "");设置一个标注图层
(setq k 0)
(setq en(entget (car (entsel "\n选取要标注的多段线:"))));选取图元名
             (setq pts nil);设置一个空表
;----------------------------------->读取图元名的坐标并将其添加到新的表
             (foreach lst en
          (if (= (car lst) 10);判断如果点表的第一个数为10就将坐标添加进新的列表
      (setq pts (append pts (list (cdr lst))))))
;----------------------->标注选择的实体
(repeat (length pts);设置循环的次数为新建表的长度
        (setq pt1(nth k pts))
        (if (<= (length pts)(1+ k))
            (setq pt2 (nth 0 pts))
            (setq pt2(nth (1+ k) pts))            
        );判断如果表的长度小于运行次数+1的话那么pt2就取列表的一个坐标
        (setq dis(/ (distance pt1 pt2) 1.00));取点之间的距离
(setq text (rtos dis 2 2));将距离转换成字符串
(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.5));求文字标注点的坐标
     (if
       (and (> ang 90) (<= ang 270))
       (setq ang(+ ang 180))
       (setq mid_pt1(polar  mid_pt1 (+ rang (/ (* pi 3) 2)) 0.25))
       )
    (command "text" "j" "c" mid_pt1 "1.0" ang text);标注文字
        (setq k(1+ k))
        )      
  (princ)
  )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-1-13 20:59:58 | 显示全部楼层
顶一个,,好东西,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-22 18:54 , Processed in 0.218253 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表