图号分离
软件小白一枚,因为公司需要统一零件模板,并且和我们搭建的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
---
想请教下大拿们,这个代码要怎么修改才能管用。之前的图号分离宏,可以让所有属性出现在自定义里。或者有没有办法加一段自动复制自定义里面属性到配置待定里去的代码?
在线等大神解惑
可以用宏来实现自动复制吗,尝试录制宏,没有用 叫我大哥,我可以分享现货给你。。。哈哈哈哈哈 Wukui* 发表于 2019-4-22 16:58
叫我大哥,我可以分享现货给你。。。哈哈哈哈哈
大哥好:)
'定义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
亲试管用,注意图号与名称中间间隔是“空格” 金卯刀-劉 发表于 2019-4-22 20:15
'定义sw
感谢大佬,实测有效。但是还是有点小遗憾,不能实现想要的功能。
----
CustPropMgr.Add2 "数量", swCustomInfoText, ""
CustPropMgr.Add2 "材料", swCustomInfoText, strmat
----
如上面这两段代码,材料后面strmat,会直接连接零件的材质,而类似数量这样后面是双引号的,则不能链接属性。
属性编辑标签在自定义和配置待定中只能选择一个,这就很尴尬了。
不知道大佬有没有办法,可以将代码中这些信息直接链接相关属性?感谢大佬
呐,你要怎样 发表于 2019-4-23 09:24
感谢大佬,实测有效。但是还是有点小遗憾,不能实现想要的功能。
----
CustPropMgr.Add2 "数量", swCus ...
1.有办法在配置特定里增加数量,但那是另外一个宏,是统计整个装配体里的零件自动写数量到你指定是属性名。并且是在配置特定里。
2.材质是要自己选择的,一个宏没办法写不通用的东西。如果想通用只能是关联零件材质属性例如"SW-Material"
3.不知道你用过属性模板,你需要的这些是可以通过属性模板实现的
金卯刀-劉 发表于 2019-4-23 15:40
1.有办法在配置特定里增加数量,但那是另外一个宏,是统计整个装配体里的零件自动写数量到你指定是属性名 ...
属性标签是有用的,但是不能同时写入自定义和配置待定,只能选一个。零件绘制完以后,材质、数量等信息就已经通过属性标签录入了,现在其实就是想让自定义里的信息同样地出现在配置待定里。
因为看到大佬贴的代码里,最后Add的东西,如下:
----
CustPropMgr.Add2 "图样代号", swCustomInfoText, e
----
这里的e和我之前的图号分离宏里面定义的是一样的,然后运行完前一个后,再运行你发的代码,它会同样的读取e的信息,然后再配置待定里面就会出现和自定义里面一样的图样代号。只是好像不知道可不可以把其他的信息都定义为某个字母,这样是不是可以相互关联上?
看起来不错 金卯刀-劉 发表于 2019-4-23 15:40
1.有办法在配置特定里增加数量,但那是另外一个宏,是统计整个装配体里的零件自动写数量到你指定是属性名 ...
你好,请问一下图号分离能实现三段分离吗?比如图号 图名 备注
页:
[1]
2