lengxiaxi 发表于 2025-2-12 10:35:13

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

highflybird 发表于 2025-2-17 10:00:47

llsheng_73 发表于 2025-2-17 08:46
好象我看到的都会把大括号弄丢,院长这个是唯一能正确保留的?

以下代码可以正确替换。


如果要保留为MTEXT,请参见我注释的部分。

自贡黄明儒 发表于 2025-2-12 11:02:58

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
)

lingduwx 发表于 2025-2-12 10:55:19

自贡黄明儒 发表于 2025-2-12 10:45
楼主是手机上的deepseek,还是台式机上的deepseek?
另外让它写一个Mtext去文字格式的代码,看看怎么样?

直接在deepseek网页上提要求写代码就可以了,不过经常出现服务器忙,多等一段时间去刷新一下

自贡黄明儒 发表于 2025-2-12 10:45:45

楼主是手机上的deepseek,还是台式机上的deepseek?
另外让它写一个Mtext去文字格式的代码,看看怎么样?

andcad 发表于 2025-2-12 11:01:21

人工智能AI https://chat.scnet.cn/ 这个可以网页上用

llsheng_73 发表于 2025-2-12 11:07:30

自贡黄明儒 发表于 2025-2-12 11:02
确实可以哈
(defun c:RemoveMTextFormatting (/ ent entData)
;; 选择MTEXT实体


它这个和正则去除格式的结果是不一样的吧,目测这个会出现误判

dlfjdy 发表于 2025-2-12 14:44:27

试用了一下,deepseek确实比chatGPT聪明得多

qazxswk 发表于 2025-2-12 18:01:51

lingduwx 发表于 2025-2-12 10:55
直接在deepseek网页上提要求写代码就可以了,不过经常出现服务器忙,多等一段时间去刷新一下

晚上时间,一般不容易出现服务器忙。

xyp1964 发表于 2025-2-12 20:45:04

ep-m2t(多行变单)


shujh1989 发表于 2025-2-13 09:03:42

qazxswk 发表于 2025-2-12 18:01
晚上时间,一般不容易出现服务器忙。

纳米ai搜索,可以选择deepseek模型,不会出现服务器忙。
页: [1] 2
查看完整版本: deepseek源码,批量截取字段