明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3306|回复: 27

[经验] ai写lisp程序的新进展,几乎可以直接用了。

  [复制链接]
发表于 2024-5-23 15:05:49 | 显示全部楼层 |阅读模式
本帖最后由 陨落 于 2024-5-23 15:08 编辑

先看效果:

User:
帮我用autolisp写一个函数,提示用户选择TEXT图元,然后在被选中的TEXT前增加一个前缀“mypref"

回复:
(defun c:add-text-prefix ()
  "在用户选择的文本前添加前缀 'mypref'"
  (vl-load-com) ; 加载 ActiveX 支持函数

  (setq textObj (car (entsel "\n请选择一个文本对象:"))) ; 选择一个文本对象

  (if (not textObj)
    (princ "\n没有选择任何文本对象!")
    (progn
      (setq textData (entget textObj))
      (setq oldText (cdr (assoc 1 textData))) ; 获取当前文本内容
      (setq newText (strcat "mypref" oldText)) ; 添加前缀
      (setq textData (subst (cons 1 newText) (assoc 1 textData) textData)) ; 更新文本内容
      (entmod textData) ; 修改文本对象
      (princ) ; 清空命令行
    )
  )
)

(c:add-text-prefix) ; 调用函数添加前缀

User:帮我用autolisp写一个函数,提示用户选择CIRCLE图元,然后将选中的图元向右复制3次,每次复制的时候圆的直径增加100,复制后的圆与上一个圆刚好相切。
回复:
(defun c:copy-circle-with-diameter-increase ()
  "选择一个圆,然后将它向右复制 3 次,每次复制时直径增加 100,复制后的圆与上一个圆相切。"
  (vl-load-com) ; 加载 ActiveX 支持函数


  (setq circleObj (car (entsel "\n请选择一个圆:"))) ; 选择一个圆


  (if (not circleObj)
    (princ "\n没有选择任何圆!")
    (progn
      (setq circleData (entget circleObj))
      (setq centerPoint (cdr (assoc 10 circleData))) ; 获取圆心点
      (setq diameter (cdr (assoc 40 circleData))) ; 获取圆的直径
      (setq currentX (car centerPoint)) ; 获取圆心点的 X 坐标


      (repeat 3
        (setq newDiameter (+ diameter 100)) ; 新圆的直径
        (setq newCenterPoint (list (+ currentX (/ newDiameter 2)) (cadr centerPoint))) ; 新圆心点
        (setq newCircle (vla-addcircle (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
                                      (vlax-3D-point newCenterPoint)
                                      (/ newDiameter 2))) ; 创建新圆
        (setq currentX (+ currentX newDiameter)) ; 更新圆心点的 X 坐标
      )


      (princ) ; 清空命令行
    )
  )
)


(c:copy-circle-with-diameter-increase) ; 调用函数执行复制

User:写一个autolisp函数,让用户选择直线(line)和多段线(lwpolyline),并返回所选线的总长度。
回复:(defun get-total-line-length ()
  "获取用户选择的直线和多段线的总长度"
  (vl-load-com) ; 加载 ActiveX 支持函数


  (setq ss (ssget "_X" '((0 . "LINE") (0 . "LWPOLYLINE")))) ; 选择所有直线和多段线-----此处存在错误
  (if (not ss)
    (princ "\n没有选择任何直线或多段线!")
    (progn
      (setq totalLength 0.0)
      (setq i 0)
      (while (< i (sslength ss))
        (setq ent (ssname ss i))
        (setq entType (cdr (assoc 0 (entget ent))))
        (if (equal entType "LINE")
          (setq totalLength (+ totalLength (distance (cdr (assoc 10 (entget ent))) (cdr (assoc 11 (entget ent))))))
          (if (equal entType "LWPOLYLINE")
            (progn
              (setq lwPolyObj (vlax-ename->vla-object ent))
              (setq totalLength (+ totalLength (vla-get-length lwPolyObj)))
            )
          )
        )
        (setq i (+ i 1))
      )
      (princ (strcat "\n选择的直线和多段线的总长度为: " (rtos totalLength 2 4)))
    )
  )
  (princ)
)


(get-total-line-length) ; 调用函数获取总长度


以上的代码都是由ai一次生成,未经过任何修改
第二第三个程序都存在一些小问题,但是基本都可以直接跑,或者只需要很少的改动
由于都只让ai回答了一次,功能上可能还有些欠缺
综上,可以看出,现在的ai基本可以办到写出来的lisp直接用,只有局部他可能还搞不懂,需要再教一下他




"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2024-5-23 17:35:32 | 显示全部楼层
sammy 发表于 2024-5-23 16:15
我在用claude3,感觉也不错,就是它偶尔会引用一些CAD不存在的函数,把错误反馈给它之后会修改。

claud3支持的上下文长度远不及gemini。我觉得google这个发展方向是正确的,支持超级长的上下文,你可以直接让他学会一个东西。。。gemeni1.5flash号称只支持100w token的上下文,实测我已经到了160w了,照样能跑出很好的结果
发表于 2024-5-23 22:18:21 | 显示全部楼层
陨落 发表于 2024-5-23 17:35
claud3支持的上下文长度远不及gemini。我觉得google这个发展方向是正确的,支持超级长的上下文,你可以直 ...

但是我现在还不知道通过什么方式能用到稳定的gemini
发表于 2024-5-23 16:37:29 | 显示全部楼层
没有对抗网络它永远不知道自己的代码会不会有问题,
应该是,生成-编译-报错-语法检查-函数检查-插入打印语句检查输出值-知识库搜索-网络搜索-生成错误段代码-又回到编译...
发表于 2024-5-23 15:14:09 | 显示全部楼层
确实会提高解题时间
发表于 2024-5-23 15:21:05 | 显示全部楼层
这是哪个ai产品,我用过百度ai,通义千问,豆包,都回答的驴唇不对马嘴
 楼主| 发表于 2024-5-23 15:25:51 | 显示全部楼层
aws 发表于 2024-5-23 15:21
这是哪个ai产品,我用过百度ai,通义千问,豆包,都回答的驴唇不对马嘴

gemini,支持超级长上下文的理解和记忆
发表于 2024-5-23 15:48:16 | 显示全部楼层
陨落 发表于 2024-5-23 15:25
gemini,支持超级长上下文的理解和记忆

请教如何喂的,我搞的效果不行
发表于 2024-5-23 16:15:53 | 显示全部楼层
我在用claude3,感觉也不错,就是它偶尔会引用一些CAD不存在的函数,把错误反馈给它之后会修改。
发表于 2024-5-23 16:16:29 | 显示全部楼层
陨落 发表于 2024-5-23 15:25
gemini,支持超级长上下文的理解和记忆

领导:
请给明友们普及一下如何用AI
大家也享受一下哈
感谢
发表于 2024-5-23 17:54:53 | 显示全部楼层
不懂就问?用的啥AI啊????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 13:33 , Processed in 0.179961 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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