Hi All,
I am having issues with Moving a Reference file.
I am trying to Insert the Default Model into a Sheet Model, Scale it, then Move it to around the location of the Drawing Sheet (XY = 18,50)
The Code...
Set oRef = ActiveModelReference.Attachments.Add(sFileToImport, "Default", "DistributionDesign", "Design Extract", oPoint, oPoint) oRef.Redraw msdDrawingModeEraseoRef.ScaleFactor = 0.5 oRef.Rewrite oRef.Redraw msdDrawingModeNormal Dim distance As Point3d oRef.Redraw msdDrawingModeErase Dim oOrigin As Point3d oOrigin.X = 18 oOrigin.y = 50 oOrigin.z = 0 distance = Point3dSubtract(oOrigin, oRef.Range(True).Low) oRef.Move distance, True oRef.Rewrite oRef.Redraw msdDrawingModeNormal
It is moving the reference, but not as it should. I want the lowest part of the Reference File - which according the Default Model is (952082.7161, 6242208.3894), to move to (18, 50).
What it does, is moves the 0,0 point to 18,50
I have attached the DGN for reference.
Any help would be appreciated. I don't know what I am doing wrong
Thanks in Advance!
Unknown said:distance = Point3dSubtract(oOrigin, oRef.Range(True).Low)
I don't think this is the immediate problem, but it could lead to other curiosities. By setting Range(True) you're asking for the range of the attachment, which happens to be the active model, including all its references
What is the value of oRef.Range.Low?
Debug.Print "Ref Range XY=" & Format (oRef.Range.Low.X, "#,##0") & "," & Format (oRef.Range.Low.Y, "#,##0")
Regards, Jon Summers LA Solutions
The reason i put (True) in there is because when run i get an error message stating "Compile Error: Argument Not Optional"
If i put in an argument (I put false this time) it will work.
When running the command you sent, the value is "Ref Range XY=0,0"
When doing a watch on oRef.Range.Low i get the above.
Unknown said: The reason i put (True) in there is because when run i get an error message stating "Compile Error: Argument Not Optional" If i put in an argument (I put false this time) it will work.
I find those methods that take a Boolean hard to remember, especially when I review my code after a few weeks or months. A solution I like to use is to define local constants that document the Boolean value...
Const IncludeAttachments As Boolean = TrueConst IgnoreAttachments As Boolean = Falserange = oRef.Range(IgnoreAttachments)
Unknown said:When doing a watch on oRef.Range.Low I get the above
Well, anything times 10 to the power -308 is small enough to be considered zero for practical purposes 8-) However, that X-value looks suspect: it's a huge number that doesn't appear to include a decimal point.
I will definitely use the hints above with Boolean, makes it much more clear to read!
Is there anything else that can be done to achieve what im after? eg to Move the reference file to 18, 50?
It was, at one point working, however I am unable to recreate it.
If the X value is suspect, could it be a corruption? I have tried it on a few different DGN files and have the same issue on all.
Does anyone have any ideas for moving this reference file? I have been playing around for a bit over a day but cannot make any progress. I have a demonstration soon and would like to get this sorted beforehand.
Thanks in advance
I detached your master model, then reattached manually. I used the default settings (1:1 scale, coincident world). The screenshot shows the result. There's something fishy about the attachment extents.
The map in the master model is crammed up in the north-east corner. The Y value is six billion master units north of the origin. When I attempt to move it manually I get strange results — the map vanishes.
I think your VBA problems may be down to something in the DGN models.
I was afraid of that...
The GIS file is exported from our GIS System (GE Small World) into a DGN. The DGN we are getting isnt the best as is (levels are limited, text is a weird font etc.). So i wouldn't be surprised if there is something else wrong.
I will see if I can do anything with Small World but I don't like my chances.
Would there be something we could do in MicroStation to help "fix" the problem?
Unknown said: The DGN we are getting...
Does SmallWorld create a V7 DGN or a V8 DGN?
V8 DGN
Attached is a file directly from Smallworld.
I have tried a few different files, all with the same issue. Where the Extents in the Default Model are just of the elements, but reference it into a Sheet and the Extents are massive.
Unknown said:Attached is a file directly from Smallworld.
I notice that it has a master model (the map) and a sheet border model. Is that how SmallWorld exports it?
This file behaved rationally. First, the refernence has the expected boundary, Second, I was able to attach the map, scale and move it manually.
Now you have good data, you can continue with your VBA development.
I ran VerifyDgn on your bad DGN, but it told me nothing. Perhaps you could ask Bentley Systems to analyse it to understand why its reference boundary is so bizarre. Bear in mind that it could be the sheet model that's wacky.