峰峰兒 发表于 2012-5-30 19:16:16

fdb2007 发表于 2012-5-30 21:32:17

学习了,谢谢楼主分享

longer1000 发表于 2012-5-31 08:23:58

谢谢分享,不错的!

sfzyr 发表于 2012-5-31 20:36:25

楼主举个cad环境下用的例子看看,比如一个lisp程序,然后用TeaScript 改写,然后关键是,改写后的程序如何用啊???
lisp,我们只要加载,然后命令就有了,CAD下就可以用了。这个语言写的如何加载,如何用??

YAOSHIWEI 发表于 2012-5-31 21:34:00

zark 发表于 2012-5-31 22:00:49

又多了一件开发CAD的语言,还是专心学习LISP吧

aroom 发表于 2012-6-1 03:05:38

本帖最后由 aroom 于 2012-6-5 00:37 编辑

TeaScript QQ群 群友问题

★~★(741378784) 21:27:52
机器人靠指令行走,如 l100r50r10 其中 l 是向左转,r 是向右转,中间的数字是行走的距离
现在要求输入 n 条指令,并求出每条指令移动后的位置与起点位置的距离。结果保留两位小数。
例:
输入
l100
l100r50r10
l5l5l5l5
输出
100.0
102.96
0.0
★~★(741378784) 21:27:58
求思路


TeaScript 编程 (Lisp 语法版)

(defun getdist( / instr x y dir lst v) ;; 定义getdist函数   / 局部变量   
    (while (setq instr (readLine)) ;; 循环从键盘取得输入数值
         (if (== "" instr)(break)) ;; 如果输入是个空行,结束后续计算,退出
         (setq x 0 y 0 dir 0) ;; 初始化坐标值, 假定机器人初始面向x轴      
         (setq lst (findAll /\d+/ instr)) ;; 从输入行中找出l或r开头的数值,放入lst列表中 (字母忽略大小写)
         (println lst) ;; 可以忽略,辅助显示lst列表结果
         (if lst
               (mapcar (fn (e)
                               (setq v (int (cdr e))) ;; 抛弃开头字母,转为数值
                               (if (startsWith e "L" 1) ;; 判别方向(字母忽略大小写)
                                 (progn
                                     (cond
                                        ((== (abs (% dir 4)) 0)(++ y v))
                                        ((== (abs (% dir 4)) 1)(-- x v))
                                        ((== (abs (% dir 4)) 2)(-- y v))
                                        (true (++ x v)))
                                    (++ dir))                              
                                 (progn
                                     (cond
                                        ((== (abs (% dir 4)) 0)(-- y v))
                                        ((== (abs (% dir 4)) 1)(++ x v))
                                        ((== (abs (% dir 4)) 2)(++ y v))
                                        (true (-- x v)))
                                    (-- dir))
                              ))   
                   lst);; 对lst列表中的每个元素(字符串),进行lambda分析
         )
         (println "ordinate, x: " x ", y: " y) ;; 可以忽略,辅助显示x y 坐标
         (println "distance: " (round (sqrt (+ (* x x)(* y y))) -2)) ;; 最后输出结果 dist = x*x + y*y 的平方根            
    )   
)
(getdist) ;; 调用函数

;; 启动TeaScript.exe(console模式), 将上面代码复制,粘贴到控制台窗口中执行








TeaScript 编程 (JavaScript 语法版)

function getdist(){// 定义getdist函数
    while (instr = readLine()){ // 循环从键盘取得输入数值
         if (instr == "") break; // 如果输入是个空行,结束后续计算,退出
         var x = 0, y = 0, dir = 0, lst; // 初始化坐标值, 假定机器人初始面向x轴      
         lst = findAll(/\d+/, instr); // 从输入行中找出l或r开头的数值,放入lst列表中 (字母忽略大小写)
         println(lst); // 可以忽略,辅助显示lst列表结果
         if (not null?(lst)){
               mapcar(function (e){
                               var v = int(cdr(e));// 抛弃开头字母,转为数值
                               if (startsWith(e, "L", 1)){ // 判别方向(字母忽略大小写)
                                    if(abs(dir%4) == 0) y += v;
                                    else if (abs(dir%4) == 1) x -= v;
                                    else if (abs(dir%4) == 2) y -= v;
                                    else x += v;
                                    dir++;                              
                               } else {
                                    if(abs(dir%4) == 0) y -= v;
                                    else if (abs(dir%4) == 1) x += v;
                                    else if (abs(dir%4) == 2) y += v;
                                    else x -= v;
                                    dir--;
                              }   
                   }, lst);// 对lst列表中的每个元素(字符串),进行lambda分析
         }
         println("ordinate, x: ", x, ", y: ", y); // 可以忽略,辅助显示x y 坐标
         println("distance: ", round(sqrt(x*x + y*y),-2)); // 最后输出结果 dist = x*x + y*y 的平方根            
    }   
}
getdist() // 调用函数

// 启动TeaScript.exe(console模式), 将上面代码复制,粘贴到控制台窗口中执行

YAOSHIWEI 发表于 2012-6-1 08:19:10

flowerson 发表于 2012-6-1 14:34:11

期待更详细的教程!

liuyj 发表于 2012-6-3 10:30:24

楼主举个cad环境下用的例子看看,比如一个lisp程序,然后用TeaScript 改写,然后关键是,改写后的程序如何用啊???
lisp,我们只要加载,然后命令就有了,CAD下就可以用了。这个语言写的如何加载,如何用??


深有同感
页: 1 2 3 4 [5] 6 7 8 9 10 11
查看完整版本: TeaScript 编程(二次开发AutoCAD、Lisp写windows应用程序)