簡體   English   中英

將總表插入工程圖 Solidworks 宏

[英]Inserting General Tables into drawing Solidworks Macro

我有一個用戶需要輕松訪問宏的下拉列表,該下拉列表將輕松快速地導入通用表模板,並允許他們將其放置在 cursor 單擊上所需的位置。 目前,我用於導入通用表格的代碼可以工作,但我對實體工作參數不夠熟悉,無法知道傳遞哪個參數以允許將表格粘貼到用戶選擇的位置。 有問題的具體行是Set swTable = swDrawing.InsertTableAnnotation2(True, 0, 0, swBOMConfigurationAnchor_TopLeft, MATABLE, 2, 1)

完整代碼如下;

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swDrawing As SldWorks.DrawingDoc

Dim swTable As SldWorks.TableAnnotation

Const MATABLE As String = "C:\STANDARD Tables\sampleTable.sldtbt"

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

If (swModel Is Nothing) Or (swModel.GetType <> swDocDRAWING) Then

swApp.SendMsgToUser ("To be used for drawings only, Open a drawing first and then TRY!")

Exit Sub

End If

Set swDrawing = swModel


Set swTable = swDrawing.InsertTableAnnotation2(True, 0, 0, swBOMConfigurationAnchor_TopLeft, MATABLE, 2, 1)

If Not swTable Is Nothing Then
   swTable.BorderLineWeight = 0
   swTable.GridLineWeight = 0

End If

End Sub

謝謝你。

第二個和第三個參數(其中你有 0 和 0)用於設置表的 position,但您還必須將第一個參數設置為False (指示 API 忽略錨點並使用您的 X 和 Y 坐標) . 請參閱http://help.solidworks.com/2020/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IDrawingDoc~InsertTableAnnotation2.html

所以你的行將是,例如:

Set swTable = swDrawing.InsertTableAnnotation2(False, 10, 10, swBOMConfigurationAnchor_TopLeft, MATABLE, 2, 1).

但是,您的代碼有幾點

首先,您需要將文檔加載到 VBA Solidworks 應用程序 object 中。 您編寫的代碼將無法工作,因為 swApp 沒有活動文檔。 最好的方法是提供一個文件對話框並將所選文件加載到應用程序中,使用OpenDoc6() function。 https://help.solidworks.com/2019/english/api/sldworksapi/Open_Document_Example_VB.htm

其次,獲取鼠標 position 並將其轉換為InsetTableAnnotation2() function 的 X 和 Y 參數將需要一些 WinAPI 知識和一些像素計算知識。 這是完全可行的,但涉及一些編碼。 另一方面,如果您將swApp.Visible設置為 true,那么當表格成功地將自身插入到 Solidworks 文檔中時,它將對用戶可見並且可以隨意拖動。 您可能會發現這對您來說是一個更簡單的解決方案。

順便說一句,Solidworks 對許可和用戶數量非常嚴格。 您肯定只需要一個swApp實例,因此在模塊級別聲明它,但您可能還需要檢查是否有超過許可數量的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM