我大约一个半月以来一直在为SolidWorks应用程序编写一个脚本,我想让它变得更好,因为它很慢。
我的剧本的作用:
1.它告诉用户选择一些特定的组件(使用高级选择)
我用这些组件制作了一个集合
3.我从这些集合中收集了一个集合,因为我需要根据它们的配置对它们进行重新组合
4.在每个组件中都是带有单个sketchPoint的草图。我必须计算此点与3D草图中预定点的原点之间的距离。所以我将sketchPoint附加到我的组件到我的3Dsketch,我计算,然后我删除它
5.我为每个组件(60 ++)执行此操作
耗时的部分是我必须编辑我的3DSketch,将一个点插入其中,关闭版本,计算距离,编辑,删除,再次关闭。
我目前正在做一个更加面向对象的方法,因此不再收集集合,但仍然是我的问题留下来。我想知道IMath是否有用,因为我已经看到了这个:http://help.solidworks.com/2014/english/api/sldworksapi/Transform_Sketch_to_Model_Example_VB.htm
但似乎确实有效。
啊,我知道测量工具,但它不起作用,因为我需要负值,如果我的sketchPoint“落后”我的起源。
谢谢:)
答案 0 :(得分: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
所有学分归Simon Turner https://forum.solidworks.com/people/1-KQHM1