明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: aroom

TeaScript 编程(二次开发AutoCAD、Lisp写windows应用程序)

    [复制链接]
 楼主| 发表于 2012-6-16 23:11 | 显示全部楼层
mccad 发表于 2012-6-15 22:34
希望TeaScript 能有可视化对话框工具,针对ACAD看起来是使用了COM的编程手段,这对于AutoCAD的编程者来讲可 ...

TeaScript 可以用 .NET 来创建含各种控件的对话框,比 DCL 强很多。
同时 TeaScript 可以用 vlisp 宏来调用所有的 autoLisp 和 Visual Lisp 函数,函数的使用不会受到限制。
比如:

(setq a 123.45)  ;; TeaScript 的变量 a
(vlisp (setq a ,a)) ;; 将 a 值同步到 autoLisp 中的变量 a 中

(vlisp (arx)) ;; 获取 vl arx 函数的返回值

(vlisp (vlax-curve-getArea (vlax-ename->vla-object (car (entsel)))))  ;; 调用 vl 函数

(vlisp (vlax-curve-getParamAtDist (vlax-ename->vla-object (car (entsel))) 1.0)) ;; 调用 vl 函数
 楼主| 发表于 2012-6-21 00:39 | 显示全部楼层
本帖最后由 aroom 于 2012-6-21 00:42 编辑

使用TVMCOM来扩展autoLisp和visual Lisp函数:




本帖子中包含更多资源

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

x
 楼主| 发表于 2012-7-3 14:43 | 显示全部楼层
本帖最后由 aroom 于 2012-7-3 14:44 编辑

TeaScript 用dotnet 写GUI



最短代码的窗体:


本帖子中包含更多资源

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

x
 楼主| 发表于 2012-7-7 19:58 | 显示全部楼层
本帖最后由 aroom 于 2012-7-7 19:59 编辑

TeaScript.NET 写GUI界面

DCL 既难懂,又难用,况且很多控件DCL 没有定义。
这里介绍一下,TeaScript.NET 写GUI界面,用于AutoCAD内使用:

使用DCL没有的控件:menustrip,tabpage,image ...
非常非常Lispy

1、先把 .NET 命名空间导入进来:
(using System)
(using System.Drawing)
(using System.Windows.Forms)

2、接下来,可以创建Form实例,赋予你要设置的属性:

(setq form1 (new Form)
          form1.Text "TeaScript 编写的 .NET 窗口"   
          form1.Width 700 form1.Height 600)

3、 接下来,可以创建Control实例,赋予你要设置的属性

(setq tabctrl (new TabControl)
     tabctrl.Location (new Point 350 50)
      tabctrl.Size (new Size 300 300))     
(setq tabpage1 (new TabPage "Page1")
      tabpage2 (new TabPage "Page2"))
(tabctrl.Controls.Add tabpage1)
(tabctrl.Controls.Add tabpage2)
(form1.Controls.Add tabctrl)
......
(setq btn (new Button)
btn.Text "在AutoCAD中画一个圆"     
btn.Location (new Point 350 400)
      btn.Size (new Size 150 50))
(form1.Controls.Add btn)
......
4、接下来,为Control控件增加事件回调函数,注意dnfun, 不是defun,名称为:obj_event 这样的格式

(dnfun btn_Click (Sender eventArgs / c)
(setq acad (GetObject "autocad.Application"))
           (if (nil? rad) (setq rad 500.)(++ rad 100.0))
(setq doc acad.activedocument dwg acad.activedocument.modelspace)
(setq c (dwg.addCircle '(0. 0. 0.) rad))
(c.update)
)
...

5、最后将 form 显示出来,这种方式显示的是个模式对话框:

(form1.ShowDialog)


你也可以用 (form1.Show) 来显示个非模式对话框

6、在AutoCAD命令行加载:
command:
   (tvm "(load \"E:/TeaScript/IDE/release/example/dotnet.lsp\")")



本帖子中包含更多资源

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

x
发表于 2012-7-9 06:44 | 显示全部楼层
看上去不错。留名,mark
发表于 2012-7-9 17:25 | 显示全部楼层
学习中,请问相关的编程书如何购买。
 楼主| 发表于 2012-7-9 18:07 | 显示全部楼层
筑路人 发表于 2012-7-9 17:25
学习中,请问相关的编程书如何购买。

为满足大家对 TeaScript 的兴趣和学习热情,备有小量的培训书籍
可以加QQ群:7326594 与群主联系购买
 楼主| 发表于 2012-7-15 18:21 | 显示全部楼层
本帖最后由 aroom 于 2012-7-15 18:23 编辑

再将界面插入一些其他的控件,是不是比 DCL OpenDCL 更吸引眼球哦!




本帖子中包含更多资源

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

x
 楼主| 发表于 2012-7-17 18:04 | 显示全部楼层
本帖最后由 aroom 于 2012-7-17 18:05 编辑

用 TeaScript 做 DoubleCAD 应用的二次开发:

(setq tc (GetOrCreateObject "TurboCAD.Application"))
(setq tc.Visible 1)
(tc.Drawings.Add)
(setq td tc.ActiveDrawing
      tv td.ActiveView
      tg td.graphics)
(tg.AddLineSingle 0. 0. 0. 100. 0. 0.)
(tg.AddCircleCenterAndPoint 0. 0. 0. 100. 0. 0.)
(tv.ZoomToExtents)


本帖子中包含更多资源

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

x
发表于 2012-7-25 17:43 | 显示全部楼层
太好了,能支持非模式对话框吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 18:00 , Processed in 0.155583 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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