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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2673|回复: 12
打印 上一主题 下一主题

图号分离

  [复制链接]

9

主题

135

帖子

54

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
393
QQ
跳转到指定楼层
楼主
发表于 2019-4-22 14:18:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

   经典图书
软件小白一枚,因为公司需要统一零件模板,并且和我们搭建的PDM关联,需要将文件属性写入配置待定里面。之前用图号分离宏只能把属性写入自定义信息中,配置待定中只有空的标题,分离后的内容不能读取。
下面是我在网上找的说是可以将图号分离后属性写到配置待定的代码,实际调试有错误,见红色代码。
---
Dim a As Integer

Dim b As String

Dim m As String

Dim e As String

Dim k As String

Dim t As String

Dim c As String

Dim j As Integer

Dim strmat As String

Dim tempvalue As String

Dim Part As Object

Dim swApp As SldWorks.SldWorks

Dim swModelDoc As SldWorks.ModelDoc2

Dim swConfig As SldWorks.Configuration

Dim swModel As SldWorks.ModelDoc2

Sub main()

Set swApp = Application.SldWorks

Set swModelDoc = swApp.ActiveDoc

Set swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration

Set swModel = swApp.ActiveDoc

Set CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguratio.Name) '配置特定延伸

'设定变量

c = swApp.ActiveDoc.GetTitle() '零件名

strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)

a = InStr(c, " ") - 1 '重点:分隔标识符,这里是一个空格,也可换成其他符号

If a > 0 Then

k = Left(c, a)

t = Left(LTrim(e), 3)

If t = "GBT" Then

e = "GB/T" + Mid(k, 4)

Else

e = k

End If

b = Mid(c, a + 2)

t = Right(c, 7)

If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then

j = Len(b) - 7 '消除后缀(区分大小写,即含4种)

Else

j = Len(b)

End If

m = Left(b, j)

End If

'删除栏

CustPropMgr.Delete ("图样代号")

CustPropMgr.Delete ("图样名称")

CustPropMgr.Delete ("材料")

'新增

CustPropMgr.Add2 "图样代号", swCustomInfoText, e

CustPropMgr.Add2 "图样名称", swCustomInfoText, m

CustPropMgr.Add2 "数量", swCustomInfoText, ""

CustPropMgr.Add2 "材料", swCustomInfoText, strmat

CustPropMgr.Add2 "单重", swCustomInfoText, ""

CustPropMgr.Add2 "总重", swCustomInfoText, ""

CustPropMgr.Add2 "备注", swCustomInfoText, ""

End Sub
---
想请教下大拿们,这个代码要怎么修改才能管用。之前的图号分离宏,可以让所有属性出现在自定义里。或者有没有办法加一段自动复制自定义里面属性到配置待定里去的代码?

在线等大神解惑






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

使用道具 举报

15

主题

69

帖子

308

金币

堂主

Rank: 4

积分
507
QQ
推荐
发表于 2019-6-4 22:29:16 | 只看该作者
属性标签是有用的,但是不能同时写入自定义和配置待定,只能选一个。零件绘制完以后,材质、数量等信息就已经通过属性标签录入了,现在其实就是想让自定义里的信息同样地出现在配置待定里。
因为看到大佬贴的代码里,最后Add的东西,如下:
----
CustPropMgr.Add2 "图样代号", swCustomInfoText, e
----
这里的e和我之前的图号分离宏里面定义的是一样的,然后运行完前一个后,再运行你发的代码,它会同样的读取e的信息,然后再配置待定里面就会出现和自定义里面一样的图样代号。只是好像不知道可不可以把其他的信息都定义为某个字母,这样是不是可以相互关联上?


SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 1 反对 0

使用道具 举报

11

主题

78

帖子

82

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
226
QQ
板凳
发表于 2019-4-27 11:33:48 | 只看该作者

   经典图书
可以用宏来实现自动复制吗,尝试录制宏,没有用
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

12

主题

65

帖子

63

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
208
QQ
地板
发表于 2019-5-3 05:02:03 | 只看该作者
叫我大哥,我可以分享现货给你。。。哈哈哈哈哈
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

11

主题

72

帖子

86

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
208
QQ
5#
发表于 2019-5-15 17:50:44 | 只看该作者

   经典案例图书
大哥好
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

12

主题

85

帖子

71

金币

天使

Rank: 2Rank: 2

积分
150
QQ
6#
发表于 2019-5-24 21:21:09 | 只看该作者
'定义sw



Dim a As Integer

Dim b As String

Dim m As String

Dim e As String

Dim k As String

Dim t As String

Dim c As String

Dim j As Integer

Dim strmat As String

Dim tempvalue As String

Dim Part As Object

Dim swApp As SldWorks.SldWorks

Dim swModelDoc As SldWorks.ModelDoc2

Dim swConfig As SldWorks.Configuration

Dim CustPropMgr As SldWorks.CustomPropertyManager

Dim swModel As SldWorks.ModelDoc2



Sub main()

Set swApp = Application.SldWorks

Set swModelDoc = swApp.ActiveDoc

Set swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration

Set swModel = swApp.ActiveDoc

Set CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguration.Name) '配置特定延伸



'设定变量

c = swApp.ActiveDoc.GetTitle() '零件名

strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)

a = InStr(c, " ") - 1 '重点:分隔标识符,这里是一个空格,也可换成其他符号

If a > 0 Then

k = Left(c, a)

t = Left(LTrim(e), 3)

If t = "GBT" Then

e = "GB/T" + Mid(k, 4)

Else

e = k

End If

b = Mid(c, a + 2)

t = Right(c, 7)

If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then

j = Len(b) - 7 '消除后缀(区分大小写,即含4种)

Else

j = Len(b)

End If

m = Left(b, j)

End If

'删除栏

CustPropMgr.Delete ("图样代号")

CustPropMgr.Delete ("图样名称")

CustPropMgr.Delete ("材料")



'新增

CustPropMgr.Add2 "图样代号", swCustomInfoText, e

CustPropMgr.Add2 "图样名称", swCustomInfoText, m

CustPropMgr.Add2 "数量", swCustomInfoText, ""

CustPropMgr.Add2 "材料", swCustomInfoText, strmat

CustPropMgr.Add2 "单重", swCustomInfoText, ""

CustPropMgr.Add2 "总重", swCustomInfoText, ""

CustPropMgr.Add2 "备注", swCustomInfoText, ""



End Sub

亲试管用,注意图号与名称中间间隔是“空格”
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

16

主题

79

帖子

123

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
273
QQ
7#
发表于 2019-6-4 00:29:48 | 只看该作者

   经典案例图书
感谢大佬,实测有效。但是还是有点小遗憾,不能实现想要的功能。
----
CustPropMgr.Add2 "数量", swCustomInfoText, ""


CustPropMgr.Add2 "材料", swCustomInfoText, strmat

----
如上面这两段代码,材料后面strmat,会直接连接零件的材质,而类似数量这样后面是双引号的,则不能链接属性。
属性编辑标签在自定义和配置待定中只能选择一个,这就很尴尬了。

不知道大佬有没有办法,可以将代码中这些信息直接链接相关属性?感谢大佬
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

56

帖子

84

金币

天使

Rank: 2Rank: 2

积分
195
QQ
8#
发表于 2019-6-4 18:32:09 | 只看该作者
1.有办法在配置特定里增加数量,但那是另外一个宏,是统计整个装配体里的零件自动写数量到你指定是属性名。并且是在配置特定里。
2.材质是要自己选择的,一个宏没办法写不通用的东西。如果想通用只能是关联零件材质属性例如"SW-Material"
3.不知道你用过属性模板,你需要的这些是可以通过属性模板实现的


SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

14

帖子

39

金币

天使

Rank: 2Rank: 2

积分
124

最佳新人

9#
发表于 2020-9-17 16:48:11 | 只看该作者
顶一下 很好
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

312

帖子

26

金币

堂主

Rank: 4

积分
773

最佳新人活跃会员热心会员宣传达人灌水之王

10#
发表于 2025-2-17 20:19:18 | 只看该作者

   经典图书
好好学习,天天向上!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

41

主题

2313

帖子

2988

金币

传奇

Rank: 8Rank: 8

积分
8981

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

11#
发表于 2025-2-18 08:51:51 | 只看该作者
SolidWorks机械工程师网,顶一下。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

415

帖子

93

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1415

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

12#
发表于 2025-2-24 18:06:55 | 只看该作者
水平真的很高哇,
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

1112

帖子

1129

金币

传奇

Rank: 8Rank: 8

积分
3815

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

13#
发表于 2025-4-17 18:57:35 | 只看该作者
楼主太有才了,膜拜中……
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2025-6-3 22:35 , Processed in 0.205570 second(s), 27 queries , Memcache On.

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

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

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