分享
 
 
 

Solidworks二次开发-05-装配体中插入零部件

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Solidworks二次开发--装配体中插入零部件

在往装配体中插入零部件时,我们使用addcomponent 函数。如果需要选定零部件的配置,则需要使用addcomponent4。

先学习下语法:

addcomponent4:

retval = AssemblyDoc.AddComponent4 ( compName, configName, x, y, z)

Input: (BSTR) compName Path name of a loaded part or assembly to add as a component

Input: (BSTR) configName Name of the configuration from which to load the component

Input: (double) x X coordinate of the component center

Input: (double) y Y coordinate of the component center

Input: (double) z Z coordinate of the component center

Output: (LPCOMPONENT2) retval Pointer to the Component2 object

需要注意的是:参数1为文件的全名(包括路径);参数2为文件的配置名称;当函数执行成功购返回一个指向该零件的指针。

于是我们可以如下写一个小程序,用来给装配体中插零件:

‘filename:insertPart.swp

‘write by arden

2005-4-4

‘this function add a part called “零件1.SLDPRT” in CurrentWorkingDirectory

‘precondition is there has a part document called “零件1.SLDPRT” in CurrentWorkingDirectory

‘and it has a configuration called “配置1”

Dim swApp As SldWorks.SldWorks

Dim Model As ModelDoc2

Dim pth As String

Dim strpath As String

Sub insertPart()

Set swApp = Application.SldWorks

strpath = swApp.GetCurrentWorkingDirectory ‘当前工作路径

Set Model = swApp.ActiveDoc

pth = strpath & "零件1.SLDPRT" ‘得到文件的FULLPATH全名

Model.AddComponent4 pth, "配置1", 0, 0, 0 ‘添加零部件

End Sub

然而,这个程序比不是想象中那么好用。为什么呢??回头看addcomponent4的remark,上面这样写:

The specified file must be loaded in memory. A file is loaded into memory when you load the file in your

SolidWorks session (SldWorks::OpenDoc6) or open an assembly that already contains the file.

就是说你想指定的插入的文件必须在调用函数之前已经在内存中加载了。

不习惯,你就不能直接打开多简单,没办法,我还没有找到好的方法,只能按人家的来:

看看下面的函数Opendoc6,它打开一个文档:

Opendoc6:

retval = SldWorks.OpenDoc6 ( filename, type, options, configuration, &Errors, &Warnings )

Input: (BSTR) Filename Document name or full path if not in current directory, including extension

Input: (long) Type Document type as defined in swDocumentTypes_e

Input: (long) Options Mode in which to open the document as defined in swOpenDocOptions_e

Input: (BSTR) Configuration Model configuration in which to open this document:

Applies to parts and assemblies, not drawings

If this argument is empty or the specified configuration is not present in the model,

the model is opened in the last-used configuration.

Output: (long) Errors Load errors as defined in swFileLoadError_e

Output: (long) Warnings Warnings or extra information generated during the open operation as defined in swFileLoadWarning_e

Return: (LPDISPATCH) retval Pointer to a Dispatch object, the newly loaded ModelDoc2, or NULL if failed to open

这个函数参数1就是文档的全名,参数2是要插入的类型描述,其中0123分别表示:

0 swDocNONE:不是sw文件

1 swDocPART:零件

2 swDocASSEMBLY:装配体

3 swDocDRAWING:工程图

如果想使用swDocNONE,需要定义:

Public Enum swDocumentTypes_e

}-- }--swDocNONE = 0

}-- }--swDocPART= 1

}-- }--swDocASSEMBLY = 2

swDocDRAWING=3

End Enum

参数3是打开文档的模式,一般我们就选择swOpenDocOptions_Silent 用0 表示,当然还有只读、只看等选项

参数4是打开选项,一般置空

后面是两个OutPut,用来显示错误打开时的提示

函数返回一个指向打开文件的指针。

按照上面的要求我们在向装配体中插入一个零部件时,需要这样步骤:

1、得到装配体

2、使用opendoc6打开需要插入的零件

3、使用addcomponent4插入零件到装配体

我们上面的程序需要这样来修改一下,添加了一个打开文档的函数:

' ******************************************************************************

' insertpart 03/21/05 by arden

'插入零件1

'前提条件:在装配体所在文件夹中有零件“零件1”存在,并且零件1有配置“配置1”

' ******************************************************************************

Dim swApp As SldWorks.SldWorks

Dim Model As ModelDoc2

Dim YSBmodel As ModelDoc2

Dim pth As String

Dim strpath As String

Dim nErrors As Long

Dim nWarnings As Long

Sub insertpart()

Set swApp = Application.SldWorks

strpath = swApp.GetCurrentWorkingDirectory

Set Model = swApp.ActiveDoc

pth = strpath & "零件1.SLDPRT"

openYSB (pth) ‘在添加零部件之前,先打开它

Model.AddComponent4 pth, "配置1", 0, 0, 0

End Sub

'这个函数打开零件1

Sub openpart(ByVal pth As String)

Dim path As String

Dim newswapp As SldWorks.SldWorks

Set newswapp = Application.SldWorks

path = pth

Set YSBmodel = newswapp.OpenDoc6(path, 1, swOpenDocOPtions_Silent, "", nErrors, nWarnings)

YSBmodel.Visible = False ‘我不想看到零件1

End Sub

这样的做法我感觉比较笨~为了赶工程进度我没有再去寻找好的方法,如果您知道有好的方法请告知我,万分感谢。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有