明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1070|回复: 20

[源码] deepseek源码,批量截取字段

[复制链接]
发表于 2025-2-12 10:35:13 | 显示全部楼层 |阅读模式
  1. (defun c:jq (/ ss start end i ent text-content new-text)
  2.   "截取指定范围内的字符并替换原文本
  3. 步骤:
  4. 1. 选择文本(支持多选,支持 TEXT 和 MTEXT)
  5. 2. 输入起始字符数位
  6. 3. 输入结束字符数位
  7. 4. 将原文本替换为截取后的字段"
  8.   ;; 选择文本
  9.   (setq ss (ssget '((0 . "TEXT,MTEXT")))) ; 选择 TEXT 和 MTEXT
  10.   (if (not ss)
  11.     (princ "\n未选择任何文本。")
  12.     (progn
  13.       ;; 获取起始和结束位置
  14.       (setq start (getint "\n请输入起始字符数位: "))
  15.       (setq end (getint "\n请输入结束字符数位: "))
  16.       (if (and start end (<= start end))
  17.         (progn
  18.           ;; 遍历选择的文本
  19.           (setq i 0)
  20.           (repeat (sslength ss)
  21.             (setq ent (ssname ss i)) ; 获取当前实体
  22.             (setq text-content (get-text-content ent)) ; 获取文本内容
  23.             (setq new-text (extract-text text-content start end)) ; 截取文本
  24.             (update-text-content ent new-text) ; 更新文本内容
  25.             (setq i (1+ i)))
  26.           (princ "\n文本截取完成!"))
  27.         (princ "\n输入的起始或结束位置无效。"))))
  28.   (princ))

  29. (defun get-text-content (ent)
  30.   "获取实体的文本内容
  31. 参数:
  32. - ENT : 实体名称
  33. 返回:
  34. 文本内容(字符串)"
  35.   (cdr (assoc 1 (entget ent)))) ; 获取 TEXT 或 MTEXT 的内容

  36. (defun extract-text (text start end / len adj-start adj-end)
  37.   "截取指定范围内的字符
  38. 参数:
  39. - TEXT : 文本内容
  40. - START : 起始位置(1-based)
  41. - END : 结束位置(1-based)
  42. 返回:
  43. 截取的子字符串或空字符串(如果位置无效)"
  44.   (setq len (strlen text))
  45.   (setq adj-start (max 1 start)) ; 确保起始位置 >= 1
  46.   (setq adj-end (min len end))   ; 确保结束位置 <= 文本长度
  47.   (if (and (<= adj-start adj-end) (<= adj-end len))
  48.       (substr text adj-start (- adj-end adj-start -1))
  49.       "")) ; 如果位置无效,返回空字符串

  50. (defun update-text-content (ent new-text)
  51.   "更新实体的文本内容
  52. 参数:
  53. - ENT : 实体名称
  54. - NEW-TEXT : 新的文本内容"
  55.   (entmod (subst (cons 1 new-text) (assoc 1 (entget ent)) (entget ent)))
  56.   (entupd ent)) ; 更新实体显示

  57. ;;; 运行命令
  58. ;; 在 AutoCAD 命令行输入 JQ 启动程序
by DeepSeek R1,太强了

回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
llsheng_73 发表于 2025-2-17 08:46
好象我看到的都会把大括号弄丢,院长这个是唯一能正确保留的?

以下代码可以正确替换。


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

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
自贡黄明儒 + 1 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 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
)

点评

基本属于垃圾码  发表于 2025-2-12 20:28
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

发表于 2025-2-12 10:45:45 | 显示全部楼层
楼主是手机上的deepseek,还是台式机上的deepseek?
另外让它写一个Mtext去文字格式的代码,看看怎么样?
回复 支持 反对

使用道具 举报

发表于 2025-2-12 11:01:21 | 显示全部楼层
人工智能AI https://chat.scnet.cn/ 这个可以网页上用
回复 支持 反对

使用道具 举报

发表于 2025-2-12 11:07:30 | 显示全部楼层
自贡黄明儒 发表于 2025-2-12 11:02
确实可以哈
(defun c:RemoveMTextFormatting (/ ent entData)
  ;; 选择MTEXT实体

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

点评

不是误判,是根本就不对,\C \H \W等后面还有具体数据呢,只把起始标记去掉了,后面的数据直接变成文本内容了。  发表于 2025-2-12 16:35
回复 支持 反对

使用道具 举报

发表于 2025-2-12 14:44:27 | 显示全部楼层
试用了一下,deepseek确实比chatGPT聪明得多
回复 支持 反对

使用道具 举报

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

晚上时间,一般不容易出现服务器忙。
回复 支持 反对

使用道具 举报

发表于 2025-2-12 20:45:04 | 显示全部楼层
ep-m2t(多行变单)


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2025-2-13 09:03:42 | 显示全部楼层
qazxswk 发表于 2025-2-12 18:01
晚上时间,一般不容易出现服务器忙。

纳米ai搜索,可以选择deepseek模型,不会出现服务器忙。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-21 03:05 , Processed in 0.172095 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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