09-23-2019
05:02 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
09-23-2019
05:02 AM
Hello,
I tried another way. This code will create an opposite view directly.
Option Explicit
Sub CreateOppositeView()
Dim oDrawingDoc As DrawingDocument
Set oDrawingDoc = ThisApplication.ActiveDocument
Dim oSourceView As DrawingView
Set oSourceView = oDrawingDoc.ActiveSheet.DrawingViews(1)
' Document
Dim oSourceDoc As Document
Set oSourceDoc = oSourceView.ReferencedDocumentDescriptor.ReferencedDocument
' Position
Dim oViewPosition As Point2d
Set oViewPosition = oSourceView.Position.Copy
oViewPosition.X = oViewPosition.X + oSourceView.Width + 1
' Scale
Dim viewScale As Double
viewScale = oSourceView.Scale
' ViewStyle
Dim viewStyle As DrawingViewStyleEnum
viewStyle = oSourceView.viewStyle
' ModelViewName
Dim modelViewName As String
modelViewName = oSourceView.ActiveDesignViewRepresentation
' Camera
Dim oCamera As Camera
Set oCamera = ThisApplication.TransientObjects.CreateCamera
oCamera.Eye = GetOppositeEyePoint(oSourceView.Camera)
oCamera.Target = oSourceView.Camera.Target
oCamera.UpVector = oSourceView.Camera.UpVector
' Create new DrawingView
Dim oNewDrawingView As DrawingView
Set oNewDrawingView = oDrawingDoc.ActiveSheet.DrawingViews.AddBaseView(oSourceDoc, oViewPosition, viewScale, kArbitraryViewOrientation, viewStyle, modelViewName, oCamera)
End Sub
Function GetOppositeEyePoint(oCamera As Camera) As Point
Dim X As Double
Dim Y As Double
Dim Z As Double
X = oCamera.Target.X * 2 - oCamera.Eye.X
Y = oCamera.Target.Y * 2 - oCamera.Eye.Y
Z = oCamera.Target.Z * 2 - oCamera.Eye.Z
Set GetOppositeEyePoint = ThisApplication.TransientGeometry.CreatePoint(X, Y, Z)
End Function=====
Freeradical
Hideo Yamada