謝謝提供的方法;我沒說清楚;舉例:我在機台上面配置一個顯示螢幕;位置和機台鎖付固定;我要顯示螢幕複製到一個新開組合件(iam)貼上;而位置點須和原機台上所付的位置相同,類似autocad的功能 剪貼簿 複製 貼上選項 貼到原始座標
这个好像没有现成的操作方法,实现起来比较麻烦,使用ilogic编写规则代码或许可行。
多问一句:你这个需求的最终意图是什么呢?
If my post answers your question, please click the "Accept as Solution" button. This helps everyone find answers more quickly!
如果我的回帖解决了您的问题,请点击 "接受为解决方案" 按钮. 这可以帮助其他人更快的找到解决方案!
王 承之
Autodesk AGN [Inventor 俱乐部] Leader
Inventor Club | Bilibili
@pointed_idea 可以考虑用ilogic添加新的右键菜单来实现这个功能(设置外部规则自动运行,打开部件或者其他触发条件)
可以复制1个或者同时复制多个(但不会保留约束)
Class ThisRule
Private button_CopyOcc, button_PasteOcc As ButtonDefinition
Dim keyValuePairs As New List(Of KeyValuePair(Of String, Matrix))
Sub main
If SharedVariable.Exists("ContextMenu") Then Return
SharedVariable("ContextMenu") = "ContextMenu"
addNewButton()
AddHandler ThisApplication.CommandManager.UserInputEvents.OnContextMenu, AddressOf OnContextMenu
End Sub
Sub addNewButton()
button_CopyOcc = ThisApplication.CommandManager.ControlDefinitions.AddButtonDefinition(
"复制(原始位置)","IneternalName_copyocc", CommandTypesEnum.kNonShapeEditCmdType)
button_PasteOcc = ThisApplication.CommandManager.ControlDefinitions.AddButtonDefinition(
"粘贴(原始位置)","IneternalName_pasteocc", CommandTypesEnum.kShapeEditCmdType)
AddHandler button_CopyOcc.OnExecute, AddressOf CopyOcc_OnCLick
AddHandler button_PasteOcc.OnExecute, AddressOf PasteOcc_OnCLick
End Sub
Private Sub OnContextMenu(SelectionDevice As SelectionDeviceEnum, AdditionalInfo As NameValueMap, CommandBar As CommandBar)
If Not TypeOf ThisApplication.ActiveEditDocument Is AssemblyDocument Then Return
Dim oselectset As SelectSet = ThisApplication.ActiveDocument.selectset
If oselectset.OfType(Of ComponentOccurrence).Count <> 0 Then
CommandBar.Controls.AddButton(button_CopyOcc, 2)
Else If oselectset.Count = 0 Then
If SelectionDevice <> SelectionDeviceEnum.kGraphicsWindowSelection Then Return
If keyValuePairs.count = 0 Then Return
CommandBar.Controls.AddButton(button_PasteOcc, 2)
End If
End Sub
Private Sub CopyOcc_OnCLick
Dim oselectset As SelectSet = ThisApplication.ActiveDocument.selectset
For Each occ As ComponentOccurrence In oselectset.OfType(Of ComponentOccurrence)
Dim occDocumentName As String = occ.Definition.Document.FullDocumentName
Dim position As Matrix = occ.Transformation
keyValuePairs.Add(New KeyValuePair(Of String, Matrix)(occDocumentName, position))
Next
End Sub
Private Sub PasteOcc_OnCLick
Dim asmDef As AssemblyComponentDefinition = ThisApplication.ActiveEditDocument.ComponentDefinition
For Each kvp In keyValuePairs
Dim key As String = kvp.Key
Dim value As Matrix = kvp.Value
asmDef.Occurrences.Add(key,value)
Next
keyValuePairs.clear()
End Sub
End Class
这个好,学习一下
If my post answers your question, please click the "Accept as Solution" button. This helps everyone find answers more quickly!
如果我的回帖解决了您的问题,请点击 "接受为解决方案" 按钮. 这可以帮助其他人更快的找到解决方案!
王 承之
Autodesk AGN [Inventor 俱乐部] Leader
Inventor Club | Bilibili