明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2177|回复: 13

[源码] 标注图层名在线段右侧

[复制链接]
发表于 2023-4-15 21:57:02 | 显示全部楼层 |阅读模式
本帖最后由 nyistjz 于 2023-4-15 21:58 编辑


给朋友做的一个小功能,希望能能更多人有用!

(defun c:tt(/ alist en h i pt ss str)
        (setq ss (ssget '((0 . "*POLYLINE,LINE"))))
        (setq i 0)
        (repeat (sslength ss)
                (setq en (ssname ss i) i (1+ i))
                (setq alist (entget en))
                (setq str (cdr (assoc 8 alist)))
                (setq h 800)
                (setq pt (vlax-curve-getendPoint (vlax-ename->vla-object en)))
                (setq pt (mapcar '(lambda(x y)(+ x y)) pt (list (* 0.5 h) (* -0.3 h) 0)))
                (entmake (list '(0 . "TEXT") (cons 1 str) (cons 8 str) (cons 10 pt) (cons 40 h) (cons 72 0)))
        )
)

本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
tigcat + 1 很给力!
kucha007 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-4-15 23:09:26 | 显示全部楼层
本帖最后由 kucha007 于 2023-4-15 23:51 编辑

最近可能会用到,就做了点改动。
01-获取首尾端点坐标,判断那个才是右侧端点。
02-文字高度改为GetDist输入。
03-命令编组方便撤回
  1. (defun C:TT (/ DOC SS i en LayNam StaPt EndPt TgtPt Hight)
  2.   (vl-load-com)
  3.   (setq DOC (vla-get-ActiveDOCument (vlax-get-acad-object)))
  4.   (vla-startundomark DOC)
  5.     (if (setq SS (ssget '((0 . "*POLYLINE,LINE"))))
  6.       (progn
  7.         (initget (+ 1 2 4)) ;非空非零非负值
  8.         (setq Hight (getdist "→请输入或量取文字高度:"))
  9.         (repeat (setq i (sslength SS))
  10.           (setq en (ssname SS (setq i (1- i))))
  11.           (setq LayNam (cdr (assoc 8 (entget en))))
  12.           (setq StaPt (vlax-curve-getstartPoint (vlax-ename->vla-object en))) ; 起点坐标
  13.           (setq EndPt (vlax-curve-getendPoint (vlax-ename->vla-object en))) ; 终点坐标
  14.           (setq TgtPt (if (>= (car StaPt) (car EndPt)) StaPt EndPt))
  15.           (setq TgtPt (mapcar
  16.                         '(lambda (x y) (+ x y))
  17.                         TgtPt
  18.                         (list (* 0.5 Hight) (* -0.3 Hight) 0)
  19.                       )
  20.           )
  21.           (entmake
  22.             (list
  23.               '(0 . "TEXT")
  24.               (cons 1 LayNam) ;文字内容
  25.               (cons 8 LayNam) ;图层名称
  26.               (cons 10 TgtPt) ;插入点
  27.               (cons 40 Hight) ;文字高度
  28.             )
  29.           )
  30.         )
  31.       )
  32.     )
  33.   (vla-endundomark DOC)
  34.   (princ)
  35. )





评分

参与人数 1明经币 +1 收起 理由
tigcat + 1 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-23 13:34:48 | 显示全部楼层
画线表示不理解,跟论坛中“提取图层名字”,是相同用法

  1. ;;提取图层名字
  2. (defun C:tcn (/ LST N PT)
  3.   (setvar "cecolor" "bylayer")
  4.   (setq LST (reverse (TABLE "LAYER")))
  5.   (setq PT (getpoint "文字插入點: ")
  6.         N 0
  7.   )
  8.   (foreach NAME LST
  9.     (entmake (list '(0 . "TEXT") (cons 8 NAME) '(100 . "AcDbText") (cons 10
  10.                                                                          (list
  11.                                                                                (car PT)
  12.                                                                                (-
  13.                                                                                   (cadr PT) N
  14.                                                                                )
  15.                                                                          )
  16.                                                                    ) '
  17.                    (40 . 6) (cons 1 NAME)
  18.              )
  19.     )
  20.     (setq N (+ N 10.0))
  21.   )
  22.   (princ)
  23. )

  24. (defun TABLE (S / D R)
  25.   (while (setq D (tblnext S (null D)))
  26.     (setq R (cons (cdr (assoc 2 D)) R))
  27.   )
  28. )
 楼主| 发表于 2023-4-15 23:58:42 | 显示全部楼层
kucha007 发表于 2023-4-15 23:09
最近可能会用到,就做了点改动。
01-获取首尾端点坐标,判断那个才是右侧端点。
02-文字高度改为GetDist ...

发表于 2023-4-16 11:22:09 来自手机 | 显示全部楼层
谢谢大佬分享实用功能
发表于 2023-4-16 20:51:43 | 显示全部楼层
kucha007 发表于 2023-4-15 23:09
最近可能会用到,就做了点改动。
01-获取首尾端点坐标,判断那个才是右侧端点。
02-文字高度改为GetDist ...

感谢大佬优化,输入命令选择对象后输入字高时出现乱码
发表于 2023-4-20 16:39:39 | 显示全部楼层
kucha007 发表于 2023-4-15 23:09
最近可能会用到,就做了点改动。
01-获取首尾端点坐标,判断那个才是右侧端点。
02-文字高度改为GetDist ...

你好,
首先,聊表谢意!谷雨快乐!

其次,附上GIF动图,直观,如有动图疑问,可查看下面链接教程;

Cad图块中线型比例修改 - AutoCAD工具插件 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)
最后,能否将产生的文字放到公司标准的图层?

本帖子中包含更多资源

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

x
发表于 2023-4-20 20:54:09 | 显示全部楼层
ferious 发表于 2023-4-20 16:39
你好,
首先,聊表谢意!谷雨快乐!

求个这个lisp,上面那个码复制了不行
发表于 2023-4-20 22:50:45 | 显示全部楼层
本帖最后由 aggdqty 于 2023-4-20 22:56 编辑
kucha007 发表于 2023-4-15 23:09
最近可能会用到,就做了点改动。
01-获取首尾端点坐标,判断那个才是右侧端点。
02-文字高度改为GetDist ...

试了一下,很实用,谢谢
发表于 2023-4-21 08:15:17 | 显示全部楼层
wlpkok 发表于 2023-4-20 20:54
求个这个lisp,上面那个码复制了不行

(defun C:TTT4 (/ DOC SS i en LayNam StaPt EndPt TgtPt Hight)
  (vl-load-com)
  (setq DOC (vla-get-ActiveDOCument (vlax-get-acad-object)))
  (vla-startundomark DOC)
    (if (setq SS (ssget '((0 . "*POLYLINE,LINE"))))
      (progn
        (initget (+ 1 2 4)) ;非空非零非负值
        (setq Hight (getdist "→请输入或量取文字高度:"))
        (repeat (setq i (sslength SS))
          (setq en (ssname SS (setq i (1- i))))
          (setq LayNam (cdr (assoc 8 (entget en))))
          (setq StaPt (vlax-curve-getstartPoint (vlax-ename->vla-object en))) ; 起点坐标
          (setq EndPt (vlax-curve-getendPoint (vlax-ename->vla-object en))) ; 终点坐标
          (setq TgtPt (if (>= (car StaPt) (car EndPt)) StaPt EndPt))
          (setq TgtPt (mapcar
                        '(lambda (x y) (+ x y))
                        TgtPt
                        (list (* 0.5 Hight) (* -0.3 Hight) 0)
                      )
          )
          (entmake
            (list
              '(0 . "TEXT")
              (cons 1 LayNam) ;文字内容
              (cons 8 LayNam) ;图层名称
              (cons 10 TgtPt) ;插入点
              (cons 40 Hight) ;文字高度
            )
          )
        )
      )
    )
  (vla-endundomark DOC)
  (princ)
)
发表于 2023-4-21 13:17:19 | 显示全部楼层
ferious 发表于 2023-4-21 08:15
(defun C:TTT4 (/ DOC SS i en LayNam StaPt EndPt TgtPt Hight)
  (vl-load-com)
  (setq DOC (vla-ge ...

感谢啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 21:25 , Processed in 0.192303 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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