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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: q2742925
打印 上一主题 下一主题

无需运行solidworks程序, 批量修改档案属性

[复制链接]

3

主题

40

帖子

18

金币

天使

Rank: 2Rank: 2

积分
81
QQ
41#
发表于 2014-11-27 00:24:59 | 只看该作者

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

使用道具 举报

2

主题

47

帖子

17

金币

天使

Rank: 2Rank: 2

积分
55
QQ
42#
发表于 2014-11-27 11:37:13 | 只看该作者
由于当档案被其他软体正在开启的时候, 例如SW开启了其中某几个的工程图, 就无法取读这些档案.
有个想法, 在 If Not swDoc Is Nothing Then 之后插入 Cells(RollNumber, 2).Interior.ColorIndex = 4,
以颜色显示档案是否已经被处理.
颜色的代表值见下图: (图片截图自Excel-VBA-Help)



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

使用道具 举报

5

主题

44

帖子

37

金币

天使

Rank: 2Rank: 2

积分
131
QQ
43#
发表于 2014-11-27 20:15:39 | 只看该作者

   经典图书
我的进度慢了~

我目前只会改这个"开启档案"
(其实没中文註解,VBA的内容不是很懂)

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

使用道具 举报

7

主题

44

帖子

41

金币

天使

Rank: 2Rank: 2

积分
131
QQ
44#
发表于 2014-11-28 02:29:07 | 只看该作者
珠蒂妹真赞啊! (竖起大拇指的表情)
可以教教大佬骚窝灵剑剑法吗? (多个类型的程式码)
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

43

帖子

50

金币

天使

Rank: 2Rank: 2

积分
149
QQ
45#
发表于 2014-11-29 00:35:59 | 只看该作者

   经典案例图书
因为有宫~当然就需要灵剑咩

我该认真一点,请问"多个类型的程式码"这不是很懂

我比较想知道大佬的"独孤九剑"招式~~听说失传了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

35

帖子

16

金币

天使

Rank: 2Rank: 2

积分
89
QQ
46#
发表于 2014-12-1 14:50:34 | 只看该作者
就是珠蒂妹贴图的效果.
如下图:
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

45

帖子

17

金币

天使

Rank: 2Rank: 2

积分
85
QQ
47#
发表于 2014-12-3 05:43:34 | 只看该作者

   经典案例图书
已了解~
茱蒂是这么做的 加入以下画红框
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

35

帖子

38

金币

天使

Rank: 2Rank: 2

积分
119
QQ
48#
发表于 2014-12-5 22:31:55 | 只看该作者
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

46

帖子

21

金币

天使

Rank: 2Rank: 2

积分
96
QQ
49#
发表于 2014-12-6 10:01:43 | 只看该作者
提取工程图内的零组件属性的程式码已经写好了, 相信对臭哥有一定的帮助.
Sub ReadModelPrpInSlddrw()
Dim swModel As SwDMDocument10
Dim dmSearchOpt As SwDMSearchOption
Set objClassfac = CreateObject("SwDocumentMgr.SwDMClassFactory")
SWDMLicenseKey = InputBox("输入许可证密码")
If SWDMLicenseKey = "" Then Exit Sub
Set swDM = objClassfac.GetApplication(SWDMLicenseKey) '启动SWDM
HeaderRoll = 2
RollNumber = HeaderRoll + 1
PathName = ActiveSheet.Cells(RollNumber, 1) '读取第一个路径的值
While Not (PathName = "" Or PathName = 0 Or IsEmpty(PathName)) '直到读完路径栏
  Filename = ActiveSheet.Cells(RollNumber, 2)
  Set swDoc = swDM.GetDocument(PathName & Filename, 3, False, mOpenErrors) '开启工程图
  If Not swDoc Is Nothing Then
  RefModelNames = swDoc.GetAllExternalReferences(dmSearchOpt) '获取参考档案名称
  If Not TypeName(RefModelNames) = "Empty" Then '过滤没有参考档案
    Cells(RollNumber, 2).Interior.ColorIndex = 8
    RefModelName = RefModelNames(0) '获取第一个参考档案的名称
    If "SLDPRT" = UCase(Left(RefModelName, 6)) Then '分辨参考档案的类型
      RefModelTYpe = 1 '这是零件
    Else
      RefModelTYpe = 2 '这是组合件
    End If
    Set swModel = swDM.GetDocument(RefModelName, RefModelTYpe, False, mOpenErrors) '开启
    ColumnNumber = 3
    PropName = Cells(HeaderRoll, ColumnNumber)
    While Not (PropName = "" Or PropName = 0 Or IsEmpty(PropName)) '直到读完表头
      PropNames = swModel.GetCustomPropertyNames '获取模型内所有属性的名称
      HasPropName = False
      If Not IsEmpty(PropNames) Then
      For i = 0 To UBound(PropNames) '核对书否存在表单上的属性名称
        If UCase(PropNames(i)) = UCase(PropName) Then HasPropName = True
      Next
      End If
      If HasPropName Then
      PropValue = swModel.GetCustomProperty(PropName, swDmCustomInfoText) '获取参考档案的属性
      Cells(RollNumber, ColumnNumber) = PropValue '写入属性到表格
      Else
      Cells(RollNumber, ColumnNumber) = "-----" '写入代表不存在属性的字符
      End If
      ColumnNumber = ColumnNumber + 1 '下一栏
      PropName = ActiveSheet.Cells(HeaderRoll, ColumnNumber)
    Wend '回到>直到读完表头
    swModel.CloseDoc '关闭参考档案
    Cells(RollNumber, ColumnNumber) = RefModelName '写入参考档案名称到表格到行末
    End If
  swDoc.CloseDoc '关闭工程图
  End If
  RollNumber = RollNumber + 1 '下一列
  PathName = ActiveSheet.Cells(RollNumber, 1)
Wend '回到>直到读完路径栏
End Sub

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

使用道具 举报

5

主题

52

帖子

31

金币

天使

Rank: 2Rank: 2

积分
119
QQ
50#
发表于 2014-12-9 09:21:06 | 只看该作者

   经典图书
谢谢闷大佬

工作告个段落就来研究看看怎么使用它。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

53

帖子

35

金币

天使

Rank: 2Rank: 2

积分
117
QQ
51#
发表于 2014-12-11 02:52:17 | 只看该作者
回覆大佬,阿丹岂敢怠惰…是还没想到如何做…><利用假日再研究!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

45

帖子

22

金币

天使

Rank: 2Rank: 2

积分
70
QQ
52#
发表于 2014-12-12 12:11:23 | 只看该作者
请问大佬,54#的代码就是用于这道题目吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

51

帖子

19

金币

天使

Rank: 2Rank: 2

积分
87
QQ
53#
发表于 2014-12-15 11:00:00 | 只看该作者
请问臭大, 有试过54#那段程式码吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

33

帖子

14

金币

天使

Rank: 2Rank: 2

积分
54
QQ
54#
发表于 2014-12-17 08:50:24 | 只看该作者
大佬抱歉,还在赶工作
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

45

帖子

25

金币

天使

Rank: 2Rank: 2

积分
58
QQ
55#
发表于 2014-12-17 17:15:40 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

还以可讨论的:
1. 可否顾及零件和组合及其模型组态
2. 没有 SWDM-API 的 Key, 可否用较慢的 SW-API 代替, 慢总比没得用好吧
3. 读取及写入属性时, 是否一併处理"摘要"
4. 能否利用近似方法, 批量修改档案名称, 重点是不损关联
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

45

帖子

20

金币

天使

Rank: 2Rank: 2

积分
78
QQ
56#
发表于 2014-12-18 00:17:28 | 只看该作者

   经典案例图书
1.如果零件有两个组态特徵,数量不同,工序不同,这样也能连结吗@@

另外,如果一张工程图里放置多个零件,不知道能不能连结,避免输入错误。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

33

帖子

12

金币

天使

Rank: 2Rank: 2

积分
59
QQ
57#
发表于 2014-12-18 07:19:15 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

请问大佬
茱蒂不了解这个程式使用情形
又加上没 "SWDM-API 许可号码" 无法测试
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

49

帖子

47

金币

天使

Rank: 2Rank: 2

积分
153
QQ
58#
发表于 2014-12-18 12:13:37 | 只看该作者

   经典案例图书
回覆大佬

我大概知道54# 代码的意思(不知理解是否正确)

在Excel巨集时
开启工程图,用此代码可以读取到 属于这个工程图内 零件之属性值

我的作法~
1.开工程图
2.读取零件属性
3.修改零件属性再写入<=昨错的

10/22补充
正确 => 修改属性后,写入修正是"工程图属性"非零件属性
因为,开启档案类型,写入的地方,是以它为主

修改前




修改后->写入修正是"工程图属性"非零件属性




PS.第二篇,无需 SWDM-API 许可号码 我在那篇有回覆
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

42

帖子

25

金币

天使

Rank: 2Rank: 2

积分
88
QQ
59#
发表于 2014-12-18 12:22:24 | 只看该作者
以下几点向闷大佬请教与讨论~
1.阿丹反覆试验这些代码,发现除了可以实现几个「属性栏位完全空白」的SW档案,也可以批次生成新的属性或是修改,
那是否也可以做到批次「删除」属性栏呢?若是不在此帖应该讨论的范畴,再烦请大佬告诉我~^^
2.#54楼的代码管理员有测试过了,这里就不再重覆贴图。
按大佬 SLDDRW()1 中的代码,看着应该是将变更后的属性值批次存回去当初打开的档案里…
请问大佬读到工程图中的零组件的属性了,那…更改完属性值以后,要如何存回对应的零件中,而不是工程图中呢?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

38

帖子

12

金币

天使

Rank: 2Rank: 2

积分
75
QQ
60#
发表于 2014-12-19 05:12:56 | 只看该作者
非常谢谢大佬这么晚了还抽空为阿丹释疑说明。
实在是我们几个晚辈自行私下讨论,结果状况百出、得到的情况不尽相同…
才努力整合了一下向您提问。
诚如大佬所说,如果我们不就发问的本质深入探索,而是假想额外的功能(例如我楼上的提问…)
那么此帖将逐渐失去参与讨论的积极性。
再次谢谢您的说明!^^
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

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

手机版|小黑屋| GMT+8, 2025-6-30 20:28 , Processed in 0.430166 second(s), 22 queries , Memcache On.

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

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

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