打开组合框中的dwg文件
嘿,伙计们!我不熟悉AutoCAD和VBA。我的任务是开发一个autocad附加程序,允许用户插入自定义的项目绘图框架。我已经设置了userform,用户可以单击组合框并选择一个画框(在本例中为A4、A4纵向、A3和A1),然后单击插入按钮,该按钮将在图纸空间中显示该画框。
目前,我使用了一些代码,使我能够调出画框并在纸空间中显示它,但该代码只允许我调出其中一个框架。我不知道如何更改代码,以便用户可以选择他们想要的帧。以下是我目前掌握的代码:
私有子命令按钮2\u Click()
将myBlock设置为AcadBlockReference
Dim blockInsert(0到2)作为双精度
块插入(0)=-18
块插入(1)=-6
块插入(2)=0
设置myBlock=ThisDrawing。纸张空间。插入块(blockInsert,“C:\Drawing Frame\A1\U Frame.dwg”,1,1,1,0)
末端接头
从代码中可以看出,它只会显示A1帧。我如何编辑此代码,以便最终用户可以使用下拉菜单选择所需的帧。
我希望这是有意义的,希望你能帮助我。
干杯 我正在将您的线程移动到VBA部分。 哦,谢谢你!希望我能得到我需要的帮助 您可能希望使用以下内容:
假设您的组合中有以下项目:
A1
A3
A4
A4纵向
等
这是代码剪报
Option Explicit
'' your folder path here:
Const frameFolder As String = "C:\Drawing Frame\" '<--backslash at the end
Private Sub CommandButton2_Click()
Dim myBlock As AcadBlockReference
Dim blockInsert(0 To 2) As Double
Dim frameDwg As String
frameDwg = ComboBox1.Text '<-- get selected item
Dim dwgName As String
dwgName = frameFolder & frameDwg & "_Frame.dwg"
MsgBox dwgName
blockInsert(0) = -18
blockInsert(1) = -6
blockInsert(2) = 0
Set myBlock = ThisDrawing.PaperSpace.InsertBlock(blockInsert, dwgName, 1, 1, 1, 0)
ComboBox1.ListIndex = -1 '<--refresh combo
End Sub
或
''Go to Tools->References, add Reference to Microsoft Scripting Runtime
''Go to Tools->Options->General->Error Trapping frame check"Break on Unhandled Errors" button
Option Explicit
'' your folder path here:
Const frameFolder As String = "C:\Drawing Frame\" '<--backslash at the end
Function FileExist(dwgName As String) As Boolean
Dim txt As String
Dim fs As Object
Dim fl As Object
Set fs = CreateObject("Scripting.FileSystemObject")
On Error GoTo Err_Control
Set fl = fs.Getfile(dwgName)
If Not fl Is Nothing Then
FileExist = True
Exit Function
End If
Err_Control:
FileExist = False
End Function
Private Sub CommandButton1_Click()
Dim frameDwg As String
frameDwg = ComboBox1.Text
Dim dwgName As String
dwgName = frameFolder & frameDwg & ".dwg" '<--build a full path of drawing here
MsgBox FileExist(dwgName)
End Sub
Private Sub CommandButton2_Click()
Dim myBlock As AcadBlockReference
Dim blockInsert(0 To 2) As Double
Dim frameDwg As String
frameDwg = ComboBox1.Text '<-- get selected item
Dim dwgName As String
dwgName = frameFolder & frameDwg & ".dwg" '<--build a full path of drawing here
If Not FileExist(dwgName) Then
MsgBox "File:" & vbCr & dwgName & " does not exists"
Exit Sub
End If
MsgBox dwgName
blockInsert(0) = -18
blockInsert(1) = -6
blockInsert(2) = 0
Set myBlock = ThisDrawing.PaperSpace.InsertBlock(blockInsert, dwgName, 1, 1, 1, 0)
ComboBox1.ListIndex = -1 '<--refresh combo
End Sub
~'J'~ 嘿我试过代码,它有点工作。现在我只需要点击任务栏上的autocad,它就会出现在layout1上。它不会自动打开autocad。 您必须阅读有关文档级事件处理的文档
在这种情况下,您需要拦截AcadDocument\u Activate事件
我知道对不起 嘿,我会搜索这个编码。
你知道更新图形的方法吗,所以如果我再次启动表单,它将插入新图形并删除前一帧。 在插入他的块后,您可以将其句柄存储在文本框字段中,这是最简单的
在当前程序中
With ThisDrawing
.ActiveLayout = .Layouts.Item("Layout1")
End With
如果你需要插入一个新的
你可以在老街区用
HandleToObject方法(请参阅帮助)
不记得了也许是这样
With ThisDrawing
.ActiveLayout = .Layouts("Layout1")
End With
~'J'~ 我用这段代码自动显示布局1
使用此图纸
.ActiveLayout=。布局。项目(“布局1”)
.应用应用GetAcadState公司
以结束
然而,我正在努力更新代码。 我是新手,有完全相同的应用程序。你能在这里展示你的全部工作吗?从创建组合框开始,在绘图中插入选项。
谢谢
页:
[1]
2