乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: grazwelis

[编程交流] 属性名等于文件名

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:51:43 | 显示全部楼层
 
 
Dave没有问题,但如果我升级,这是一个很好的解决方案——听起来很容易修复。
回复

使用道具 举报

3

主题

7

帖子

3

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 15:52:52 | 显示全部楼层
 
再次感谢,
Field是个好主意,但我认为VBA更好
因为我们可以变得更灵活。
例如,我需要这样:
我有示例文件名,需要这样解码
图纸13_1(桌面描述)。图纸
标记:值:
文件名。。。图纸13
页1.
图纸17_2(说明)。图纸
文件名。。。图纸17
页2.
图纸01_7(bla bla)。图纸
文件名。。。图纸01
页7.
所以我对VBA编辑非常熟悉,我有Autocad2009。
也许有人是VBA中的wizar,可以给我adwise
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:57:29 | 显示全部楼层
我想你可以在LISP中使用vl字符串搜索来分离术语。。。
 
很抱歉强调了LISP-但我的VBA技能不存在。。。
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2022-7-6 16:00:45 | 显示全部楼层
在VBA中使用Lee的原始帖子相对简单
 
 
您可以提取这些值,然后在VBA中处理它们。您需要更多的代码来将它们写回属性,但这并不太复杂。然而,我确实有工作必须先完成,所以我现在就离开。。。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:02:43 | 显示全部楼层
正如Dave所说,使用我发布的值,可以检索文件名,然后使用VBA或LISP相应地更新属性。
 
更新属性并不太困难-只是替换各种DXF代码。
 
只是为了验证-
 
您有两个属性:文件名和页面,
 
您希望这些的属性值分别是图形名称和页码。
 
我接近了吗?
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2022-7-6 16:08:59 | 显示全部楼层
下面是我用来将文件名作为字段添加到绘图空白中的代码。
  1. Public Sub PopCadFile()
  2. '%<\AcVar Filename \f "%tc1%fn2">%
  3. Dim myEntity As AcadEntity
  4. Dim mySelSet As AcadSelectionSet
  5. Dim TempName As String
  6. Dim gpCode(0 To 1) As Integer
  7. Dim dataValue(0 To 1) As Variant
  8. Dim groupCode As Variant
  9. Dim dataCode As Variant
  10. Dim myAttrib As Variant
  11. Dim myCurrentAtt As Variant
  12. TempName = "%<\AcVar Filename \f " & Chr$(34) & "%tc1%fn2" & Chr$(34) & ">%"
  13. gpCode(0) = 0 'item
  14. gpCode(1) = 2 '?
  15. groupCode = gpCode
  16. dataValue(0) = "INSERT" 'item type
  17. dataValue(1) = "STL*" '?
  18. dataCode = dataValue
  19. Set mySelSet = ThisDrawing.SelectionSets.Add("Blocks")
  20. mySelSet.Select acSelectionSetAll, , , groupCode, dataCode
  21. For Each myEntity In mySelSet
  22.    myAttrib = myEntity.GetAttributes
  23.    For Each myCurrentAtt In myAttrib
  24.        If myCurrentAtt.TagString = "CADFILE" Then myCurrentAtt.TextString = TempName
  25.        If myCurrentAtt.TagString = "XXX-XXX.DWG" Then myCurrentAtt.TextString = TempName
  26.    Next myCurrentAtt
  27. Next myEntity
  28. ThisDrawing.SelectionSets.Item("Blocks").Delete
  29. End Sub

 
我们所有的空白都是从STL开始的,所以我搜索了一个绘图空白。根据绘图的年龄,我想要的属性是CADFILE或XXX-XXX。图纸。TempName是字段值,请在其中插入您自己的值。
回复

使用道具 举报

3

主题

7

帖子

3

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 16:10:28 | 显示全部楼层
 
你当然没事
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:14:07 | 显示全部楼层
好的,如果你不熟悉Dave的代码,请告诉我,我会看看是否可以为你设计一些东西来完成这项工作
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 20:08 , Processed in 0.328475 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表