Any way to rotate views in paper space ?

Hi,

Is there some way to rotate view in paper space ?

If possible, I'm also interested in rotating the model space to make easier to insert text elements like they will appear on paper space (i.e. horizontally).
I don't want to rotate the geometry itself, so that it remains in its original coordinates system.

I browsed the documentation and found in the "View Rotation" chapter :
"Real-time Sphere, Real-time X and Real-time Y should not be used when drawing in 2D."

Is this due to some dilution of precision or some other reason and is there a "2D" rotate-around-Z equivalent ?

Thanks for your answer.

 

Comments

  • Hi Julien,

    I use DVIEW TWIST to rotate the views. Here is a little lisp routine I made to automate is as I do this very often... may be useful to you.

    ;;; 2009-12-09: G. Skelhorn: Added DTAlignView command to align using 
    ;;; DVIEW Twist. This replaces a command macro I had on a toollbar button.

    (defun C:DTAlignView ( / my_error oeh oce ang dms)
    (defun my_error (msg)
    (if
    (not
    (member msg '("Function cancelled"
    "quit / exit abort"
    "console break"
    )
    )
    )
    (princ (strcat "\nError: " msg))
    )
    (if oce (setvar "CMDECHO" oce))
    (if oeh (setq *error* oeh))
    (princ)
    )

    ;; Set error handler
    (setq oeh *error*)
    (setq *error* my_error)

    ;; Turn off command echo
    (setq oce (getvar "CMDECHO"))
    (setvar "CMDECHO" 0)

    ;; Prompt for an angle and twist the view.
    (setq ang (getangle "View twist: "))
    (command "_dview"
    ""
    "_tw"
    (- (/ (* ang 180.0) pi))
    ""
    )
    (princ
    (strcat
    "\nView rotation set to: "
    (angtos ang 1 4)
    )
    )

    ;; Set the SNAPANG so the cross hair is aligned
    (setvar "SNAPANG" ang)

    ;; Restore variables and error handler
    (setvar "CMDECHO" oce)
    (if oeh (setq *error* oeh))
    )

     

  • There´s "viewctl", but it only let´s you rotate the view in 5, 15 or 45° steps. To have an ACAD-like "mvsetup" in Bricscad would be

    very nice indeed ( Maybe in V11 ?).

  • Greg, Jörg, thanks for your answers.

    Greg's routine rotates the axis, which is useful to draw in a rotated "ORTHO" mode.
    It seems possible to specify any angle (example: 7 degrees).

    1) Save the routine in a "DVIEW_TWIST.lsp" LISP file.
    2) Enter the "appload" command.
    3) In the dialog that opens, click the "Add" button and load the previously saved LISP file.
    4) Click the "Load" button.
    5) Enter "DTAlignView" in the command bar.
    6) Type the wanted angle in the command bar and press Enter.

    The command bar will display something like :
    Unknown command "-45". Please try again.
    View rotation set to: 45° 0' 0''

    Despite the error message, it works in the model space (but not in paper space).

    It does not rotate the view. Raster images as well as vector elements won't appear rotated.

    The "viewctl" function that Jörg mentioned rotates the view, but only in the "model" view. Not in paper mode.

    "viewctl" is an alias for "ddvpoint".
    Neither "viewctl" nor "_viewctl" works in Bricscad 10 translations (at least not with the French translation).
    But ddvpoint works. (Multiples of 5° allowed.)

    So, although both tricks are useful, no solution yet to what I want to do.

    Rotated paper view would be very useful when you have a diagonal street that the pages must follow.
    In many case, this would let using in A4-format accordion-folded sheet instead of large more square-shaped paper sheets.

  • In Bricscad 10, the only way I see to make plots with rotated layout for 2D drawings is remaining in object space (Model) and use the following commands.

    1. ucs and specify the direction in which you want your drawing oriented.
      (for the French version : scu or _ucs)
    2. repere (French version) and validate "SCU actif"  (this rotates the view according to the UCS orientation
    3. make the layout in Model space
    4. right-click the Model tab and choose layout
    5. choose the mode that lets you choose a custom print area

     

    To come back to the main coordinate system and associated view :

    1. scu > Global   (or _ucs in all translations)
    2.  repere Global  (command in French)

    The problem is that most commands do not work in paper space.
    Not tested yet if all prints correctly from model space providing that print scale is correctly chosen.

    Of course, other ideas are welcome.

  • Double-Click in the paperspace viewport to activate it and run the lisp above or simply run the dview command with the viewtwist option. Punch in the rotation or drag it.  When it's the way you want, go back to mspace in layout and select the viewport boundary.  Set the viewport to locked, if you don't want it getting changed accidentally.  There are numerous properties in the properties palette for you to peruse. Have fun.

  • Many thanks Jerry. I had to play a little bit to understand what you meant, but it works!

    Method 1  (Using the routine)
    --------

    1) Save above lisp routine in some file (e.g. DVIEW_TWIST.lsp)
    2) Choose some paper space tab
    3) Double-click in the area with the red frame to activate it
    4) Type "appload". In the dialog that opens, add the file that contains the previously saved routine and click load.
    5) In the command bar type "DTALIGNVIEW"
    6) Enter the angle which you want the paper view being rotated and validate
    7) In the command bar, type "repere" and validate the "SCU Actif" option (Command names are for the French translation).

    The paper view is rotated.

    What is strange is the orientation of the cursor in the paper view after that.
    It is not parallel to the SCU oriented axis, but rotated twice more.
    Is this a normal ?

    Method 2 : _dview (ou vuedyn)
    ----------

    I also tried the other suggested method, i.e. calling "_dview" or "vuedyn" in French.

    After typing _dview, Bricscad asks:
    "Select entities or <use DVIEWBLOCK>"

    Validate using DVIEWBLOCK, and several options display:
    CAméra/CIble/Basculer/DIstance/POints/DElimitation/Inactif/Masquer/PAn/Zoom/annUler/<Sortie>

    For French speaker "Basculer" seems to be the "TWist" option, because it lets you rotate the view.

    _dview is quite difficult to use, as your drawing is replaced by a sample house drawing in yellow/red/blue colors during the rotation, or any other operation.

    Stranglely, after some clicks here and there I was unable to re-activate the viewport by double-clicking it.
    The cursor is North-South oriented, like when opening a new file.

    It is very good following Jerry's suggestion of locking the viewport in the properties tab of the viewport frame.

    The "SCU par vue multiple" still sounds strange to me...

  • Hi Julien... Sorry to take so long getting back to you, I've had no spare time for the past couple of days. I see Jerry has you sorted out though.

    As far as the cursor in the paper space getting rotated... My guess is you must have tried to run the routine from the paper space. I should have the routine check for that and just print a message stating it must be run from model space. It is one of those quickies that get made to scratch an itch and could be written much better :-(

    The routine is manipulating a variable named SNAPANG to change the orientation of the cursor. Just delete those lines if you do not want it to rotate the cursor. Also note you can set the SNAPANG variable from the command line... zero will align the cursor to the UCS again.

    Hope that helps.

  • Ok, here is a version that should handle running while in paper space better:

    (defun C:DTAlignView ( / my_error oeh oce ang dms)
    (defun my_error (msg)
    (if
    (not
    (member msg '("Function cancelled"
    "quit / exit abort"
    "console break"
    )
    )
    )
    (princ (strcat "\nError: " msg))
    )
    (if oce (setvar "CMDECHO" oce))
    (if oeh (setq *error* oeh))
    (princ)
    )

    ;; Set error handler
    (setq oeh *error*)
    (setq *error* my_error)

    ;; Turn off command echo
    (setq oce (getvar "CMDECHO"))
    (setvar "CMDECHO" 0)

    (cond
    ((= (getvar "CVPORT") 1)
    (princ "\nCannot align view from paper space, switch to mode space and run again.")
    )
    (1

    ;; Prompt for an angle and twist the view.
    (setq ang (getangle "View twist: "))
    (command "_dview"
    ""
    "_tw"
    (- (/ (* ang 180.0) pi))
    ""
    )
    (princ
    (strcat
    "\nView rotation set to: "
    (angtos ang 1 4)
    )
    )

    ;; Set the SNAPANG so the cross hair is aligned
    (setvar "SNAPANG" ang)
    )
    )

    ;; Restore variables and error handler
    (if oce (setvar "CMDECHO" oce))
    (if oeh (setq *error* oeh))
    )

    Note: this is using the lisp function getangle so you can also pick two points to define the alignment angle.

  • Hi Greg,

    Many thanks to you.

    Method 2 is ok for me, but I'll try your new routine the next time I need to display a rotated drawing in paper space.

    Regards.

  • Thanks,

    Methode 1 I can use

     

  • I believe this may be easier in a 2D drawing only.

     

    1. In paper space activate the viewport (cant be locked)
    2. Type UCS and select E for entity and pick the entity.
    3. The cross hairs will rotate to the entity alignment
    4. Select view…3D Views…Plan view…current UCS
    5. Exit the viewport and lock it

    Done

This discussion has been closed.