今晚打老虎 发表于 2003-12-8 15:43:00

关于sendcommand的小问题~~~~~

大虾们,偶请教一个关于sendcommand使用小问题

偶想使用sendcommand,然后使用stretch 可是后面的字符串都需要什么呢,偶试了上午只找到的头两个对象(见代码),后面的对角点,和基点不知道怎么弄了~~~~~

大家帮忙给试试,谢了,谢了~~~~~~

代码部分:
Option Explicit


Sub sTestStretch()
Dim vPnt1, vPnt2, vPnt3
vPnt1 = ThisDrawing.Utility.GetPoint
vPnt2 = ThisDrawing.Utility.GetPoint(vPnt1)
vPnt3 = ThisDrawing.Utility.GetPoint(vPnt2)

Dim objLine1 As AcadLine
Dim objLine2 As AcadLine
Dim objCircle As AcadCircle

Set objLine1 = ThisDrawing.ModelSpace.AddLine(vPnt1, vPnt2)
Set objLine2 = ThisDrawing.ModelSpace.AddLine(vPnt2, vPnt3)
Set objCircle = ThisDrawing.ModelSpace.AddCircle(vPnt2, 5)

ThisDrawing.SendCommand "Stretch " & fGetDoubleEntTable(objLine1, vPnt1) & " " & _
                        fGetDoubleEntTable(objLine2, vPnt2) & " "


End Sub



'函数名称:fGetDoubleEntTable
'功能描述:转换双元表的函数
'接收参数:objEntity双元表中的图元对象,vPnt点对象
'返回参数:双元表字符串
'更改人员及日期 Angus@20031027

Private Function fGetDoubleEntTable(objEntity As AcadEntity, vPnt As Variant) As String
Dim entHandle As String
entHandle = objEntity.Handle
fGetDoubleEntTable = "(list(handent " & Chr(34) & entHandle & Chr(34) & _
                     ")(list " & Str(vPnt(0)) & Str(vPnt(1)) & Str(vPnt(2)) & "))"
End Function

'函数名称:faxPoint2lspPoint
'功能描述:转换点的函数
'接收参数:vPnt双元表中的点对象
'返回参数:点对象字符串
'更改人员及日期 Angus@20031027

Private Function faxPoint2lspPoint(vPnt As Variant) As String
faxPoint2lspPoint = vPnt(0) & "," & vPnt(1) & "," & vPnt(2)
End Function

'函数名称:faxEnt2lspEnt
'功能描述:转换图元函数
'接收参数:objEntity双元表中的图元对象
'返回参数:图元对象字符串
'更改人员及日期 Angus@20031027

Private Function faxEnt2lspEnt(objEntity As AcadEntity) As String
Dim entHandle As String
entHandle = objEntity.Handle
faxEnt2lspEnt = "(handent " & Chr(34) & entHandle & Chr(34) & ")"
End Function

加上图片~~~

mccad 发表于 2003-12-8 16:25:00

这样编程真是少见。
拉伸这种命令在程序中是很少有人用的,因为实际意义不大。如果真的编程,出错的机率也会很大,因为对于拉伸命令来说,拉伸窗口是最重要的。提示已经很清楚“以交叉窗口或交叉多边形选择要拉伸的对象...”,所以你不能以双元表的方式提供选择集,也不能以点的方式提供选择集,而应该给一个窗口的坐标给程序。这样就存在着窗口的大小问题了,所以必须使用选择集的CP选项,以圈交方式来选择对象,然后按所需要移动的点计算四周的几个点做为圈交点。这样才能保证选择对象的正确性。
对于基点和移动到的点,是由你自己定义的。

我不知你这个程序是为了实验SendCommand方法还是有其它用途,如果程序中需要的话,最好还是用编程的方法来修改对象的属性。

今晚打老虎 发表于 2003-12-8 16:34:00

其实我用sendcommand的目的是想简单的实现猴皮筋的效果~~~~即使是个示意性的东西,但是可能作为需求就足够了~~~~

谢谢老大的建议,谢谢提供的知识点~~~~
页: [1]
查看完整版本: 关于sendcommand的小问题~~~~~