明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 359321852

[源码] CAD 多段线文字标注插件

[复制链接]
 楼主| 发表于 2024-1-31 08:38:06 | 显示全部楼层
本帖最后由 359321852 于 2024-1-31 08:41 编辑
飞雪神光 发表于 2024-1-29 11:06
水平有限 就改成这样了

谢谢你的帮助,
在你的基础上也做了一些修改,增加了获取文字高度,和设置
  1. (defun c:tt (/ ss ent lis)
  2. ;多段线每段线中心标注本段线长
  3.     (setq ss (ssget ":P:E" '((0 . "LWPOLYLINE"))))
  4.     (setq h1 (getvar "TEXTSIZE"));获取文本高度
  5.     (setq h (getreal (strcat "\n请键入文字高度<" (rtos h1 2 2) ">:")))
  6.   (if (null h)
  7.     (setq h h1)
  8.   )
  9.   (setvar"textsize" h);设置文本高度
  10.     (setq ent (ssname ss 0))
  11.     (mapcar
  12.         '(lambda (x)
  13.            (setq pt (cadr x))
  14.            (setq an (last x))(print an)
  15.            (setq an (if (>= (* pi 1.5) an (* pi 0.5)) (- an pi) an))
  16.            (setq pt (polar pt (+ an (* pi 0.5)) h));偏离一个文字的高度距离
  17.            (entmake
  18.                (list '(0 . "TEXT") '(72 . 1) '(73 . 2)
  19.                    (cons 1 (car x))
  20.                    (cons 10 pt)
  21.                    (cons 11 pt)
  22.                    (cons 40 h)
  23.                    (cons 50 an)
  24.                )
  25.            )
  26.        )
  27.         (mapcar
  28.             '(lambda (x)
  29.                (list
  30.                    (rtos (distance (car x) (cadr x)) 2 2)
  31.                    (mapcar '* '(0.5 0.5) (mapcar '+ (car x) (cadr x)))
  32.                    (- (rem (+ (angle (car x) (cadr x)) (* 0.25 pi)) pi) (* 0.25 pi))
  33.                )
  34.            )
  35.             (if (vlax-curve-isClosed ent)
  36.                 (mapcar 'list
  37.                     (setq lis (mapcar 'cdr (vl-remove-if-not '(lambda (x)(= 10 (car x)))(entget ent))))
  38.                     (append (cdr lis) (list (car lis)))
  39.                 )
  40.                 (reverse
  41.                     (cdr
  42.                         (reverse
  43.                             (mapcar 'list
  44.                                 (setq lis (mapcar 'cdr (vl-remove-if-not '(lambda (x)(= 10 (car x)))(entget ent))))
  45.                                 (append (cdr lis) (list (car lis)))
  46.                             )
  47.                         )
  48.                     )
  49.                 )
  50.             )
  51.         )
  52.     )
  53.     (princ)
  54. )

本帖子中包含更多资源

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

x

点评

弧线段结果是错的!  发表于 2024-2-1 13:57
发表于 2024-2-1 10:33:01 | 显示全部楼层
好牛逼的插件
发表于 2024-2-2 10:13:10 | 显示全部楼层
vitalgg 发表于 2024-1-30 12:25
源码:
https://gitee.com/atlisp/packages/blob/main/at-curve/at-curve.lsp

請問各位大神安裝後指令是什麼 ?
謝謝
发表于 2024-2-2 10:22:27 | 显示全部楼层
359321852 发表于 2024-1-31 08:38
谢谢你的帮助,
在你的基础上也做了一些修改,增加了获取文字高度,和设置

弧長好是不正確
发表于 2024-2-2 10:46:39 | 显示全部楼层
azaz042 发表于 2024-2-2 10:13
請問各位大神安裝後指令是什麼 ?
謝謝

没有给具体的指令。
安装核心管理后,可以直接运行函数 (at-curve:per-length) 或者从菜单或命令面板点击。
也可以自己设置指令
(defun c:你想要的指令 ()(at-curve:per-length))
发表于 2024-2-2 10:56:47 | 显示全部楼层
vitalgg 发表于 2024-2-2 10:46
没有给具体的指令。
安装核心管理后,可以直接运行函数 (at-curve:per-length) 或者从菜单或命令面板点 ...

发表于 2024-2-12 13:30:43 | 显示全部楼层
厉害厉害,学习中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 22:50 , Processed in 0.166510 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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