print1985 发表于 2021-1-19 13:19:31

lisp+c#混合编程之--阿甘计算器 2021.11.22更新

本帖最后由 print1985 于 2022-4-27 18:10 编辑

http://bbs.xdcad.net/data/attachment/forum/202101/15/205711gbocg8yy3aaddtaa.gif

http://bbs.xdcad.net/data/attachment/forum/202101/15/205734lbr9bh1sysyo4r1t.png.thumb.jpg
放到CAD安装目录\Support\阿甘计算器

http://bbs.xdcad.net/data/attachment/forum/202102/24/134251vvfynirvi51jrr8a.png.thumb.jpg
快捷键

http://bbs.xdcad.net/data/attachment/forum/202102/24/132146ioqtyeqvqy3rrsay.gif
2021.2.24更新

弄了个lisp+c#混合编程的计算器给大家玩玩
lisp负责运算,c#提供界面(和DCL对话框比较,最大的好处就是可以按回车键直接计算,不用点按钮了)
无边框非模态对话框,界面小巧,可以非常方便的放到命令栏,不碍眼,也可以关闭
计算结果自动复制到剪贴板,历史记录自动保存,可手动输入计算,也可选择文字自动计算

使用说明:
1、压缩包内文件放到:CAD安装目录\Support\阿甘计算器 (DLL文件和历史记录文件位置可在lisp里面修改,不会lisp的就不要改了,以免出错)
2、加载lsp文件(加载lsp后dll文件会自动加载)
3、启动命令:ag。其余计算快捷键见lsp文件内说明

使用技巧:
1、手动计算:在计算窗口内输入表达式,按回车键计算;
   结果以红字显示,如再输入数字结果自动清除,输入运算符号则结果保留(符合使用习惯);
   回车键可直接清除红色结果;
   Del键清除计算框全部内容。
2、双击历史记录可重新计算。
3、自动计算:按+、-、×、÷按钮,然后选择CAD文字自动计算。

本人lisp、c#都是入门级,计算器没有过多的功能(实在写不出来),只为方便使用而已。部分代码来自论坛,感谢各位大神
有什么问题欢迎反馈,PS:测试前请做好图纸备份,以免致命错误。

2021.11.22更新说明:
1、修正部分CAD版本小数点后精度问题;
2、鼠标移动到计算器对话框上时自动激活计算界面,移动到CAD绘图界面则自动接活绘图界面,省去了点击鼠标。

2021.1.20更新说明:
1、精简为2个版本(CAD2009~2012版)(CAD2013~2021版),理论上都支持,有问题请反馈;
2、启动快捷键ag或agg,ag可以修改,见lisp。

2021.2.24更新说明:
1、增加对CAD尺寸标注、属性字、CAD表格(只能点选,用的nentselp穿透)、图块内文字(只能点选,用的nentselp穿透)、天正文字等的支持
2、增加动态插入文字(A旋转)、增加插入算式快捷键(见lisp注释 命令DD、d2~d4)
3、DLL文件和历史记录文件位置可以在lisp里面修改(见lisp注释)
4、理论上支持CAD2007、2008(没测试),有问题请反馈。


对不起各位,因最近发现本人发的个别插件、源码被人挂网上贩卖,虽然没啥技术含量,但是也是花了时间做的。为了不被后面的二手贩子继续利用,忍心下架所有成品插件,敬请理解,确实需要本插件的朋友可以给我留言。



jun353835273 发表于 2021-1-20 08:24:55

本帖最后由 jun353835273 于 2021-1-20 08:26 编辑

非模态比较方便,建议楼主来个lisp调用c#界面对话框的简易教程,让更多的人研究c#哇,到时候就百花齐放,选择的语言更多。

edata 发表于 2021-1-20 13:13:50

txt文件最好是可以自己生成,txt路径相对dll路径即可。写固定了不好移植。
dll位置没必要固定,固定以后问题会多。
c#开发netAPI有一定的兼容性,使用2013开发的,基本上以上版本都可能直接使用,只要不使用高版本的API,问题不大。
基于可以兼容,开发几个版本就可以,所以路径不需要固定,可以通用。
至于加载问题,可以使用注册表的方式自动加载,或者第一次使用lsp选择一下也行,记住修改路径就行了。
高版本可能出现的安全路径可以修改和添加解决。
另外lisp函数定义可以考虑使用object类型作为返回值,返回任意object对象,字符串,列表,数值,布尔,都行。。

print1985 发表于 2021-2-28 17:54:00

szx025 发表于 2021-2-28 15:04
5.400+8.200=13为啥计算出来的数小数点后面没有了
另;需望增加对带数字的属性块的计算

我这边计算没问题 5.400+8.200=13.6
你是不是修改了小数保留位数?是拾取的什么对象里面的数字?

属性块内文字计算,你自己加一下
在这句:
((wcmatch ent "ATTDEF") (setq text (cdr (assoc 2 ed))));属性字(提取“标记” 组码2)
后增加:
((wcmatch ent "ATTRIB") (setq text (cdr (assoc 1 ed))));属性块内文字

雨的节奏 发表于 2021-1-19 15:56:38

:(
沙个发

czb203 发表于 2021-1-19 17:45:40

牛逼的

Bao_lai 发表于 2021-1-19 18:23:42

什么软件录屏,还可以有按键。

print1985 发表于 2021-1-19 18:44:35

Bao_lai 发表于 2021-1-19 18:23
什么软件录屏,还可以有按键。

ScreenToGif

bai2000 发表于 2021-1-19 21:20:18

还是没见到2016版的

print1985 发表于 2021-1-19 21:51:06

bai2000 发表于 2021-1-19 21:20
还是没见到2016版的
试试2014版
如果不行去晓东上传cad2016安装目录下的accoremgd.dll、AcCui.dll、acdbmgd.dll、Acmgd.dll文件给我

hf423 发表于 2021-1-19 22:53:07

谢谢分享,提2个小问题
1、必须ag启动么?和自己的ag冲突了,搞个长命令启动比较合适。
2、双击历史记录中的某条,还需要回车一下才能计算,或者回车一下后才能调用该算式,回车后历史记录中该算式又记录了一遍。

999999 发表于 2021-1-19 23:37:57

占个座
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: lisp+c#混合编程之--阿甘计算器 2021.11.22更新