明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2139|回复: 8

[已解答] 调用当前文件名,填写DWG 图形特性的自定义属性,可以做到吗?

[复制链接]
发表于 2015-5-15 21:29:26 | 显示全部楼层 |阅读模式
本帖最后由 阡陌客 于 2015-5-15 21:56 编辑

有没有一个宏可以做到:读取当前文件的文件名,填写到如下菜单看到的 图形特性的“自定义属性”
文件 >> 图形特性 >>  自定义属性

比如:文件名为“TH15008-001 A 外壳.dwg” ,
执行宏或者LSP ,自动填写如下自定义属性



比如当前文件名为“TH15008-001 A 外壳.dwg”
自动获取文件名的前11个字符为图号,或者判断第一个空格之前的字符为图号。
第一个空格与第二个空格之间的字母为版本号A,
后面的字符为名称

因为3D软件 solidworks是可以用宏轻松实现,读取文件名,自动填写自定义属性,然后工程图调用属性值的。
不知道Acad能不能做到。已经搜了mjtd,没找到相关内容,恳请高手指点,谢谢!


附SW的宏
  1. '从这里开始复制:

  2. '定义solidwork

  3. Dim swApp As Object

  4. Dim Part As Object

  5. Dim SelMgr As Object

  6. Dim boolstatus As Boolean

  7. Dim longstatus As Long, longwarnings As Long

  8. Dim Feature As Object

  9. Dim a As Integer

  10. Dim b As String

  11. Dim m As String

  12. Dim e As String

  13. Dim k As String

  14. Dim t As String

  15. Dim c As String

  16. Dim j As Integer

  17. Dim strmat As String

  18. Dim tempvalue As String

  19. '增加n个新变量

  20. Dim cailiao As String
  21. Dim banben As String
  22. Dim mingcheng As String

  23. Sub main()

  24. 'link solidworks

  25. Set swApp = Application.SldWorks

  26. Set Part = swApp.ActiveDoc

  27. Set SelMgr = Part.SelectionManager

  28. swApp.ActiveDoc.ActiveView.FrameState = 1

  29. '设定变量

  30. c = swApp.ActiveDoc.GetTitle() '文件名

  31. 'cailiao = swApp.ActiveDoc.GetMaterial()

  32. strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34) '获取材料表达式

  33. '定义各自定义属性

  34. blnretval = Part.DeleteCustomInfo2("", "文件名")

  35. blnretval = Part.DeleteCustomInfo2("", "代号")

  36. blnretval = Part.DeleteCustomInfo2("", "版本")

  37. blnretval = Part.DeleteCustomInfo2("", "名称")

  38. blnretval = Part.DeleteCustomInfo2("", "设计")

  39. blnretval = Part.DeleteCustomInfo2("", "审核")

  40. blnretval = Part.DeleteCustomInfo2("", "工艺")

  41. 'blnretval = Part.DeleteCustomInfo2("", "材料")

  42. 'blnretval = Part.DeleteCustomInfo2("", "表面处理")

  43. a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格

  44. If a > 0 Then

  45.     k = Left(c, a)

  46.     t = Left(LTrim(e), 3)

  47.     If t = "GBT" Then

  48.         e = "GB/T" + Mid(k, 4)
  49.     Else

  50.         e = k

  51.     End If '以上取图号完成
  52.    
  53.     b = Mid(c, a + 2) '得到(版本+名称+后缀名)

  54.     t = Right(c, 7) '取后缀名,并进行判断

  55.     If t = ".SLDPRT" Or t = ".SLDASM" Then

  56.         j = Len(b) - 7

  57.     Else

  58.         j = Len(b)

  59.     End If

  60.     m = Left(b, j)
  61.    
  62.    
  63.     banben = Left(m, 1)
  64.     mingcheng = Mid(m, 3)

  65. End If


  66. blnretval = Part.AddCustomInfo3("", "文件名", swCustomInfoText, c)  '文件名

  67. blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号

  68. blnretval = Part.AddCustomInfo3("", "版本", swCustomInfoText, banben)  '版本

  69. blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, mingcheng)  '名称

  70. blnretval = Part.AddCustomInfo3("", "设计", swCustomInfoText, " ") '填写设计者名字

  71. blnretval = Part.AddCustomInfo3("", "审核", swCustomInfoText, " ")  '填写审核人名字

  72. blnretval = Part.AddCustomInfo3("", "工艺", swCustomInfoText, " ") '填写工艺人名字

  73. 'blnretval = Part.AddCustomInfo3("", "材料", swCustomInfoText, strmat)

  74. 'blnretval = Part.AddCustomInfo3("", "表面处理", swCustomInfoText, " ")

  75. End Sub



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2015-5-15 21:49:03 | 显示全部楼层
文件 >> 图形特性 >>  自定义属性
发表于 2015-5-16 09:18:42 | 显示全部楼层
(setq doc (vla-get-activeDocument (vlax-get-acad-object)))
(setq info (vla-get-SummaryInfo doc))
(vla-AddCustomInfo info "比例" "1:16")
;支持的方法:
;   AddCustomInfo (2)
;   GetCustomByIndex (3)
;   GetCustomByKey (2)
;   NumCustomInfo ()
;   RemoveCustomByIndex (1)
;   RemoveCustomByKey (1)
;   SetCustomByIndex (3)
;   SetCustomByKey (2)
发表于 2015-5-16 11:21:26 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq        dwgname        (getvar 'dwgname)
  3.         n        (VL-STRING-SEARCH "." dwgname)
  4.         dwgname        (substr dwgname 1 n)
  5.         n        (VL-STRING-SEARCH " " dwgname)
  6.         th        (substr dwgname 1 n)
  7.         n        (+ n 2)
  8.         dwgname        (substr dwgname n)
  9.         n        (VL-STRING-SEARCH " " dwgname)
  10.         bb        (substr dwgname 1 n)
  11.         mc        (substr dwgname (+ 2 n))
  12.   )
  13.   (setq        SummaryInfo
  14.          (vla-get-SummaryInfo
  15.            (vla-get-ActiveDocument (vlax-get-acad-object))
  16.          )
  17.   ) ;_ 获取SummaryInfo对象
  18.   (mapcar
  19.     '(lambda (key newVal)
  20.        (if (VL-CATCH-ALL-ERROR-P
  21.              (VL-CATCH-ALL-APPLY
  22.                'vla-GetCustomByKey
  23.                (list
  24.                  SummaryInfo
  25.                  key
  26.                  'val
  27.                )
  28.              )
  29.            )
  30.          (VL-CATCH-ALL-APPLY
  31.            'vla-AddCustomInfo
  32.            (list
  33.              SummaryInfo
  34.              key
  35.              newVal
  36.            )
  37.          )
  38.          (VL-CATCH-ALL-APPLY
  39.            'vla-SetCustomByKey
  40.            (list
  41.              SummaryInfo
  42.              key
  43.              newVal
  44.            )
  45.          )
  46.        )
  47.      )
  48.     (list "图号" "版本" "名称")
  49.     (list th bb mc)
  50.   )
  51.   (princ)
  52. )

评分

参与人数 2明经币 +1 金钱 +10 收起 理由
阡陌客 + 10 很给力! 非常感谢!
vectra + 1 神马都是浮云

查看全部评分

 楼主| 发表于 2015-5-18 19:40:20 | 显示全部楼层
楼上的斑竹 太厉害了,请允许我膜拜一下
 楼主| 发表于 2015-5-18 19:43:44 | 显示全部楼层
我没找到怎么把 [未解决]红字   改成[已解决]的绿字的办法,请斑竹帮忙操作一下,感谢!
发表于 2020-8-30 16:39:09 | 显示全部楼层
谢谢老师分享
发表于 2020-11-22 12:30:59 | 显示全部楼层
的确是非常厉害啊
发表于 2022-3-8 09:35:07 | 显示全部楼层
第一次接触自定义属性这个概念。
主要用途是什么呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-14 14:40 , Processed in 0.311992 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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