fuccaro 发表于 2009-10-22 07:13:34

圆的中心

这是我在AutoCAD中的第一个VBA。我试着把中心和直径放在一张桌子上,但我不能处理点。有人能纠正我的密码吗
Option Explicit
Private Sub cercuri_Click()
Dim SS As AcadSelectionSet
Dim coords As AcadTable
Dim i As Integer
Dim st As String
Dim p0 As AcadPoint
Dim Code(0) As Integer
Dim Val(0) As Variant
Dim insp(0 To 2) As Double
insp(0) = 0#
insp(1) = 0#
insp(2) = 0#
Code(0) = 0
Val(0) = "CIRCLE"
Set SS = ThisDrawing.SelectionSets.Add("ss")
UserForm1.hide
SS.SelectOnScreen Code, Val
Set coords = ThisDrawing.ModelSpace.AddTable(insp, SS.Count + 2, 5, 10, 30)
For i = 0 To SS.Count - 1
st = CStr(SS.Item(i).Diameter)
coords.SetText i + 2, 3, st
p0 = SS.Item(i).Center ' WHAT'S WRONG HERE?
Next i
SS.Delete
UserForm1.Show
End Sub
**** Hidden Message *****

fixo 发表于 2009-10-22 14:14:28

我将沿着这条路走代码1]
(未测试)
~'J'~

fuccaro 发表于 2009-10-22 14:52:16

谢谢你的回答,菲克索。
明天早上我会试试——那将是12小时后。

Cathy 发表于 2009-10-22 16:01:26

Fuccaro,
如果您查看帮助,您会看到Center返回一个数组,而不是AcadPoint,就像定义了p0一样。尝试Dim P0作为变体,看看会发生什么。

fuccaro 发表于 2009-10-23 01:32:55

修正代码<strong>p0=oCircle。该中心不起作用
Cathy
你说得对,Center返回一个数组Dim p0作为变量并没有解决问题,但我最终找到了正确的代码:,Dim p0(0到2)作为双"
          With ThisDrawing.SelectionSets
               While .Count > 0
                  .Item(0).Delete
               Wend
          Set ss = .Add("mySet")
          End With
UserForm1.hide
ss.SelectOnScreen Code, Val

或这个:
ReDim Code(6) As Integer
ReDim Val(6) As Variant
Code(0) = -4
Val(0) = ""
Code(5) = 8
Val(5) = "MyLayer"
Code(6) = -4
Val(6) = "AND>"

~'J'~

fuccaro 发表于 2009-10-27 15:14:33

哇!好消息,我非常熟悉Lisp选择集。再次感谢菲修。
您能告诉我为什么使用ReDim吗?帮助文件不建议使用ReDim来声明新变量,它仅用于更改现有变量。

fixo 发表于 2009-10-28 13:57:26


很高兴帮助
我已经从我现有的代码之一自动复制了这个代码截图
更改以适应
~'J'~
页: [1]
查看完整版本: 圆的中心