浅予
发表于 2025-2-18 12:47:54
cqf1980 发表于 2025-2-18 11:13
类似钢筋编号,写在线段正中间
这个
能实现,哈哈哈哈
baitan666
发表于 2025-2-18 16:19:15
cqf1980 发表于 2025-2-18 11:13
类似钢筋编号,写在线段正中间
(defun c:LI (/ *error* ss i count prefix startnum pt midpt ang)
(vl-load-com)
;; 错误处理函数
(defun *error* (msg)
(if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
(princ (strcat "\n错误: " msg))
)
(princ)
)
;; 选择线段对象
(if (setq ss (ssget '((0 . "LINE"))))
(progn
;; 获取用户输入
(setq prefix (getstring T "\n输入前缀(直接回车跳过): "))
(setq startnum (getint "\n输入起始编号 <1>: "))
(if (not startnum) (setq startnum 1))
;; 初始化计数器
(setq count startnum)
;; 遍历选择集
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq obj (vlax-ename->vla-object ent))
;; 获取线段中点
(setq pt1 (vlax-get obj 'StartPoint))
(setq pt2 (vlax-get obj 'EndPoint))
(setq midpt (mapcar '(lambda (a b) (/ (+ a b) 2.0)) pt1 pt2))
;; 获取线段角度(用于文字旋转)
(setq ang (angle pt1 pt2))
;; 创建文字
(entmake
(list
'(0 . "TEXT")
(cons 10 midpt) ; 插入点
(cons 40 2.5) ; 文字高度
(cons 1 (strcat prefix (itoa count))) ; 文字内容
(cons 50 ang) ; 旋转角度
(cons 72 1) ; 水平对齐方式(中点)
(cons 11 midpt) ; 对齐点
(cons 7 (getvar "TEXTSTYLE")) ; 当前文字样式
)
)
(setq count (1+ count))
(setq i (1+ i))
)
)
(princ "\n未选择任何线段!")
)
(princ)
)
baitan666
发表于 2025-2-18 16:57:19
mpk023 发表于 2025-2-18 09:27
加密的那个版本有错误,用不了。
修复了,你重新下载试试
lijunfa12345
发表于 2025-2-18 21:03:10
谢谢分享,,,,,,,,,,,,
pxt2001
发表于 2025-2-19 07:57:09
点排序还需要细化,之前大神们写了一些函数,例如从左到右,左下角为起点,左上角为起点,容差等
蓝盾设计
发表于 2025-2-24 10:41:26
baitan666 发表于 2025-2-18 16:19
(defun cI (/ *error* ss i count prefix startnum pt midpt ang)
(vl-load-com)
能加功能归类编号吗?相同的长度归类成同一编号
好烦的网站
发表于 2025-2-26 11:13:17
看看,感谢分享{:1_1:}
scmice
发表于 2025-3-1 14:42:32
感谢分享,加密那个用不了。
tanxindong
发表于 2025-3-4 18:41:34
感谢分享,
gwar
发表于 6 天前
谢谢分享,看起来不错