明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 668|回复: 14

真正的自动编号,不用单个点击

  [复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 baitan666 于 2025-2-18 16:58 编辑

最近遇到很多批量图形要编号,一个一个点击编号少数还行,多了就受不了,

所以编了这个自动编号,对付批量感觉也够了 快捷键:bh


修复了一些bug




本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
htlaser + 1 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
cqf1980 发表于 2025-2-18 11:13
类似钢筋编号,写在线段正中间

(defun cI (/ *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)
)
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
baitan666 发表于 2025-2-17 17:25
是对每条线段编号还是怎么样

类似钢筋编号,写在线段正中间
回复 支持 反对

使用道具 举报

发表于 前天 07:57 来自手机 | 显示全部楼层
点排序还需要细化,之前大神们写了一些函数,例如从左到右,左下角为起点,左上角为起点,容差等
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
能对线段编号就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
cqf1980 发表于 2025-2-17 17:19
能对线段编号就好了

是对每条线段编号还是怎么样
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
关键是编号的规则。各行各业都有各种不同的需求,只能自己去写出这些规则。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层

能对线段编号就好了
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
先收藏,但愿他日能用到
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
这个用来计数太阳能案场很好用!收藏!
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
谢谢分享,看起来不错
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
加密的那个版本有错误,用不了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-21 03:33 , Processed in 0.167093 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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