明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 718|回复: 14

[讨论] VBA开头白度提问,然后AI写程序,根据结果改写lisp

[复制链接]
发表于 2024-7-23 14:15:35 | 显示全部楼层 |阅读模式
本帖最后由 自贡黄明儒 于 2024-7-26 13:36 编辑


自动新建模块module,并写入代码:
搜了大半天,也问了好多人。最后还是白度的AI帮我写的。为记念这一重要时刻,贴出来。。。
VB如下
  1. Sub CreateModule()
  2.     Dim vbProj As Object
  3.     Dim vbComp As Object
  4.        ' 设置对当前工程的引用
  5.     Set vbProj = Application.VBE.ActiveVBProject
  6.    
  7.     ' 添加一个新的module
  8.     Set vbComp = vbProj.VBComponents.Add(1)
  9.    
  10.     ' 设置module的名称
  11.     'vbComp.Name = "MyNewModule"
  12.    
  13.     ' 现在可以在module中添加代码了
  14.     vbComp.CodeModule.AddFromString "Sub MySub()" & vbCrLf & _
  15.                                     "    MsgBox ""Hello, World!""" & vbCrLf & _
  16.                                     "End Sub"
  17.    
  18.     ' 可选:激活module编辑器
  19.     Application.VBE.ActiveCodePane.CodeModule.InsertLines 1, "'"
  20.     Application.VBE.ActiveCodePane.CodeModule.InsertLines 2, "'" & vbTab & "Created by CreateModule macro"
  21.     Application.VBE.ActiveCodePane.CodeModule.InsertLines 3, "'"
  22.     Application.VBE.ActiveCodePane.CodeModule.InsertLines 4, ""
  23.    
  24.     ' 提示用户module已创建
  25.     MsgBox "Module created successfully!"
  26. End Sub


在lisp如下
  1. (defun c:Example_VBE (/ ACTIVEVBPROJECT CODEMODULE MODULE NEWROUTINE VBCOMPONENTS VBE)
  2.   (setq VBE (vla-get-VBE (vlax-get-acad-object))) ;ActiveVBProject
  3.   (setq ActiveVBProject (vlax-get-property VBE 'ActiveVBProject))
  4.   
  5.   (setq VBComponents (vlax-get-property ActiveVBProject 'VBComponents))
  6.   (setq module (vlax-invoke VBComponents 'Add 1))  
  7.   (setq  newRoutine
  8.    (strcat "Sub Dynamic_Procedure()"
  9.      "\n    MsgBox \"New subroutine1.\""
  10.      "\nEnd Sub"
  11.    )
  12.   )
  13.   (setq CodeModule (vlax-get-property module 'CodeModule))
  14.   (vlax-invoke CodeModule 'AddFromString newRoutine)
  15. )

评分

参与人数 1明经币 +1 收起 理由
caaooo + 1 很给力!

查看全部评分

"觉得好,就打赏"
    共1人打赏
发表于 2024-7-23 16:31:45 | 显示全部楼层
自贡黄明儒 发表于 2024-7-23 16:12
前半句“lisp的终点是调用VB”,表示赞同。后半句,就不知道你是什么意思了。

写lisp的人没有注意到,很多时候写了两个for去比较数据.
然后这个for在lisp上面还不能中断.
和尚777这里就用了dictionary词典来减少时间复杂度
http://bbs.mjtd.com/thread-186202-1-1.html
词典的原理就是数组长度取模,这样就是O(1)速度.
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-7-23 16:12:37 | 显示全部楼层
你有种再说一遍 发表于 2024-7-23 14:31
lisp的终点是调用VB,如果连词典概念都没有,那么连时间复杂度都不晓得.嘻嘻

前半句“lisp的终点是调用VB”,表示赞同。后半句,就不知道你是什么意思了。
发表于 2024-7-23 14:31:26 | 显示全部楼层
lisp的终点是调用VB,如果连词典概念都没有,那么连时间复杂度都不晓得.嘻嘻
发表于 2024-7-23 14:32:28 | 显示全部楼层
以后我们都是项目经理,代码可以不会写,但一定要懂上层架构和基本原理。
发表于 2024-7-23 14:39:12 | 显示全部楼层
虽然看不懂,但是我很想学!
发表于 2024-7-23 14:49:06 来自手机 | 显示全部楼层
干嘛的。看起来很牛逼的样子。
发表于 2024-7-23 15:18:38 | 显示全部楼层
恭喜黄工迈入人工智能时代!
发表于 2024-7-23 15:54:22 | 显示全部楼层
恭喜黄工迈入人工智能时代!
发表于 2024-7-23 15:56:21 | 显示全部楼层
AI这么厉害了么,但是最厉害的还是会使用AI的人
 楼主| 发表于 2024-7-23 16:09:44 | 显示全部楼层
tranque 发表于 2024-7-23 15:56
AI这么厉害了么,但是最厉害的还是会使用AI的人

网上搜不到,资料也找不到。百度搜,以VBA开头,就会自动写程序了,可能不完善,只能VBA开头。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-8 08:29 , Processed in 0.314119 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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