Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations KootK on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

execute the Mview command more than one time

Status
Not open for further replies.

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
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor