a405692168 发表于 2025-2-13 17:02:01

deepseek源码,批量标注

本帖最后由 a405692168 于 2025-2-13 17:23 编辑

用 deepseek源码写了个批量标注插件,主要想代替CAD自带命令"QDIM",能加载,但运行不出结果,大佬们帮忙看下修正下。。。
(defun c:PLBZ (/ *error* osmode cmdecho pt1 pt2 ss filtered-entities dimlayer)
;; 错误处理函数
(defun *error* (msg)
    (if osmode (setvar "osmode" osmode)) ;; 还原捕捉设置
    (if cmdecho (setvar "cmdecho" cmdecho)) ;; 还原命令回显
    (princ "\n程序终止")
)

;; 保存当前设置
(setq osmode (getvar "osmode")
      cmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0)

;; 检查或创建 "dim" 图层
(setq dimlayer "dim")
(if (not (tblsearch "layer" dimlayer))
    (command "._layer" "_m" dimlayer "")
)

;; 主程序
(princ "\n拉线批量标注插件 - 命令: PLBZ")
(princ "\n指定标注起始点和方向点,支持水平和垂直方向标注。")

;; 获取标注起始点
(setq pt1 (getpoint "\n指定标注起始点: "))
(if (not pt1)
    (progn
      (princ "\n未指定起始点,程序退出。")
      (exit)
    )
)

;; 获取标注方向点
(setq pt2 (getpoint pt1 "\n指定标注方向点: "))
(if (not pt2)
    (progn
      (princ "\n未指定方向点,程序退出。")
      (exit)
    )
)

;; 过滤实体
(setq filtered-entities (filter-entities pt1 pt2))
(if (not filtered-entities)
    (progn
      (princ "\n未找到符合条件的实体,程序退出。")
      (exit)
    )
)

;; 创建标注
(create-dimensions filtered-entities pt1 pt2 dimlayer)

;; 尺寸文字避让
(text-avoidance)

;; 还原设置
(setvar "osmode" osmode)
(setvar "cmdecho" cmdecho)
(princ "\n标注完成。")
(prin1)
)

;; 过滤实体函数
(defun filter-entities (pt1 pt2 / ss filtered)
(setq ss (ssget "F" (list pt1 pt2)
               '((-4 . "<NOT")
               (-4 . "<OR")
                   (0 . "TEXT,DIMENSION,INSERT,MTEXT,HATCH") ;; 过滤实体类型
                   (8 . "五金,点划线") ;; 过滤图层
               (-4 . "OR>")
               (-4 . "NOT>"))))
(if ss
    (progn
      (setq filtered (vl-remove-if-not
                     '(lambda (x)
                        (and (not (member (cdr (assoc 0 (entget x))) '("TEXT" "DIMENSION" "INSERT" "MTEXT" "HATCH")))
                               (not (member (cdr (assoc 8 (entget x))) '("五金" "点划线")))))
                     (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
      filtered)
    nil)
)

;; 创建标注函数
(defun create-dimensions (entities pt1 pt2 dimlayer / ang pt)
(setq ang (angle pt1 pt2))
(foreach ent entities
    (setq pt (cdr (assoc 10 (entget ent))))
    (if (or (equal ang 0.0 0.01) (equal ang pi 0.01)) ;; 水平方向
      (entmake
      (list
          '(0 . "DIMENSION")
          '(100 . "AcDbEntity")
          '(100 . "AcDbDimension")
          (cons 8 dimlayer) ;; 设置标注图层
          (cons 10 pt)
          '(70 . 32) ;; 水平标注
          '(1 . "") ;; 尺寸文字
          '(100 . "AcDbAlignedDimension")
          (cons 13 pt)
          (cons 14 (polar pt ang 10.0)) ;; 标注长度
      )
      )
    (if (or (equal ang (/ pi 2) 0.01) (equal ang (* pi 1.5) 0.01)) ;; 垂直方向
      (entmake
      (list
          '(0 . "DIMENSION")
          '(100 . "AcDbEntity")
          '(100 . "AcDbDimension")
          (cons 8 dimlayer) ;; 设置标注图层
          (cons 10 pt)
          '(70 . 33) ;; 垂直标注
          '(1 . "") ;; 尺寸文字
          '(100 . "AcDbAlignedDimension")
          (cons 13 pt)
          (cons 14 (polar pt ang 10.0)) ;; 标注长度
      )
      )
    )
)
))

;; 尺寸文字避让函数
(defun text-avoidance (/ ss i ent data pt1 pt2)
(setq ss (ssget "_X" '((0 . "DIMENSION"))))
(if ss
    (progn
      (setq i 0)
      (repeat (sslength ss)
      (setq ent (ssname ss i)
            data (entget ent)
            pt1 (cdr (assoc 13 data))
            pt2 (cdr (assoc 14 data)))
      ;; 调整文字位置
      (entmod (subst (cons 11 (polar (mapcar '* (mapcar '+ pt1 pt2) '(0.5 0.5 0.5)) (assoc 11 data) data))
      (setq i (1+ i))
      )
    )
)
)))

qazxswk 发表于 2025-2-15 15:46:08


想要这样的效果吗?


xyp1964 发表于 2025-2-17 11:21:05




liuhe 发表于 2025-2-14 08:32:36

zmzk 发表于 2025-2-13 18:28
好奇,怎么看出 是用ai 写的代码啊?看来ai 与人抢饭碗的时代来了

用 deepseek源码写了个批量标注插件,主要想代替CAD自带命令"QDIM",能加载,但运行不出结果,大佬们帮忙看下修正下。。

liuhe 发表于 2025-2-13 17:22:57

又来这种用ai写代码,靠别人改代码的帖子。

zmzk 发表于 2025-2-13 18:28:41

liuhe 发表于 2025-2-13 17:22
又来这种用ai写代码,靠别人改代码的帖子。

好奇,怎么看出 是用ai 写的代码啊?看来ai 与人抢饭碗的时代来了

gaolei_gaolei 发表于 2025-2-13 19:08:48

多问几次deepseek让他改,他会改好的,我让他写过,多改几次就能用的,有热心的大哥能帮就帮,不想帮的直接略过,没必要出言讽刺,:D-

kozmosovia 发表于 2025-2-13 19:54:12

白嫖DS和白嫖论坛高手相比,还是白嫖DS更靠得住,起码服务态度好。

a405692168 发表于 2025-2-14 09:08:50

主要最近deepseek火,所以试了一下,但AI写出来的还是不行,AI取代人力还早。。。。

GEGEYANG88 发表于 2025-2-14 21:20:06

AI没有想象力,这是最本质的区别,人有!

fsafaffa 发表于 2025-2-14 21:39:30

deepseek写的,就找deepseek改

linzaijie 发表于 2025-2-15 08:21:45

其它别说,,,人家这个AI写出来的程序有条有理,,,分开一个个小函数...看得很清楚....论谈里很多大神与的lisp程序像屎一个...又臭又长,,,功能像是能正常用.....
页: [1] 2
查看完整版本: deepseek源码,批量标注