How to copy elements from one .dgn to another

Hi All:

How do you copy elements from one .dgn file to another and keep the elements at the same x, y.

In AutoCad I would copy and paste at 0,0...but can't find the command in Microstation.

Thanks!

Parents
  • If you've ever tried to copy elements from an XREF in AutoCAD, you might think the process in MicroStation is fraught with peril, but MicroStation's Reference Files are far more flexible and friendly than AutoCAD.

    The idea of attaching a reference file to copy a few elements from another file seems very foreign to an AutoCAD user, but long before either of these packages supported the Windows Clipboard, that was the only way to do this. In AutoCAD, you would have to WBLOCK out the elements and INSERT and EXPLODE to accomplish the same thing. And that left the DWG sitting somewhere on your drive.

    With the MicroStation workflow, the preocess was simple and fast. And everyone used the XY, DX, DL keyins all of the time, so they were like second nature.

    This process also allowed you to fix global origin or datum shifts. You could use the move reference command to get the reference file into the proper datum and coordinates and then copy or merge the data into the active file. All you needed was one point of commonality in both files to line up and if the master units were identical, set a scale of 1:1 and even adjust for working units discrepancies.

    Charles (Chuck) Rheault
    CADD Manager

    MDOT State Highway Administration
    Maryland DOT - State Highway Administration User Communities Page

    • MicroStation user since IGDS, InRoads user since TDP.
    • AutoCAD, Land Desktop and Civil 3D, off and on since 1996
  • This works for me...

    1. Select elements to copy
    2. Tentative snap at 0,0 or base point
    3. Copy
    4. Paste
    5. DP to 0,0 or base point
  • Since you need to issue a tentative snap without accepting it, there is no way that I know of to set the "base point" to a keyed in coordinate. Unless you try programmatically.

    I seem to recall making a macro that issued a tentative point at a point from a data point. It was three jobs ago, and at least four years, so I cannot recall the reason or workings. And as this was from a Pre-V8 time for me, it was an MBE Basic macro, not a VBA macro.

    The was a MbeSendTentPoint in MBE Basic, and there is a SendTentativePoint method in MVBA, so I must assume that given a block of time, it would not be too hard to cobble together a VBA Macro that could create a "Copy to Clipboard with keyed-in basepoint" tool.


    Charles (Chuck) Rheault
    CADD Manager

    MDOT State Highway Administration
    Maryland DOT - State Highway Administration User Communities Page

    • MicroStation user since IGDS, InRoads user since TDP.
    • AutoCAD, Land Desktop and Civil 3D, off and on since 1996
  • neilw,

    Your'e right. The tentative snap method only works with a reference element. Luckily for me this is often what i need. But how to do it relative to 0,0 without having an element there I don't know.

  • Hi again neilw,

    Not saying it's optimal, but this method might be something to give a chance.

    Select element to copy, then run the following macro:

    (The VBA-script places a point in 0,0 then makes a tentative snap to it and copies the selection to the clipboard.)

    Sub copyatzero()

       Dim startPoint As Point3d

       Dim point As Point3d, point2 As Point3d

       Dim lngTemp As Long

    '   Start a command

       CadInputQueue.SendCommand "PLACE POINT"

    '   Coordinates are in master units

       startPoint.X = 0

       startPoint.Y = 0

       startPoint.Z = 0#

    '   Send a data point to the current command

       point.X = startPoint.X

       point.Y = startPoint.Y

       point.Z = startPoint.Z

       CadInputQueue.SendDataPoint point, 1

    '   Send a tentative point

    '   Coordinates are in master units

       CadInputQueue.SendTentativePoint Point3dFromXYZ(0, 0, 0#), 1

       CadInputQueue.SendCommand "MDL KEYIN CLIPBRD CLIPBOARD COPY"

       CommandState.StartDefaultCommand

    End Sub

    Go to the other file and ctrl+v. You have to snap to 0,0 in the other file yourself. (The last step is probably possible to script as well, but I won't do it now.)

  • Posting the paste script as well. If you assign these two scripts to two corresponding buttons you have a good copy/paste to original coordinates functionality.

    Sub Pasteatzero()

       Dim startPoint As Point3d

       Dim point As Point3d, point2 As Point3d

       Dim lngTemp As Long

    '   Start a command

       CadInputQueue.SendCommand "MDL KEYIN CLIPBRD CLIPBOARD PASTE"

    '   Coordinates are in master units

       startPoint.X = 0#

       startPoint.Y = 0#

       startPoint.Z = 0#

    '   Send a data point to the current command

       point.X = startPoint.X

       point.Y = startPoint.Y

       point.Z = startPoint.Z

       CadInputQueue.SendDataPoint point, 1

    '   Send a reset to the current command

       CadInputQueue.SendReset

       CommandState.StartDefaultCommand

    End Sub

  • have you all watched: NINJA POINT (some more to laugh)

    communities.bentley.com/.../paste-elements-at-same-graphical-location.aspx

    Regards

    Frank

    since 1985: GIS, CAD, Engineering (Civil)  Senior Consultant : [Autodesk Civil 3D , Esri ArcGIS, VertiGIS: in previous days : Bentley MS V4 - V8i, GeoGraphics, Bentley Map V8i, InRoads,  HHK Geograf, IBr DAVID] :  Dev: [C, C++, .NET, Java, SQL, FORTRAN, UML]
    [direct quote by: http://en.wikipedia.org/wiki/Helmut_Schmidt]: "Wer Kritik übel nimmt, hat etwas zu verbergen"
    Wer Grammatik- und/oder Rechtschreibfehler findet, der darf sie behalten :-)

Reply Children
No Data