我暂时认为1楼和5楼是同一位,但我不能确认 我对前面的争论不发表意见,对于楼主所说的"代码自动生成"(上面的代码(包括注释)完全由我的开发工具全自动生成)我是不会的,我感觉是脑袋可以批量生产了,若真能如此,技术前面加任何定语都不为过. 我比较感兴趣的是楼主所说的Lisp实现多线程,我去看了一下(没有测试,我应当测试不了),下面代码(来自nonsmall.ys168.com)应该是楼主实现多线程的关键代码,但我看见主线程一直停留在一个while循环里面,若是这样,当谈不上什么多线程(我的理解,没有测试的理解). (defun Form1_load( / dcl_id Dialog_Return key keys Dcl_File) (vl-load-com) (setq dcl_id (load_dialog (setq Dcl_File (Write_Dcl))));对话框加载 (vl-file-delete Dcl_File);加载后删除DCL文件 (setq Dialog_Return 2) (while (> Dialog_Return 1) ;循环控制对话框是否结束 (new_dialog "Form1" dcl_id);建立窗体 ;-->-->-对话框初始化->-->-- (setq keys '("test1" "test2" "Command1" "accept"));列表全部控件名称 (foreach key keys;全部控件的初始化 (if (eval (read (strcat key "_bak"))) (set_tile key (eval (read (strcat key "_bak")))));控件内容 (action_tile key "(Action_Form1_Keys $key $value)");点击动作 ) ;--<--<-对话框初始化完成-<--<-- (setq Dialog_Return (start_dialog));开启对话框(用户可见) ) (unload_dialog dcl_id);退出时卸载对话框 (princ);防止函数回显 ) 另外楼主上面有贴出代码,楼主贴出来招商引资的,当属楼主精品,精品当不怕别人说三道四,我想说三道四一下 1(If (Not (Tblsearch "layer" "图层2"))(Command ".Layer" "n" "图层2" ""));如果没有图层 "图层2" 则建立 2(Command ".layer" "C" 7 "图层2" "");_修改图层 "图层2" 颜色为 7 号色 3(Command ".layer" "L" "CONTINUOUS" "图层2" "");_修改图层 "图层2" 线型为 "CONTINUOUS" 说三道四:2和3句代码当可以在1句里面一起实现 4(Setvar "clayer" "图层2");_修改图层为 "图层2" 层 5(Setvar "cecolor" "256");_修改颜色为 256 号色 6(Setvar "celtype" "BYLAYER");_修改线型为 "BYLAYER" 说三道四:4句,若当前层已经是"图层2",何必再设置一次?5,6句同理 7(Setq pt56 pt0);将变量pt0的值赋给pt56 8(Setq pt57 pt1);将变量pt1的值赋给pt57 说三道四:出现在精品代码的行列里面,实在看不出这两句代码有什么用 9(Setq angle25 (* pi 0.5));设置角度angle25 10(Setq dist25 (* dist2 0.2));把长度变量dist2的0.2倍值赋给dist25 11(Setq pt58 (Polar pt1 angle25 dist25));在变量pt1点上进行偏移后赋给pt58 12(Command ".dimlinear" pt56 pt57 pt58);绘制一条线型标注,标注起点为pt56标注终点为pt57拉伸点为pt58 说三道四:假如pt56 pt57 pt58附近有别的点,而恰好系统的捕捉功能是打开的,结果可能不是预期的那样 我不认为上面的代码是楼主自己写的,若自动生成的是这样子,何必呢?大炼钢贴(铁)? 再:本人不对使用Command发表意见,本人是希望能不用就不用Command,但在Auto Lisp里面Command不失为一个简便的方法 最后:废话多多,有怪莫怪! |