Hamidreza1973
Industrial
- Feb 5, 2022
- 15
Dear All,
I am new in Autocad VBA so please accept my appologize in advance. I have to right a vba code for autocad to:
1- Ask user that how many layouts to be created
2- Create the number of layouts
3- Delete all the content (Object) in all layouts
4- execute the Mview command and ask user to select the view to layout1 up to layout required.
I wrote the following code, but up to step 4 it works correctly but only onetime execute the step 4.
Previously one guy told me I have to use the Utility command, and I used it but since I am new in this field it should not be corrected.
You are kindly requested to review my code and let me know what I have to do.
Best Regards
Private Sub Create_Empty_layout()[/highlight]
Dim currentLayout As AcadLayout
Dim LayoutName As String
Dim NumberofLayouts As Integer, NumberofRequired As Integer, Count As Integer
Dim I As Integer
ThisDrawing.ActiveSpace = acPaperSpace
NumberofRequired = UserForm1.TextBox1.Text
'Delete all current layout except "Model" layout
For Each currentLayout In ThisDrawing.Layouts
LayoutName = currentLayout.Name
If LayoutName <> "Model" Then currentLayout.Delete
Next
'No need to create layout1 beacuse its atomatically created after deleting all layouts
'Just delete the content
ThisDrawing.ActiveLayout = ThisDrawing.Layouts("Layout1")
For Each objAcadObject In ThisDrawing.PaperSpace
If TypeName(objAcadObject) = "IAcadPViewport" Then objAcadObject.Delete
Next
'Now we have to create from layout2 up to number of required ones
'Just delete the content
For Count = 2 To NumberofRequired
ThisDrawing.Layouts.Add ("Layout" & Count)
ThisDrawing.ActiveLayout = ThisDrawing.Layouts("Layout" & Count)
For Each objAcadObject In ThisDrawing.PaperSpace
If TypeName(objAcadObject) = "IAcadPViewport" Then objAcadObject.Delete
Next
Next
UserForm1.Hide
For I = 1 To NumberofRequired
ThisDrawing.ActiveLayout = ThisDrawing.Layouts("Layout" & I)
With ThisDrawing.Utility
.InitializeUserInput 0, "Mview Cancel"
ThisDrawing.SendCommand "_Mview _New" & vbCr
End With
Next I
End Sub
I am new in Autocad VBA so please accept my appologize in advance. I have to right a vba code for autocad to:
1- Ask user that how many layouts to be created
2- Create the number of layouts
3- Delete all the content (Object) in all layouts
4- execute the Mview command and ask user to select the view to layout1 up to layout required.
I wrote the following code, but up to step 4 it works correctly but only onetime execute the step 4.
Previously one guy told me I have to use the Utility command, and I used it but since I am new in this field it should not be corrected.
You are kindly requested to review my code and let me know what I have to do.
Best Regards
Private Sub Create_Empty_layout()[/highlight]
Dim currentLayout As AcadLayout
Dim LayoutName As String
Dim NumberofLayouts As Integer, NumberofRequired As Integer, Count As Integer
Dim I As Integer
ThisDrawing.ActiveSpace = acPaperSpace
NumberofRequired = UserForm1.TextBox1.Text
'Delete all current layout except "Model" layout
For Each currentLayout In ThisDrawing.Layouts
LayoutName = currentLayout.Name
If LayoutName <> "Model" Then currentLayout.Delete
Next
'No need to create layout1 beacuse its atomatically created after deleting all layouts
'Just delete the content
ThisDrawing.ActiveLayout = ThisDrawing.Layouts("Layout1")
For Each objAcadObject In ThisDrawing.PaperSpace
If TypeName(objAcadObject) = "IAcadPViewport" Then objAcadObject.Delete
Next
'Now we have to create from layout2 up to number of required ones
'Just delete the content
For Count = 2 To NumberofRequired
ThisDrawing.Layouts.Add ("Layout" & Count)
ThisDrawing.ActiveLayout = ThisDrawing.Layouts("Layout" & Count)
For Each objAcadObject In ThisDrawing.PaperSpace
If TypeName(objAcadObject) = "IAcadPViewport" Then objAcadObject.Delete
Next
Next
UserForm1.Hide
For I = 1 To NumberofRequired
ThisDrawing.ActiveLayout = ThisDrawing.Layouts("Layout" & I)
With ThisDrawing.Utility
.InitializeUserInput 0, "Mview Cancel"
ThisDrawing.SendCommand "_Mview _New" & vbCr
End With
Next I
End Sub