明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 14751|回复: 93

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

    [复制链接]
发表于 2021-1-19 13:19:31 | 显示全部楼层 |阅读模式
本帖最后由 print1985 于 2022-4-27 18:10 编辑




放到CAD安装目录\Support\阿甘计算器


快捷键


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(没测试),有问题请反馈。


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



点评

新版计算器除以上功能外还支持命令行直接输入算式计算,需要的加群378664087自己下载,免费插件,就在群共享,不要再问在哪里了  发表于 2023-7-31 10:39

评分

参与人数 4明经币 +4 收起 理由
菜鸟初来乍到 + 1
言戲無軍 + 1 很给力!
tryhi + 1 赞一个!
tigcat + 1 阿甘大侠新发明啊

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-1-20 08:24:55 | 显示全部楼层
本帖最后由 jun353835273 于 2021-1-20 08:26 编辑

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

使用道具 举报

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

 楼主| 发表于 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 18:23:42 来自手机 | 显示全部楼层
什么软件录屏,还可以有按键。
 楼主| 发表于 2021-1-19 18:44:35 | 显示全部楼层
Bao_lai 发表于 2021-1-19 18:23
什么软件录屏,还可以有按键。

ScreenToGif
发表于 2021-1-19 21:20:18 | 显示全部楼层
还是没见到2016版的
 楼主| 发表于 2021-1-19 21:51:06 | 显示全部楼层
bai2000 发表于 2021-1-19 21:20
还是没见到2016版的

试试2014版
如果不行去晓东上传cad2016安装目录下的accoremgd.dll、AcCui.dll、acdbmgd.dll、Acmgd.dll文件给我
发表于 2021-1-19 22:53:07 | 显示全部楼层
谢谢分享,提2个小问题
1、必须ag启动么?和自己的ag冲突了,搞个长命令启动比较合适。
2、双击历史记录中的某条,还需要回车一下才能计算,或者回车一下后才能调用该算式,回车后历史记录中该算式又记录了一遍。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 21:02 , Processed in 0.213384 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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