deepseek源码,批量截取字段
(defun c:jq (/ ss start end i ent text-content new-text)"截取指定范围内的字符并替换原文本
步骤:
1. 选择文本(支持多选,支持 TEXT 和 MTEXT)
2. 输入起始字符数位
3. 输入结束字符数位
4. 将原文本替换为截取后的字段"
;; 选择文本
(setq ss (ssget '((0 . "TEXT,MTEXT")))) ; 选择 TEXT 和 MTEXT
(if (not ss)
(princ "\n未选择任何文本。")
(progn
;; 获取起始和结束位置
(setq start (getint "\n请输入起始字符数位: "))
(setq end (getint "\n请输入结束字符数位: "))
(if (and start end (<= start end))
(progn
;; 遍历选择的文本
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i)) ; 获取当前实体
(setq text-content (get-text-content ent)) ; 获取文本内容
(setq new-text (extract-text text-content start end)) ; 截取文本
(update-text-content ent new-text) ; 更新文本内容
(setq i (1+ i)))
(princ "\n文本截取完成!"))
(princ "\n输入的起始或结束位置无效。"))))
(princ))
(defun get-text-content (ent)
"获取实体的文本内容
参数:
- ENT : 实体名称
返回:
文本内容(字符串)"
(cdr (assoc 1 (entget ent)))) ; 获取 TEXT 或 MTEXT 的内容
(defun extract-text (text start end / len adj-start adj-end)
"截取指定范围内的字符
参数:
- TEXT : 文本内容
- START : 起始位置(1-based)
- END : 结束位置(1-based)
返回:
截取的子字符串或空字符串(如果位置无效)"
(setq len (strlen text))
(setq adj-start (max 1 start)) ; 确保起始位置 >= 1
(setq adj-end (min len end)) ; 确保结束位置 <= 文本长度
(if (and (<= adj-start adj-end) (<= adj-end len))
(substr text adj-start (- adj-end adj-start -1))
"")) ; 如果位置无效,返回空字符串
(defun update-text-content (ent new-text)
"更新实体的文本内容
参数:
- ENT : 实体名称
- NEW-TEXT : 新的文本内容"
(entmod (subst (cons 1 new-text) (assoc 1 (entget ent)) (entget ent)))
(entupd ent)) ; 更新实体显示
;;; 运行命令
;; 在 AutoCAD 命令行输入 JQ 启动程序 by DeepSeek R1,太强了:lol
llsheng_73 发表于 2025-2-17 08:46
好象我看到的都会把大括号弄丢,院长这个是唯一能正确保留的?
以下代码可以正确替换。
如果要保留为MTEXT,请参见我注释的部分。
lingduwx 发表于 2025-2-12 10:55
直接在deepseek网页上提要求写代码就可以了,不过经常出现服务器忙,多等一段时间去刷新一下
确实可以哈
(defun c:RemoveMTextFormatting (/ ent entData)
;; 选择MTEXT实体
(setq ent (car (entsel "\n选择MTEXT实体: ")))
;; 获取实体的DXF数据
(setq entData (entget ent))
;; 检查实体是否为MTEXT
(if (eq (cdr (assoc 0 entData)) "MTEXT")
(progn
;; 去除文字格式(例如,将格式代码删除)
(setq entData (subst (cons 1 (strip-formatting (cdr (assoc 1 entData)))) (assoc 1 entData) entData))
;; 更新实体
(entmod entData)
(entupd ent)
(princ "\nMTEXT文字格式已去除。")
)
(princ "\n选择的实体不是MTEXT。")
)
(princ)
)
;; 辅助函数:去除MTEXT中的格式代码
(defun strip-formatting (str / )
;; 这里可以使用正则表达式或其他方法来去除格式代码
;; 例如,去除所有{}内的内容
(vl-string-subst "" "\\" str)
(vl-string-subst "" "{" str)
(vl-string-subst "" "}" str)
(vl-string-subst "" "\\L" str)
(vl-string-subst "" "\\l" str)
(vl-string-subst "" "\\O" str)
(vl-string-subst "" "\\o" str)
(vl-string-subst "" "\\K" str)
(vl-string-subst "" "\\k" str)
(vl-string-subst "" "\\W" str)
(vl-string-subst "" "\\w" str)
(vl-string-subst "" "\\C" str)
(vl-string-subst "" "\\c" str)
(vl-string-subst "" "\\A" str)
(vl-string-subst "" "\\a" str)
(vl-string-subst "" "\\H" str)
(vl-string-subst "" "\\h" str)
(vl-string-subst "" "\\Q" str)
(vl-string-subst "" "\\q" str)
(vl-string-subst "" "\\T" str)
(vl-string-subst "" "\\t" str)
(vl-string-subst "" "\\P" str)
(vl-string-subst "" "\\p" str)
(vl-string-subst "" "\\F" str)
(vl-string-subst "" "\\f" str)
(vl-string-subst "" "\\S" str)
(vl-string-subst "" "\\s" str)
(vl-string-subst "" "\\U" str)
(vl-string-subst "" "\\u" str)
(vl-string-subst "" "\\~" str)
(vl-string-subst "" "\\" str)
str
) 自贡黄明儒 发表于 2025-2-12 10:45
楼主是手机上的deepseek,还是台式机上的deepseek?
另外让它写一个Mtext去文字格式的代码,看看怎么样?
直接在deepseek网页上提要求写代码就可以了,不过经常出现服务器忙,多等一段时间去刷新一下 楼主是手机上的deepseek,还是台式机上的deepseek?
另外让它写一个Mtext去文字格式的代码,看看怎么样? 人工智能AI https://chat.scnet.cn/ 这个可以网页上用 自贡黄明儒 发表于 2025-2-12 11:02
确实可以哈
(defun c:RemoveMTextFormatting (/ ent entData)
;; 选择MTEXT实体
它这个和正则去除格式的结果是不一样的吧,目测这个会出现误判 试用了一下,deepseek确实比chatGPT聪明得多 lingduwx 发表于 2025-2-12 10:55
直接在deepseek网页上提要求写代码就可以了,不过经常出现服务器忙,多等一段时间去刷新一下
晚上时间,一般不容易出现服务器忙。 ep-m2t(多行变单)
qazxswk 发表于 2025-2-12 18:01
晚上时间,一般不容易出现服务器忙。
纳米ai搜索,可以选择deepseek模型,不会出现服务器忙。
页:
[1]
2