SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 323|回复: 2
打印 上一主题 下一主题

[求助]BS架构,零件合成装配体,浏览器显示结果

[复制链接]

9

主题

231

帖子

44

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
276
跳转到指定楼层
楼主
发表于 2007-12-7 00:27:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟接触solidworks时间不长,现在想实现一个在web上合成装配体的功能
具体想法是这样的:比如要在手机面板上嵌入一个一个的按键。用户首先从大量的零件里面选定他需要的一个面板和几个按钮,设定好各个按钮在面板上的左边距和上边距,点击确定。服务器打开一个solidworks进程,创建一个AssemblyDoc,添加用户选定的一个个PART文件,选择各零件事先命名好的面和边添加配合,最后保存为一个easm文件,由浏览器查看
现在的主要问题是合成装配体消耗的时间太长,10个零件合成大约需要1分钟,时间主要消耗在选择边和面的时候,和添加配合的时候,不知道各位高手能不能给点建议?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞14115 拍砖拍砖4032
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

13

主题

227

帖子

75

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
381
QQ
沙发
发表于 2007-12-7 00:29:08 | 只看该作者
我把代码贴上来吧:
SldWorks.SldWorksClass sld = new SldWorksClass();
int nErrors=0;
int nWarnings=0;
        
ModelDoc2 docx = sld.OpenDoc6(@"D:zySW_testx.SLDPRT", 1, 0, "", ref nErrors, ref nWarnings);
ModelDoc2 docy = sld.OpenDoc6(@"D:zySW_testy.SLDPRT", 1, 0, "", ref nErrors, ref nWarnings);
AssemblyDoc assemblyDoc = (AssemblyDoc)sld.NewAssembly();
ModelDoc2 doc = (ModelDoc2)assemblyDoc;
Component2 x = assemblyDoc.AddComponent4(@"D:zySW_testx.SLDPRT", "", 0, 0, 0);
Component2 y = assemblyDoc.AddComponent4(@"D:zySW_testy.SLDPRT", "", 0, 0, 0);
doc.ClearSelection2(true);
SelectFaceByFeature(doc, x, "拉伸2", "19841013");
SelectFaceByFeature(doc, y, "绘制的折弯4", "17723919");
assemblyDoc.AddMate2(0, 0, false, 0, 0, 0, 0, 0, 0, 0, 0, out nErrors);
doc.ClearSelection2(true);
SelectEdgeByBody(doc, x, "切除-拉伸2", "edgeleft");
SelectEdgeByBody(doc, y, "绘制的折弯4", "edge1");
assemblyDoc.AddMate2(5, 0, false, 0.011, 0, 0, 0, 0, 0, 0, 0, out nErrors);
doc.ClearSelection2(true);
SelectEdgeByBody(doc, x, "切除-拉伸2", "edgetop");
SelectEdgeByBody(doc, y, "绘制的折弯4", "edge2");
assemblyDoc.AddMate2(5, 0, false, 0.011, 0, 0, 0, 0, 0, 0, 0, out nErrors);
doc.ClearSelection2(true);
doc.SaveAs(@"D:zySW_teste.easm");
sld.CloseAllDocuments(true);
sld.ExitApp();
选择面和边的代码如下:
    void SelectFaceByFeature(ModelDoc2 assemblyDoc,Component2 part,string featurename,string facename)
    {
        Feature feature = (Feature)part.FeatureByName(featurename);
      
        object faces = (object)feature.GetFaces();
        for (int i =0; i < faces.Length; i++)
        {
            Entity faceEntity = (Entity)faces<i>;
            if (assemblyDoc.GetEntityName(faceEntity) == facename)
            {
                faceEntity.Select2(true, 0);
                return;
            }
        }
    }
    private void SelectEdgeByBody(ModelDoc2 assemblyDoc, Component2 part,string bodyName, string edgeName)
    {
        object partbodys = (object)part.GetBodies(0);
        for (int j = 0; j < partbodys.Length; j++)
        {
            Body2 body = (Body2)partbodys[j];
            if (body.Name == bodyName)
            {
                object edges = (object)body.GetEdges();
                for (int i = 0; i < edges.Length; i++)
                {
                    Entity edgeEntity = (Entity)edges<i>;
                    if (assemblyDoc.GetEntityName(edgeEntity) == edgeName)
                    {
                        edgeEntity.Select2(true, 0);
                        return;
                    }
                }
            }
        }
    }
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

78

主题

277

帖子

158

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
459
QQ
板凳
发表于 2007-12-7 00:32:48 | 只看该作者
C++不懂啊...汗...
而且慢也是机器和性能的问题.急不来的
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-4-29 10:01 , Processed in 0.153649 second(s), 37 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

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