Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Solidworks VBA中创建直线_Vba_Solidworks_Solidworksapi - Fatal编程技术网

在Solidworks VBA中创建直线

在Solidworks VBA中创建直线,vba,solidworks,solidworksapi,Vba,Solidworks,Solidworksapi,我试图运行一个非常简单的函数,它接受两点的输入,然后Solidworks从中生成一条直线 Dim swApp As Object Sub main() Set swApp = Application.SldWorks line = CreateLine(1, 1, 1, 0, 0, 0) End Sub Function CreateLine( _ ByVal X1 As System.Double, _ ByVal Y1 As System.Double, _ ByVal

我试图运行一个非常简单的函数,它接受两点的输入,然后Solidworks从中生成一条直线

Dim swApp As Object
Sub main()

Set swApp = Application.SldWorks
line = CreateLine(1, 1, 1, 0, 0, 0)
End Sub

Function CreateLine( _
   ByVal X1 As System.Double, _
   ByVal Y1 As System.Double, _
   ByVal Z1 As System.Double, _
   ByVal X2 As System.Double, _
   ByVal Y2 As System.Double, _
   ByVal Z2 As System.Double _
) As SldWorks.SketchSegment

    Dim instance As ISketchManager
    Dim X1 As System.Double
    Dim Y1 As System.Double
    Dim Z1 As System.Double
    Dim X2 As System.Double
    Dim Y2 As System.Double
    Dim Z2 As System.Double
    Dim value As SketchSegment
     
    value = instance.CreateLine(X1, Y1, Z1, X2, Y2, Z2)

End Function

每当我尝试运行此程序时,都会出现错误“用户定义的类型未定义”。如何修复此问题?

打开零件后尝试此操作:

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sub main()
Dim skSegment As SldWorks.SketchSegment
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
' Create new sketch
swModel.SketchManager.Insert3DSketch True
' Create line
Set skSegment = CreateLine(1, 1, 1, 0, 0, 0)
' Close sketch
swModel.SketchManager.InsertSketch True
swModel.ClearSelection2 True
End Sub

Function CreateLine( _
   ByVal X1 As Double, ByVal Y1 As Double, ByVal Z1 As Double, _
   ByVal X2 As Double, ByVal Y2 As Double, ByVal Z2 As Double _
) As SldWorks.SketchSegment

    Set CreateLine = swModel.SketchManager.CreateLine(X1, Y1, Z1, X2, Y2, Z2)
End Function

您的错误是否发生在这一行:
value=instance.CreateLine(X1,Y1,Z1,X2,Y2,Z2)
?我猜这是因为
instance
实际上从未设置任何值。您从哪里得到错误?注意
系统
在VBA中不是一个东西,除非它是SolidWorks主机库的一部分。另外,您通过使用相同的名称声明局部变量来隐藏函数参数,并且您的函数不会返回任何内容。在分配对象类型的变量时,需要使用
Set