2015-07-13 77 views
0


自從大約一個半月以來,我一直在爲SolidWorks應用程序開發腳本,並且我想讓它變得更好,因爲它非常慢。計算不同草圖中的點之間的距離SolidWorks API

我的腳本的功能:
1.它告訴用戶選擇某個特定組件(使用高級選擇)。
2.我從這些組件中創建一個集合。
3.我從這些集合中創建一個集合,因爲我需要根據它們的配置重新分組。
4.在每個組件中都有一個帶有單個sketchPoint的草圖。我必須計算此點與3D草圖中預定點的原點之間的距離。因此,我將sketchPoint attach附加到我的組件中,然後將其刪除。
5.我爲每個組件(60 ++)做這個

耗時的部分是我必須編輯我的3DSketch,帶一個點,關閉版本,計算距離,編輯,刪除,再關閉。

我目前正在做一個更加面向對象的方法,所以沒有更多的集合的集合,但仍然是我的問題留下來。我想知道IMath是否有用,因爲我看到了這個:http://help.solidworks.com/2014/english/api/sldworksapi/Transform_Sketch_to_Model_Example_VB.htm
但它確實似乎正常工作。

啊,我知道測量工具,但它不會工作,因爲如果我的sketchPoint位於我的原點「後面」,我需要負值。

謝謝:)

回答

0

嗯,我都問了同樣的問題在SolidWorks的論壇和一些人給我答案,那就是:

Dim myComp As Component2 
Dim fSketch As Feature 
Dim swSketch As Sketch 
Dim vSketchPts As Variant 
Dim swSketchPt As SketchPoint 
Dim p(2) as Double 
Dim mPt as MathPoint 
Dim vPt as Variant 
Dim myUtil as Mathutility 

Set myUtil = swApp.GetMathUtility 
Set fSketch = myComp.FeatureByName("mySketchName") 
Set swSketch = fSketch.GetSpecificFeature2 
vSketchPts = swSketch.GetSketchPoints2 
Set swSketchPt = vSketchPts(0) 

p(0)=swSketchPt.X 
p(1)=swSketchPt.Y 
p(2)=0.0 
vPt = p 
Set mPt = myUtil.CreatePoint(vPt) 


Dim mthTrans As MathTransform 

Set mthTrans = swSketch.ModelToSketchTransform 
Set mPt= mPt.MultiplyTransform(mthTrans.Inverse) 
Set mthTrans = swIRBoxComp.Transform2 
Set mPt= mPt.MultiplyTransform(mthTrans) 
vPt = mPt.ArrayData ' This will contain the XYZ coordinates of the point in the coordinate system of the 3D sketch 

所有學分去西蒙·特納https://forum.solidworks.com/people/1-KQHM1

+0

如果此代碼適用於您,請檢查此答案:) –