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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

次组件三态巨集

[复制链接]

5

主题

45

帖子

27

金币

天使

Rank: 2Rank: 2

积分
124
QQ
跳转到指定楼层
楼主
发表于 2016-3-5 19:00:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
次组件三态连结

因为变更模型组态属性需要不少步骤,所以我录制三个巨集用来做切换,但只有当组态名称为"预设"时才有作用,请问该如何修改成任何组态名称都能够使用?

底下是其中之一个巨集内容。

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("预设", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.EditConfiguration3("预设", "预设", "", "", 38)
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

2

主题

55

帖子

20

金币

天使

Rank: 2Rank: 2

积分
92
QQ
沙发
发表于 2016-3-9 11:01:06 | 只看该作者
大佬估计翔仔的问题重点是『程式码如何配合不同名称的组态?』
***如果大佬估计错误,以下文章可以不理。***


获取当前组态名称的方法:
先用GetActiveConfiguration获取组态(物件),再用Name获取其名称,语句如下:
Part.GetActiveConfiguration.Name
将这语句取代所有的"预设"(必须连同引号一起取代)

顺带一提,录制的巨集通常需要略作修正,例如:
1. boolstatus = Part.Extension.SelectByID2("预设", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0) 是没用的,可以整句删除。
2. Set swApp = _ 隔行 Application.SldWorks 可以改为 Set swApp = Application.SldWorks
3. boolstatus = Part.EditConfiguration3(Part.GetActiveConfiguration.Name, Part.GetActiveConfiguration.Name, "", "", 38)
  可以改为 Part.EditConfiguration3 Part.GetActiveConfiguration.Name, Part.GetActiveConfiguration.Name, "", "", 38
按照这样修改,应该可以解决翔仔的困扰。
不过,这巨集会清空组态某些属性(Comment, Alternatename),虽然可用但存在隐患,就当作这是个学习过程吧。


建议使用函数:ChildComponentDisplayInBOM(2014 SP3 及往后版本才支持)
倘若翔仔有兴趣探讨才继续讨论吧,免得又一次变成一厢情愿的闷讨论
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

5

主题

38

帖子

26

金币

天使

Rank: 2Rank: 2

积分
106
QQ
板凳
发表于 2016-3-11 22:24:19 | 只看该作者
假设翔仔有兴趣探讨,大佬继续说明吧。
***如果大佬假设错误,以下文章可以不理。***


使用函数 ChildComponentDisplayInBOM,先要取得 Configuration
取得 Configuration 的语句如下:
Set Config = Application.SldWorks.ActiveDoc.GetActiveConfiguration

整个巨集如下:
Dim Config As Object
Dim InBom As String
Sub main()
Set Config = Application.SldWorks.ActiveDoc.GetActiveConfiguration
InBom = Config.ChildComponentDisplayInBOM
InBom = InputBox("1 = 隐藏,  2=显示,  3 = 升级", "次组件的三态设定", InBom)
Config.ChildComponentDisplayInBOM = InBom
End Sub


这样就可以利用 InputBox 设定 并 查询次组件的三态。
可是,在 InputBox 输入非 1、2、3 的字符就可能报错,自己用尚可,给别人使用可能引来咒骂。


建议使用逻辑语句避开这类报错。
倘若翔仔有兴趣探讨才继续讨论吧,免得又一次变成一厢情愿的闷讨论
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

34

帖子

17

金币

天使

Rank: 2Rank: 2

积分
70
QQ
地板
发表于 2016-3-13 12:55:22 | 只看该作者
大佬:

一直想学习巨集,但却找不到相关的书(可能是我根本不知道哪本书才对),每次看到大家分享的巨集都只能打开看看就又关掉了。因为完全陌生,想问也没有方向。

最近去上了机械手臂的课程,觉得写法跟SW的巨集很像(宣告、函数、命令等等),讲义里有各种命令的名称及用法,不知道SW的巨集是不是也有这些资料。

20160307补充 依照大佬指导修改原有巨集,测试成功。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

54

帖子

30

金币

天使

Rank: 2Rank: 2

积分
95
QQ
5#
发表于 2016-3-17 08:49:21 | 只看该作者

   经典案例图书




大佬这个巨集非常好用啊!该输入什么都已经显示了,照着输入就不会报错了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

44

帖子

27

金币

天使

Rank: 2Rank: 2

积分
107
QQ
6#
发表于 2016-4-3 16:49:29 | 只看该作者
对翔仔的回覆有点失望。

如果单纯抱着“拿来主义”来提问,抛下问题等待收成,这是没有问题的。

不过翔仔4楼表明自己想学习巨集,但是又好像没有仔细看大佬的内文,到底是什么的姿态?难道真的一点问题也没?
可能会说,害怕问得多会给脾气古怪的大佬责骂,这藉口看似有理但实属无稽,要知道越是不正视问题,越显得矫揉造作,绝非君子之所为也。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

39

帖子

15

金币

天使

Rank: 2Rank: 2

积分
65
QQ
7#
发表于 2016-4-6 11:14:30 | 只看该作者

   经典案例图书
实在是怕问得太基础(连宣告怎么用、命令有哪些都不知道),所以才想先找书学...,大佬应该有体会到我是不怕被骂的吧~

问题一:例如2#的回覆里2.&3.应该单纯是将多余的符号、空格删除,但1.是将整句删除。

录制的巨集该如何判断哪些需要修正呢?

问题二:大佬指出2#那样修改的巨集可用但存在隐患,能否加以说明呢?

问题三:3#的宣告跟我录制的巨集里的宣告只有"Dim Config As Object"是相同的,删除的那些有何用途、为何3#巨集不需要;新增的宣告又是什么用途?

问题四:3#最后说以逻辑语句避开报错,大佬设定成输入1、2、3我觉得已经很好用了啊,有更好的方法吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

49

帖子

27

金币

天使

Rank: 2Rank: 2

积分
123
QQ
8#
发表于 2016-4-6 22:00:21 | 只看该作者
那我今天就去找Excel的VBA书籍来学习。

问题三:我先消化一下...(关于8#的3#的宣告跟我录制的巨集里的宣告只有"Dim Config As Object"是相同的,显然是我看错了,不好意思)

问题四:了解意思了,除了大佬说的取消不报错以外,甚至可以加入"当输入错误时跳出温馨提示"对吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

46

帖子

17

金币

天使

Rank: 2Rank: 2

积分
77
QQ
9#
发表于 2016-4-13 04:24:51 | 只看该作者




请各位朋友特别注意【Set Config = Application.SldWorks.ActiveDoc.GetActiveConfiguration】获取的是当前组态,而当前组态名称喔~

依样画葫芦成功了。

想要按照SW的顺序"1.显示2.隐藏3.升级"而改了内容,但是发现"Inbom = InputBox("1 = 隐藏, 2 = 显示, 3 = 升级", "次组件三态设定", Inbom)"只是针对弹出视窗的内容,与组合件的三态不吻合,所以又改了回来。

请问:
10#的弹出视窗怎么做的,选择起来更方便了!也能显示当前的选择吗?
2.3 传回值我先看看,谢谢大佬特地找出连结来~
2.4 可行,已于4#补充
3.1
Set swApp = Application.SldWorks
Set mysw = Application.SldWorks
Set mydoc = mysw.ActiveDoc
Set mycofig = mydoc.GetActiveConfiguration
set myconfig = application.sldworks.activedoc.getactiveconfiguration
分别提取的资料为何?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

40

帖子

19

金币

天使

Rank: 2Rank: 2

积分
94
QQ
10#
发表于 2016-4-13 23:35:58 | 只看该作者
又改了回来。所说为何?

插入窗体,针对不同的要求,编写对应的程式码。

不用谢。

示范而已。

另请查找并回答以上还没回答的问题。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

45

帖子

14

金币

天使

Rank: 2Rank: 2

积分
79
QQ
11#
发表于 2016-4-17 10:16:22 | 只看该作者
原来真的那么......,这个非常简单的三态设定巨集,看情况翔仔连十分之一也看不懂,估计这是恐惧英语的后遗症,导致再简单的语句也无法阅读消化。

深表同情,爱莫能助。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

36

帖子

34

金币

天使

Rank: 2Rank: 2

积分
115
QQ
12#
发表于 2016-4-17 12:58:56 | 只看该作者
看不懂的单字我有一个一个查翻译,搞得头昏脑胀,不过我会继续的,等我稍微进步一点再向大佬请教
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

50

帖子

24

金币

天使

Rank: 2Rank: 2

积分
84
QQ
13#
发表于 2016-4-27 11:37:43 | 只看该作者
英语的程度是不会影响学习编程的,电脑语言根本就不是英语,就算编程都改用方块字,欠缺逻辑思维的话,一样会头昏脑胀,甚至更加糟糕。

翔仔的致命点在于“差不多”的思维,在11楼的截图可见,明明白白是“获取当前组态”,居然给翔仔理解为“获取当前组态名称”,这是什么的理由?可能会说:“只不过是多了个“名称”,有什么大不了呀!”,当然完全不同,请问“翔仔名称”与“翔仔”有没有分别呢?

一些通识课的字眼,诸如:针对、范畴、为何,只能暂时吓唬他人,久而久之必会『黔驴技穷』。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

47

帖子

41

金币

天使

Rank: 2Rank: 2

积分
141
QQ
14#
发表于 2016-5-1 20:24:59 | 只看该作者
大佬估计翔仔的问题重点是『程式码如何配合不同名称的组态?』
***如果大佬估计错误,以下文章可以不理。***


获取当前组态名称的方法:
先用GetActiveConfiguration获取组态(物件),再用Name获取其名称,语句如下:
Part.GetActiveConfiguration.Name
将这语句取代所有的"预设"(必须连同引号一起取代)

顺带一提,录制的巨集通常需要略作修正,例如:
1. boolstatus = Part.Extension.SelectByID2("预设", "CONFIGURATIONS", 0, 0, 0, False, 0, Nothing, 0) 是没用的,可以整句删除。
2. Set swApp = _ 隔行 Application.SldWorks 可以改为 Set swApp = Application.SldWorks
3. boolstatus = Part.EditConfiguration3(Part.GetActiveConfiguration.Name, Part.GetActiveConfiguration.Name, "", "", 38)
  可以改为 Part.EditConfiguration3 Part.GetActiveConfiguration.Name, Part.GetActiveConfiguration.Name, "", "", 38
按照这样修改,应该可以解决翔仔的困扰。
不过,这巨集会清空组态某些属性(Comment, Alternatename),虽然可用但存在隐患,就当作这是个学习过程吧。


建议使用函数:ChildComponentDisplayInBOM(2014 SP3 及往后版本才支持)
倘若翔仔有兴趣探讨才继续讨论吧,免得又一次变成一厢情愿的闷讨论
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

60

帖子

38

金币

天使

Rank: 2Rank: 2

积分
154
QQ
15#
发表于 2016-5-3 18:06:36 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

假设翔仔有兴趣探讨,大佬继续说明吧。
***如果大佬假设错误,以下文章可以不理。***


使用函数 ChildComponentDisplayInBOM,先要取得 Configuration
取得 Configuration 的语句如下:
Set Config = Application.SldWorks.ActiveDoc.GetActiveConfiguration

整个巨集如下:
Dim Config As Object
Dim InBom As String
Sub main()
Set Config = Application.SldWorks.ActiveDoc.GetActiveConfiguration
InBom = Config.ChildComponentDisplayInBOM
InBom = InputBox("1 = 隐藏,  2=显示,  3 = 升级", "次组件的三态设定", InBom)
Config.ChildComponentDisplayInBOM = InBom
End Sub


这样就可以利用 InputBox 设定 并 查询次组件的三态。
可是,在 InputBox 输入非 1、2、3 的字符就可能报错,自己用尚可,给别人使用可能引来咒骂。


建议使用逻辑语句避开这类报错。
倘若翔仔有兴趣探讨才继续讨论吧,免得又一次变成一厢情愿的闷讨论
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

35

帖子

29

金币

天使

Rank: 2Rank: 2

积分
84
QQ
16#
发表于 2016-5-4 15:11:58 | 只看该作者

   经典案例图书
大佬:

一直想学习巨集,但却找不到相关的书(可能是我根本不知道哪本书才对),每次看到大家分享的巨集都只能打开看看就又关掉了。因为完全陌生,想问也没有方向。

最近去上了机械手臂的课程,觉得写法跟SW的巨集很像(宣告、函数、命令等等),讲义里有各种命令的名称及用法,不知道SW的巨集是不是也有这些资料。

20160307补充 依照大佬指导修改原有巨集,测试成功。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

48

帖子

16

金币

天使

Rank: 2Rank: 2

积分
76
QQ
17#
发表于 2016-5-5 09:17:11 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入





大佬这个巨集非常好用啊!该输入什么都已经显示了,照着输入就不会报错了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

49

帖子

17

金币

天使

Rank: 2Rank: 2

积分
97
QQ
18#
发表于 2016-5-12 11:41:08 | 只看该作者

   经典案例图书
对翔仔的回覆有点失望。

如果单纯抱着“拿来主义”来提问,抛下问题等待收成,这是没有问题的。

不过翔仔4楼表明自己想学习巨集,但是又好像没有仔细看大佬的内文,到底是什么的姿态?难道真的一点问题也没?
可能会说,害怕问得多会给脾气古怪的大佬责骂,这藉口看似有理但实属无稽,要知道越是不正视问题,越显得矫揉造作,绝非君子之所为也。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

37

帖子

21

金币

天使

Rank: 2Rank: 2

积分
89
QQ
19#
发表于 2016-5-15 06:45:41 | 只看该作者
实在是怕问得太基础(连宣告怎么用、命令有哪些都不知道),所以才想先找书学...,大佬应该有体会到我是不怕被骂的吧~

问题一:例如2#的回覆里2.&3.应该单纯是将多余的符号、空格删除,但1.是将整句删除。

录制的巨集该如何判断哪些需要修正呢?

问题二:大佬指出2#那样修改的巨集可用但存在隐患,能否加以说明呢?

问题三:3#的宣告跟我录制的巨集里的宣告只有"Dim Config As Object"是相同的,删除的那些有何用途、为何3#巨集不需要;新增的宣告又是什么用途?

问题四:3#最后说以逻辑语句避开报错,大佬设定成输入1、2、3我觉得已经很好用了啊,有更好的方法吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

48

帖子

43

金币

天使

Rank: 2Rank: 2

积分
136
QQ
20#
发表于 2016-5-18 15:01:05 | 只看该作者
那我今天就去找Excel的VBA书籍来学习。

问题三:我先消化一下...(关于8#的3#的宣告跟我录制的巨集里的宣告只有"Dim Config As Object"是相同的,显然是我看错了,不好意思)

问题四:了解意思了,除了大佬说的取消不报错以外,甚至可以加入"当输入错误时跳出温馨提示"对吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-3 16:36 , Processed in 0.163200 second(s), 35 queries .

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

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

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