Just hoping someone might be able to assist with reading the orientation of a reference attachment. Currently I have some code that requests user input to select an element; and I am hoping to retrieve the orientation of the reference that the element is contained within (it is a saved view attachment). I can return the logical description of the attachment (as shown in italics below) however I cannot find a method for retrieving the saved view name. Potentially I could locate the saved view from the range that element is contained with however this seems a bit cumbersome. Does anyone have any suggestions?
Thanks in advance!
Set myCIM = myCIQ.GetInput(msdCadInputTypeDataPoint, msdCadInputTypeReset) Select Case myCIM.InputType Case msdCadInputTypeDataPoint pnts(1) = myCIM.point Set vname = ActiveDesignFile.Views(1) Set ele = CommandState.LocateElement(pnts(1), vname, True)
refnameA = ele.ModelReference.ParentModelReference.AsAttachment.LogicalDescription
Case msdCadInputTypeReset ShowTempMessage msdStatusBarAreaMiddle, "Process Cancelled" GoTo Finish End Select
at first, please read and follow MicroStation Programming forum best practices, because some information is missing. Maybe not critically important for the discussion, but it's better to always share a standard set of information, at least a product used and its version (build number).
Also please always use Syntaxhighlighter tool (yellow pencil icon) including correctly selected language when inserting a code into your post. It will ensure the code will be properly displayed and colorized.
Unknown said:with reading the orientation of a reference attachment.
I am not quite sure what do you mean by orientation. Do you want to know the attachment rotation relative to an active (master) model? If yes, every attachment object has Rotation property, which is Matrix3d in the case of attachment, so it contains the complete rotation information.
Unknown said:I have some code
Is there any specific reason why do you this code? A preferred way how to locate an element (the only correct in my opinon) is to implement ILocateCommandEvents object. There are several examples how to do in MicroStation VBA help file.
Unknown said:I cannot find a method for retrieving the saved view name.
How saved view name relates to the attachment orientation? It seems like separate independent issue.
Unknown said:Does anyone have any suggestions?
If ILocateCommandEvents object is used, this is the way how you can receive rotation matrix for the attachment (only code from Accept event is posted):
Private Sub ILocateCommandEvents_Accept(ByVal Element As Element, Point As Point3d, ByVal View As View)
If Element.ModelReference.IsAttachment Then
Dim att As Attachment
Set att = Element.ModelReference.AsAttachment
Dim rotation As Matrix3d
rotation = att.rotation
Bentley Accredited Developer: iTwin Platform - AssociateLabyrinth Technology | dev.notes() | cad.point