PS“编辑帖子”按钮也不起作用,我必须复制并粘贴笑脸 对不起,我试过了,但不知道如何将代码放入代码标记中。 我刚刚习惯了手动输入,把这个放在开头,没有空间,可以通过编辑做到,没有问题,有时我键入一个错误,必须回去修复。
结束是
Steven-g关于向Autocad发送命令的好消息将保留一份副本。我知道这是可以做到的。
您可以从VBA调用lisp,这是一个有趣的想法。
此图纸。SendCommand“(load”+Chr(34)+“s:/autodesk/vba/xxxblockedit.lsp”+Chr(34)+“)+vbCr 嗨,BIGAL&steven-g
我尝试了steven-g的方法,但这需要我知道标签的原始值是什么。
史蒂文-有没有办法绕过原值要求?可能是外卡(尝试过,但不起作用)。
或
ATTIN函数(在ATTOUT.LSP中)可以工作,但它会提示输入文件。我不懂LISP,所以不知道如何修改它。
BIGAL-你能给我发一个修改版的ATTOUT吗。LSP或告诉我要修改哪一行?
我只需要阁楼部分。
JG公司 attedit要求您知道现有的值,并且还允许您添加诸如块和标记值之类的内容,以便您可以缩小到所需的确切块属性。与使用属性句柄的attin命令相反。您说您已经使用了attout命令,这意味着您在那里有旧的属性值,如果您在Excel中工作以保留它们的记录,那么这些值必须在Excel中。
如果不是,那么将上面的代码改编为使用attin命令应该不会有太大的问题,用于从Excel VBA向Autocad发送命令的方法使用包含以下内容的行:
.ActiveDocument.SendCommand 我们有2000多张图纸需要用这个脚本更新。因此,对每个应用程序使用ATTOUT命令将非常繁琐。
我使用一个图形(所有其他图形都是从该模板创建的)的ATTOUT输出来获取块和标记键。然后,我将使用电子表格中指定的值更新所有图形,无论当前有什么。
这样做的原因是为了应用标准值,这是制图人员迄今为止尚未坚持的。
我知道(感谢BIGAL)如何将命令发送到AutoCAD以运行修改后的ATTIN LSP。但是ATTIN需要选择一个文件,我想自动运行它(怀疑有人想坐在那里选择2000个输入文件)。
我试图用BIGAL提供的代码修改ATTIN函数。
朱
你应该仔细看看我发布的VBA,它不需要标签名或Attin,它使用属性创建顺序工作99%的时间不会进入现在。因此,它适用于任何块,但您必须清楚地知道其名称。你甚至不必和block在同一个空间/布局中,它会更新。双击一个块,您将看到顺序。
如果我有5个属性,想更新第2个和第4个属性,像这样的东西会工作。
attribs(1).TextString = "Freds plans"
attribs(3).TextString = "Revision A"
attribs(1).Update
attribs(3).Update
很简单
Your Code Here=
Your Code Here您可以手动键入或使用#插入标记。
一些最新的浏览器似乎对所见即所得回复框有问题。进入“设置”>“常规设置”并滚动至“其他选项”,然后在“消息编辑器”界面下选择底部标准编辑器。
嗨,比格尔,
我确实看过你的代码,并试图根据我的要求修改它,但无法使其正常工作。
我有61个属性需要更改(如果它们不是空的),我尝试循环每个属性。但我的画什么也没发生。
Sub Update_DWG() ' Performed in a loop for each drawing (over 2000)
On Error Resume Next
Set ACAD = GetObject(, "AutoCAD.Application")
If Err.Description > vbNullString Then
Err.Clear
Set ACAD = CreateObject("AutoCAD.Application")
End If
ACAD.Visible = True
xDWGPath = "C:\Users\297560\Documents\Development\AutoCAD Update\"
xDWGFile = xDWGNo & ".dwg" '- set in a calling sub
xDWGFull = xDWGPath & xDWGFile
ACAD.Documents.Open (xDWGPath & xDWGFile)
'
BLOCK_NAME = "SLR_TfNSW_A1_Tblock"
FilterDXFCode(1) = 2
FilterDXFVal(1) = "SLR_TfNSW_A1_Tblock"
SS.Select acSelectionSetAll, , , FilterDXFCode, FilterDXFVal
For Cntr = 0 To SS.Count - 1
If SS.Item(Cntr).Name = BLOCK_NAME Then
If xValue01 <> "" Then
attribs(1).TextString = xValue01
attribs(1).Update
End If
ACAD.ActiveDocument.SendCommand "qsave close" & vbCr
对不起,我还没准备好就发了
页:
1
[2]