dfgs 发表于 2007-10-3 21:34:00

又来请教大家,关于sendcommand的使用

我在用VBA编程时,需要用到边界曲面的功能(没法,用add3dmesh感觉太复杂,二维图是现在的)想用sendcommand的功能调用edgesurf命令,但edgesurf执行后要接下来选择4根线条,如何用程序传递给它呢?谢谢!

zxlllw 发表于 2007-10-4 16:32:00

这个跟我发的那个求助贴意思差不多,就是涉及到,在vba窗口出现的情况下,怎么实现选择自己要修改的图形。我也期待。

phonexi 发表于 2007-10-8 17:30:00

都说了使用选择集
好像刚回复果类似问题
lsp语句利用setq s1(entlast) (有关最后选择集的方式都可以)
vba则是新建选择集利用acSelectionSetLast模式
在选择对象时使用 p 参数即上一个选择集
所有这类操作都是这个样子

dfgs 发表于 2007-10-8 19:58:00

楼上介绍的方法和于其它命令是可行的。我用VBA,其中SS1、SS2、SS3、SS4是四个选择集,每个集中选择了一根线条,但执行时就不行了
ThisDrawing.SendCommand "edgesurf" & vbCr & "ss1" & vbCr & "ss2" & vbCr & "ss3" & vbCr & "ss4" & vbCr
这一种方法也不行
ThisDrawing.SendCommand "edgesurf" & vbCr & "setq s1(ss1)" & vbCr & "setq s2(ss2)" & vbCr & "setq s3(ss3)" & vbCr & "setq s4(ss4)" & vbCr
请指点,谢谢!

alin 发表于 2007-10-8 22:02:00

下载vlax.cls或也可用USERS1-5来传递Handle
Sub test()
Dim lineObj1 As AcadLine
Dim lineObj2 As AcadLine
Dim lineObj3 As AcadLine
Dim lineObj4 As AcadLine
Dim pt1(0 To 2) As Double
Dim pt2(0 To 2) As Double
Dim pt3(0 To 2) As Double
Dim pt4(0 To 2) As Double
pt1(0) = 0#: pt1(1) = 0#: pt1(2) = 0#
pt2(0) = 2#: pt2(1) = 3#: pt2(2) = -5#
pt3(0) = 1#: pt3(1) = 5#: pt3(2) = 8#
pt4(0) = 4#: pt4(1) = 0#: pt4(2) = 2#
Set lineObj1 = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
Set lineObj2 = ThisDrawing.ModelSpace.AddLine(pt2, pt3)
Set lineObj3 = ThisDrawing.ModelSpace.AddLine(pt3, pt4)
Set lineObj4 = ThisDrawing.ModelSpace.AddLine(pt4, pt1)
Dim VL As New VLAX
VL.SetLispSymbol "hd1", lineObj1.Handle
VL.SetLispSymbol "hd2", lineObj2.Handle
VL.SetLispSymbol "hd3", lineObj3.Handle
VL.SetLispSymbol "hd4", lineObj4.Handle
ThisDrawing.SendCommand "(command ""edgesurf"" (Handent hd1) (Handent hd2) (Handent hd3) (Handent hd4)) "
End Sub

dfgs 发表于 2007-10-11 20:40:00

谢谢!显然这个办法更简便,不需要其它支持。
Dim lineObj1 As AcadLine
Dim lineObj2 As AcadLine
Dim lineObj3 As AcadLine
Dim lineObj4 As AcadLine
Dim pt1(0 To 2) As Double
Dim pt2(0 To 2) As Double
Dim pt3(0 To 2) As Double
Dim pt4(0 To 2) As Double
pt1(0) = 0#: pt1(1) = 0#: pt1(2) = 0#
pt2(0) = 2#: pt2(1) = 3#: pt2(2) = -5#
pt3(0) = 1#: pt3(1) = 5#: pt3(2) = 8#
pt4(0) = 4#: pt4(1) = 0#: pt4(2) = 2#
Set lineObj1 = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
Set lineObj2 = ThisDrawing.ModelSpace.AddLine(pt2, pt3)
Set lineObj3 = ThisDrawing.ModelSpace.AddLine(pt3, pt4)
Set lineObj4 = ThisDrawing.ModelSpace.AddLine(pt4, pt1)
ThisDrawing.SendCommand "edgesurf" & vbCr & "(Handent """ & lineObj1.Handle & """)" & vbCr & "(Handent """ & lineObj2.Handle & """)" & vbCr & "(Handent """ & lineObj3.Handle & """)" & vbCr & "(Handent """ & lineObj4.Handle & """)" & vbCr
页: [1]
查看完整版本: 又来请教大家,关于sendcommand的使用