明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: zixuan203344

[源码] 表达式计算修改版本,增加计算函数选择按钮[2019年1月23日更新]

  [复制链接]
发表于 2019-1-17 08:12 | 显示全部楼层
本帖最后由 mokson 于 2019-1-23 08:48 编辑

表达式太强大了,向楼主学习!

点评

赞一个  发表于 2019-1-21 13:13
回复 支持 1 反对 0

使用道具 举报

发表于 2019-1-17 11:11 | 显示全部楼层
我的邮箱335833868@qq.com,可以发一个源码给我学习吗?
 楼主| 发表于 2019-1-17 14:30 | 显示全部楼层
本帖最后由 zixuan203344 于 2019-1-17 14:40 编辑
arcers 发表于 2019-1-16 23:55
谢谢分享。
问题1、“飞鸟函数”计算结果是整数,没有小数点及后面的数字。
问题2、CAD启动后,首次运行 ...

问题1:已修复
问题2:已修复
问题3:多次测试,2019正常使用,本人电脑装有08、12、14、18、19均正常使用

建议1:不想多折腾,见谅
建议2:想了想,还是加上关于按钮吧
回复 支持 1 反对 0

使用道具 举报

发表于 2019-1-18 10:52 | 显示全部楼层
zixuan203344 发表于 2019-1-17 14:30
问题1:已修复
问题2:已修复
问题3:多次测试,2019正常使用,本人电脑装有08、12、14、18、19均正常 ...

谢谢
发表于 2019-1-18 11:15 | 显示全部楼层
还是没有小数位。


本帖子中包含更多资源

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

x
发表于 2019-1-18 14:02 | 显示全部楼层
我忘记密码了,群主是否可以发个原版给我?我的邮箱是335833868@qq.com,谢谢
发表于 2019-1-18 16:29 | 显示全部楼层
本帖最后由 arcers 于 2019-1-21 23:39 编辑

改了一下界面;1、关于内容补充;2、底部按钮改到列表右侧-更便于使用。

(defun c:wcal ( / oldch1)
    (vl-load-com)
(if (< (atof (substr (getvar "acadver") 1 4)) 19)
       (setq calwjm "geomcal.arx")
       (setq calwjm "geomcal.crx")
    )
   (if (member calwjm (arx))
       nil
       (arxload calwjm nil)
    )
    ;;; 灰显控件
    (defun gps->dcl-disablectrls (keylist / key)
        (foreach key keylist (mode_tile key 1))
    )
    ;;;激活控件
    (defun gps->dcl-enablectrls (keylist / key)
        (foreach key keylist (mode_tile key 0))
    )
    ;;;设置剪切板
    (defun gxl-copytoclipboard(text / clip_board)
        (setq clip_board (vlax-get-property (vlax-get (vlax-create-object "htmlfile") 'parentwindow) 'clipboarddata))
        (vlax-invoke clip_board 'setdata "text" text)
        (vlax-release-object clip_board)
        text
    )
    ;;;关于
    ;;;关于
        (defun note_about ()
                (alert
                        (strcat
                                "1. 满足建筑面积、疏散宽度等表达式计算需求。\n"
                                "2. 支持拾取CAD表达式、输入表达式、双击拷贝表达式。\n"
                                "3. 识别天正格式、图块内部的表达式。\n"
                                "4. 本插件适于较小数值,推荐CTRL+8启动CAD自带计算器。"
                        )
                )
        )
    ;;;计算
    (defun note_add( / note time mmm)
        (if (/= (setq note (get_tile "edit")) "")
            (progn
                (setq mmm (vl-catch-all-apply 'c:cal (list note)))
                (if
                    (null mmm)
                    (progn (mode_tile "edit" 2)(alert "表达式错误!请检查!"))
                    (progn
                        (setq time (menucmd "M=$(edtime,$(getvar,date),YYYY_MODD_HHMMSS)"))
                        (setq mmm (vl-princ-to-string mmm))
                        (vlax-ldata-put "#wwcalc#" time (strcat note "=" mmm))
                        (gxl-copytoclipboard mmm)
                        (setq oldch1 mmm)
                        (note_fill_lst)
                    )
                )
            )
            (progn
                (mode_tile "edit" 2)
                (alert "输入计算表达式!")
            )
        )
    )
    ;;;dcl赋值
    (defun note_fill_lst( / n)
        (setq #notedataall(vlax-ldata-list "#wwcalc#") #notedata (mapcar 'cdr #notedataall))
        (if oldch1 (set_tile "edit" oldch1))
        (start_list "list")
        (if #notedataall
            (progn
                (foreach n #notedataall
                    (add_list (cdr n))
                )
                (gps->dcl-enablectrls '("sdel" "alldel"))
            )
            (gps->dcl-disablectrls '("sdel" "alldel"))
        )
        (end_list)
        (set_tile "list" "0")
        (mode_tile "edit" 2)
    )
    ;;;单删
    (defun note_lst_sdel( / get n)
        (if (and #notedataall (/= "" (setq get (get_tile "list"))))
            (progn
                (setq n (nth (atoi get) #notedataall))
                (vlax-ldata-delete "#wwcalc#" (car n))
                (note_fill_lst)
            )
        )
    )
    ;;;全删
    (defun note_lst_alldel( / n)
        (foreach n #notedataall (vlax-ldata-delete "#wwcalc#" (car n)))
        (note_fill_lst)
    )
    ;;;双击list.
    (defun note_ok( / get n)
        (if (/= "" (setq get (get_tile "list")))
            (progn
                (setq n (nth (atoi get) #notedataall))
                (gxl-copytoclipboard (cdr n))
                (set_tile "edit" (cdr n))(mode_tile "edit" 2)
            )
        )
    )
    ;;拾取
    (defun shiqua (/ ent1 ent2 entdata tmlist entlist textzs)
        (while (null (setq ent1 (nentsel ))))
        (if ent1
            (progn(setq oldch1 (cdr(assoc 1(entget(car ent1)))))
                (caldhk))
        )
    )
    ;end shiqu1
    ;;;
    (defun caldhk ( / #notedata #notedataall dclid dclname filen fn get n note stream tempname time re)
        (setq dclname
            (cond
                ((setq tempname (vl-filename-mktemp "gps-dcl-tmp.dcl") filen (open tempname "w"))
                    (foreach stream
                        '(
                            "ibutton:button{width=12;fixed_width=true;}\n"
                            "wwcalc:dialog{label=\"AutoCAD表达式计算器 \";\n"
                            "  :spacer {}"
                            "  :boxed_row{label=\"输入表达式\";\n"
                            "     :edit_box{key=\"edit\"; allow_accept=true;}\n"
                            "  :ibutton{label=\"计 算\";key=\"add\";is_default = true;}\n"
                            "  }\n"
                            "  :row{\n"
                            "  :boxed_column{label=\"历史记录\";\n"
                            "     :list_box{fixed_width=true;height=14 ;key=\"list\";width=60;}\n"
                            "  }\n"
                            "  :boxed_column{label=\"功能操作\";\n"
                            "  :ibutton{label=\"拾 取\";key=\"txtin\";}\n"
                            "  :ibutton{label=\"单 删\";key=\"sdel\";}\n"
                            "  :ibutton{label=\"全 删\";key=\"alldel\";}\n"
                            "  :ibutton{is_cancel=true;label=\"取 消\";}\n"
                            "  :ibutton{label=\"关 于\";key=\"about\";}\n"
                            "    }\n"
                            "  }\n"
                            "}\n"
                        )
                        (princ stream filen)
                    )
                    (close filen)
                    tempname
                )
            )
        )
        (setq dclid (load_dialog dclname))
        (if (not(new_dialog "wwcalc" dclid))
            (progn (alert "dcl对话框加载失败.")(exit))
        )
        (note_fill_lst)
        (action_tile "add" "(note_add)")
        (action_tile "list" "(if(= $reason 4)(note_ok))")
        (action_tile "cancel" "(done_dialog 0)")
        (action_tile "sdel" "(note_lst_sdel)")
        (action_tile "alldel" "(note_lst_alldel)")
        (action_tile "about" "(note_about)")
        (action_tile "txtin" "(done_dialog 1)")
        (action_tile "txtout" "(note_out)")
        (setq re (start_dialog))
        (if (= re 1) (shiqua))
        (unload_dialog dclid)
        (vl-file-delete dclname)
        (prin1)
    )
    (caldhk)
)

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
wayne_myles + 1 很给力!

查看全部评分

 楼主| 发表于 2019-1-18 17:01 | 显示全部楼层
本帖最后由 zixuan203344 于 2019-1-18 17:05 编辑
arcers 发表于 2019-1-18 16:29
改了一下界面;1、关于内容补充;2、底部按钮改到列表右侧-更便于使用。

1.飞鸟内核首次使用bug问题我修复了           2.删除和清空其实表意并不准确


发表于 2019-1-19 16:29 | 显示全部楼层
非常感谢分享
发表于 2019-1-20 22:24 | 显示全部楼层
arcers 发表于 2019-1-18 16:29
改了一下界面;1、关于内容补充;2、底部按钮改到列表右侧-更便于使用。

这个界面挺不错  分享一下谢谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 08:49 , Processed in 0.201387 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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