Veiwports with TranslateCoordinates and CHSPACE

the code below will draw a viewport in paper space and zoom to an area in model space. It will then create a circle in model space and then change that circle to to papers pace while still keeping the circle in the same location.

Note for this to work, the MSpace has to be set as true. Once the CHSPACE command is used. It atomically changes the MSPACE to false.

    Set ACLayout = acadDoc.Layouts.Add(pgnum)
    acadDoc.ActiveLayout = ACLayout    

    Dim viewportCenter(0 To 2) As Double
    viewportCenter(0) = 0.762: viewportCenter(1) = 0.8
    Set pviewportObj = acadDoc.PaperSpace.AddPViewport(viewportCenter, 17, 7)
    pviewportObj.Layer = "viewport"
    pviewportObj.Display True
    acadDoc.MSpace = True
    
    zoompoint1(0) = -1: zoompoint1(1) = -20
    zoompoint2(0) = 1: zoompoint2(1) = Range("tank_dia") / 2 + 20
    acadDoc.Application.ZoomWindow zoompoint2, zoompoint1
    
    Dim vphandle As String
    Set objEntcir = acadDoc.ModelSpace.AddCircle(crossGirdposition, zoomdistance * 2)
    objEntcir.Layer = "dashed"
    objEntcir.LinetypeScale = 0.2
    vphandle = "(handent " & Chr(34) & objEntcir.Handle & Chr(34) & ")"
    acadDoc.SendCommand "CHSPACE" & vbCr & vphandle & vbCr & vbCr & vbCr

the next code example will use the TranslateCoordinates method to translate an array of x y coordinates from model space to paper space. In this case, it will move the x y point of the start line from model to paper space. It works similar to CHSPACE except instead of moving whole objects it will move only coordinates.

    Set ACLayout = acadDoc.Layouts.Add(pgnum)
    acadDoc.ActiveLayout = ACLayout  

    Dim endline(0 To 2) As Double
    Dim insertionPointPS As Variant
    startline(0) = crossGirdposition(0) + 0.707 * zoomdistance * 2: startline(1) = crossGirdposition(1) + 0.707 * zoomdistance * 2
    insertionPointPS = acadDoc.Utility.TranslateCoordinates(startline, acDisplayDCS, acPaperSpaceDCS, False)
    endline(0) = 7: endline(1) = 1.0889
    Set objline = acadDoc.PaperSpace.AddLine(insertionPointPS, endline)
    objline.Layer = "dashed"
    objline.LinetypeScale = 0.2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s