找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1097|回复: 12

[他山之石] 通用多文件选择

[复制链接]

已领礼包: 2963个

财富等级: 家财万贯

发表于 2017-4-21 17:44:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 819534890 于 2017-4-22 10:00 编辑

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:mycad.zip 
下载次数:105  文件大小:2.02 KB 
下载权限: 不限 以上  [免费赚D豆]


昨天在明经CAD,看到一篇文章:使用.net开发ActiveX控件供lisp调用
(今天明经网站进不去,没找到链接地址)
受其启发,用vs 编了一个通用的多文件选择函数,不受CAD版本限制,函数见附件(dll文件);

函数使用要求:
1、安装.net 4.0以上;
2、把dll文件copy到一个目录,找出.net安装目录中的regasm.exe (cad为64位的用regasm64.exe),
然后用 regasm /c mycad.dll 注册dll,即可使用。

以下是lisp调用代码:
(defun c:test()
(setq o (vlax-create-object "mycad.openmultifiles"))
;(vlax-invoke o "openfiles" "Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx|所有文件|*.*") ;选择excel文件
(vlax-invoke o "openfiles" "DWG文件(*.dwg)|*.dwg|所有文件|*.*") ;选择CAD文件
)
以下是dll文件的代码(C#)

using System;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace mycad
{
    public class openmultifiles
    {
        public string[] openfiles(string fl)
        {
            string[] flist={};

            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = fl;
            ofd.ValidateNames = true;
            ofd.CheckPathExists = true;
            ofd.CheckFileExists = true;
            ofd.Multiselect = true;
            if (ofd.ShowDialog() == DialogResult.OK)
               flist = ofd.FileNames;

             return flist;
        }

    }
}

有了这个方法,很多的VS的功能都可以为CAD所用了!








结果

结果

评分

参与人数 1D豆 +5 收起 理由
Lisphk + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-4-21 23:10:30 | 显示全部楼层
感谢楼主,能把C++代码公布吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2963个

财富等级: 家财万贯

 楼主| 发表于 2017-4-21 23:17:06 | 显示全部楼层

是用vs的C#编写,已经补充了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4751个

财富等级: 富可敌国

发表于 2017-4-22 07:41:03 | 显示全部楼层
啥也不说了,感谢楼主分享哇!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 303个

财富等级: 日进斗金

发表于 2017-4-22 10:58:51 | 显示全部楼层
啥也不说了,感谢楼主分享哇!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2017-4-22 11:00:32 | 显示全部楼层
.Net 版本还是低点才适用更广吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 205个

财富等级: 日进斗金

发表于 2017-4-22 11:08:44 | 显示全部楼层
啥也不说了,感谢楼主分享哇!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

发表于 2017-4-22 12:31:11 | 显示全部楼层
啥也不说了,感谢楼主分享哇!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-4-22 12:51:04 | 显示全部楼层
编写的第一个程序,求修改。提示参数太多...
(defun c:chilun ()
  (setq p0 (getpoint "\n输入基点坐标p0:"))
  (setq z (getdist "\n输入齿数z:"))
  (setq m (getdist "\n输入模数m:"))
  (setq b (getdist "\n输入齿宽b:"))
  (setq n (getdist "\n输入齿轮厚度n:"))
  (setq w (getdist "\n输入键槽宽度w:"))
  (setq d (* m z))   ;分度圆直径
  (setq db (* d (cos (/ pi 9)))) ;基圆直径
  (setq da (* m (+ z 2)))  ;齿顶圆直径
  (setq df (* m (- z 2.5)))  ;齿根圆直径
  (setq l (/ (sqrt (- (* db db) (* w w)) 2)))
  (setq p1 (polar p0 (/ pi 2) (/ db 2)))
  (setq p2 (polar p0 (/ pi 2) (* db 0.6)))
  (setq p3 (polar p2 pi (/ w 2)))
  (setq p4 (polar p3 0 w))
  (setq p5 (polar p3 (* pi -0.5) 10))
  (setq p6 (polar p4 (* pi -0.5) 10))
  (setq p7 (polar p0 pi (* bd 2)))
  (setq p8 (polar p7 (/ pi 2) l))
  (setq p9 (polar p7 (/ pi 2) (* db 0.6)))
  (setq p10 (polar p7 (/ pi 2) (/ df 2)))
  (setq p11 (polar p7 (/ pi 2) (/ da 2)))
  (setq p12 (polar p11 pi b))
  (setq p13 (polar p10 pi b))
  (setq p14 (polar p13 (* pi -0.5) 3))
  (setq p15 (polar p14 pi (- n b)))
  (setq p16 (polar p9 pi n))
  (setq p17 (polar p8 pi n))
  (setq p18 (polar p7 (* pi -0.5) (/ db 2)))
  (setq p19 (polar p7 (* pi -0.5) (/ df 2)))
  (setq p20 (polar p7 (* pi -0.5) (/ da 2)))
  (setq p21 (polar p20 pi b))
  (setq p22 (polar p19 pi b))
  (setq p23 (polar p22 (/ pi 2) 3))
  (setq p24 (polar p23 pi (- n b)))
  (setq p25 (polar p18 pi n))
  (setq p26 (polar p0 0 (+ (* db 0.5) 10)))
  (setq p27 (polar p0 (/ pi 2) (+ (* db 0.6) 10)))
  (setq p28 (polar p0 pi (+ (* db 0.5) 10)))
  (setq p29 (polar p0 (* pi -0.5) (+ (* db 0.5) 10)))
  (setq p30 (polar p7 0 10))
  (setq p31 (polar p7 pi (+ n 10)))
  (setq p32 (polar p30 (* pi -0.5) (/ (* m z) 2)))
  (setq p33 (polar p32 pi (+ b 20)))
  (setq p34 (polar p30 (/ pi 2) (/ (* m z) 2)))
  (setq p35 (polar p34 pi (+ b 20)))
  (setq p36 (polar p9 (* pi 0.7) 1))
  (setq p37 (polar p19 (* pi 0.7) 1))
  (command "layer" "M" "zhongxin" "C" 1 "" "L" "Center" "" "LW" 0.1 ""
    "")
  (command "line" p26 p28 "")
  (command "line" p27 p29 "")
  (command "layer" "M" "cuxian" "")
  (command "lweight" 0.3)
  (command "circle" "p0" (/ db 2))
  (command "pline" p5 p3 p4 p6 "")
  (command "zoom" "e")
  (command "trim" "All" "" "p2" "p5" "p6" "")
  (command "layer" "M" "zhongxin" "C" 1 "" "L" "Center" "" "LW" 0.1 ""
    "")
  (command "line" p30 p31 "")
  (command "line" p32 p33 "")
  (command "line" p34 p35 "")
  (command "layer" "M" "cuxian" "")
  (command "lweight" 0.3)
  (command "line" p11 p20 p21 p23 p24 p15 p14 p12 "c")
  (command "line" p10 p13 "")
  (command "line" p9 p16 "")
  (command "line" p8 p17 "")
  (command "line" p18 p25 "")
  (command "line" p19 p22 "")
  (command "line" p19 p22 "")
  (command "bhatch" "p" "ansi31" 1.5 0 "p36" "")
  (command "bhatch" "p" "ansi31" 1.5 0 "p37" "")
)
更多图片 小图 大图
组图打开中,请稍候......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2017-4-22 12:52:38 | 显示全部楼层
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3186个

财富等级: 富可敌国

发表于 2017-4-22 13:49:34 | 显示全部楼层
啥也不说了,感谢楼主分享哇!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 35个

财富等级: 招财进宝

发表于 2017-4-22 14:15:59 来自手机 | 显示全部楼层
感谢楼主,分享,支持下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-18 16:26 , Processed in 0.200978 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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