使用Solidworks宏构建STL文件的程序集

时间:2016-05-22 17:10:11

标签: vba excel-vba solidworks excel

我正在尝试在Solidworks(2015)中编写一个宏来获取一大组.STL文件,将它们加载到Solidworks中,然后将它们对齐到一个程序集中。

最初,我在solidworks上录制了一个宏,就是这样做的。我将加载一个.STL文件,从中创建一个程序集,然后加载其他.STL文件,保存它们,然后将它们添加到程序集中。文件将自己完美对齐(我认为通过使用它们与原点的相对位置)。

录制的代码如下所示:

EditText.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            EditText.clearFocus();
        }
        return false;
    }
});

此录制代码的有趣之处在于: 1)尝试运行录制的代码不起作用(Dim swApp as Object Dim boolstatus as Boolean Dim longstatus as long, longwarnings as long Sub main() Set swApp = Application.Solidworks boolstatus = swApp.LoadFile2("FileLocation", "r") Set Part = swApp.ActiveDoc Dim myModelView as Object Set myModelView = Part.ActiveView myModelView.FrameLeft = 0 myModelView.FrameTop = 22 Set myModelView = Part.ActiveView myModelView.FrameWidth = 1845 myModelView.FrameHeight = 935 longstatus = Part.SaveAs3("SaveLocation", 0, 2) Set Part = swApp.NewDocument("AssemblyLocation", 0, 0, 0) Set myModelView = Part.ActiveView myModelView.FrameWidth = 1845 myModelView.FrameHeight = 935 boolstatus = Part.AddComponent(".SLDPRTfilelocation", -8.034...E-05, 1.036...E-04, -2.799...E-05) swApp.ActivateDoc2 "DocName", False, longstatus swApp.CloseDoc "DocName" '^Repeats for more .STL files (just adds to assembly doesn't make assembly for each file) 命令似乎不起作用,除非我关闭文件然后再用.AddComponent打开它。 2)当使用.OpenDoc6将零件添加到装配体时,它需要添加零件的几何中心的x,y,z坐标。当我记录一次一个地手动将零件放入装配体的宏时,我可以看到.STL文件几何中心的坐标。

文件使用这些值在装配中完美对齐,因此可以安全地假设它们是正确的。

Solidworks如何确定这些坐标值?我可以使用任何代码来确定它们吗?

我已尝试过(A method to calculate the centre of mass from a .stl (stereo lithography) file)中的代码,虽然它似乎适用于简单的结构,但是当我使用此代码生成程序集时,部件未对齐。我还将从此代码生成的x,y,z坐标与我在录制的宏中看到的值进行了比较,但它们不匹配。

因此,简而言之,我想创建一个宏来将许多.STL文件加载到solidworks程序集中并自动对齐。我可以手动正确地执行此操作,但我不知道Solidworks如何确定每个.STL文件的几何中心,因为它将它们加载到程序集中。

我现在很困惑,所以你可能会有任何想法,我将非常感激!

0 个答案:

没有答案