Lee Mac 发表于 2022-7-6 15:51:43

 
 
Dave没有问题,但如果我升级,这是一个很好的解决方案——听起来很容易修复。

grazwelis 发表于 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
谢谢

Lee Mac 发表于 2022-7-6 15:57:29

我想你可以在LISP中使用vl字符串搜索来分离术语。。。
 
很抱歉强调了LISP-但我的VBA技能不存在。。。

dbroada 发表于 2022-7-6 16:00:45

在VBA中使用Lee的原始帖子相对简单
 
 
您可以提取这些值,然后在VBA中处理它们。您需要更多的代码来将它们写回属性,但这并不太复杂。然而,我确实有工作必须先完成,所以我现在就离开。。。。。

Lee Mac 发表于 2022-7-6 16:02:43

正如Dave所说,使用我发布的值,可以检索文件名,然后使用VBA或LISP相应地更新属性。
 
更新属性并不太困难-只是替换各种DXF代码。
 
只是为了验证-
 
您有两个属性:文件名和页面,
 
您希望这些的属性值分别是图形名称和页码。
 
我接近了吗?

dbroada 发表于 2022-7-6 16:08:59

下面是我用来将文件名作为字段添加到绘图空白中的代码。
Public Sub PopCadFile()
'%<\AcVar Filename \f "%tc1%fn2">%
Dim myEntity As AcadEntity
Dim mySelSet As AcadSelectionSet
Dim TempName As String
Dim gpCode(0 To 1) As Integer
Dim dataValue(0 To 1) As Variant
Dim groupCode As Variant
Dim dataCode As Variant
Dim myAttrib As Variant
Dim myCurrentAtt As Variant
TempName = "%<\AcVar Filename \f " & Chr$(34) & "%tc1%fn2" & Chr$(34) & ">%"
gpCode(0) = 0 'item
gpCode(1) = 2 '?
groupCode = gpCode
dataValue(0) = "INSERT" 'item type
dataValue(1) = "STL*" '?
dataCode = dataValue
Set mySelSet = ThisDrawing.SelectionSets.Add("Blocks")
mySelSet.Select acSelectionSetAll, , , groupCode, dataCode
For Each myEntity In mySelSet
   myAttrib = myEntity.GetAttributes
   For Each myCurrentAtt In myAttrib
       If myCurrentAtt.TagString = "CADFILE" Then myCurrentAtt.TextString = TempName
       If myCurrentAtt.TagString = "XXX-XXX.DWG" Then myCurrentAtt.TextString = TempName
   Next myCurrentAtt
Next myEntity
ThisDrawing.SelectionSets.Item("Blocks").Delete
End Sub

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

grazwelis 发表于 2022-7-6 16:10:28

 
你当然没事

Lee Mac 发表于 2022-7-6 16:14:07

好的,如果你不熟悉Dave的代码,请告诉我,我会看看是否可以为你设计一些东西来完成这项工作
页: 1 [2]
查看完整版本: 属性名等于文件名