yu-gn 发表于 2003-4-6 03:41:00

老大,这里怎么冷冷清清呢??----->leeyeafu转移

本帖最后由 作者 于 2003-4-6 3:41:05 编辑

pt1(0) = X1: pt1(1) = Y1: pt1(2) = 0
pt2(0) = X2: pt2(1) = Y2: pt2(2) = 0
Dim dist As Variant
dist = Text3.Text
Angle = acadObj.ActiveDocument.Utility.AngleFromXAxis(pt1, pt2)
Angle = Angle + pi / 2
xpt1 = acadObj.ActiveDocument.Utility.PolarPoint(pt1, Angle, dist)
xpt2 = acadObj.ActiveDocument.Utility.PolarPoint(pt2, Angle, dist)
xpt3 = acadObj.ActiveDocument.Utility.PolarPoint(pt2, Angle, -dist)
xpt4 = acadObj.ActiveDocument.Utility.PolarPoint(pt1, Angle, -dist)
''创建选择集
Dim ssetobj As AcadSelectionSet
On Error Resume Next
Set ssetobj = acadObj.ActiveDocument.SelectionSets("ss")
    If Err Then Set ssetobj = acadObj.ActiveDocument.SelectionSets.Add("ss")
ssetobj.Clear
''选择实体
Dim filtertype As Variant
Dim filterdata As Variant
Dim fType(0) As Integer
Dim fData(0) As Variant
Dim pickedobjs As AcadEntity
Dim xpt(0 To 11) As Double
fType(0) = 0
fData(0) = "text"
filtertype = fType
filterdata = fData
xpt(0) = xpt1(0)
xpt(1) = xpt1(1)
xpt(2) = xpt1(2)
xpt(3) = xpt2(0)
xpt(4) = xpt2(1)
xpt(5) = xpt2(2)
xpt(6) = xpt3(0)
xpt(7) = xpt3(1)
xpt(8) = xpt3(2)
xpt(9) = xpt4(0)
xpt(10) = xpt4(1)
xpt(11) = xpt4(2)
ssetobj.SelectByPolygon acSelectionSetCrossingPolygon,xpt,filtertype,filterdata
''遍历选择集
For Each pickedobjs In ssetobj
retpt = pickedobjs.InsertionPoint
rettxt = pickedobjs.TextString
Write #2, rettxt, retpt(0), retpt(1), retpt(2)
Next
''删除选择集
ssetobj.Delete
小弟学VB不久,以上代码是用VB做的选择集问题,但为什么每次读入文件中的TEXT不全呢??并且每次结果都不同,希望老大帮忙分析一下。
还有一个问题就是已知一点和一直线两端点坐标,除了数学方法外,VBA中有无简单方法求点到直线的距离??

leeyeafu 发表于 2003-4-8 09:58:00

原因:

我并不觉得这里冷清,这只是明经的一个版块而已,只要明经热闹了,我相信源码分析区自然不能说是冷清了。当然,相对于其他版块,这里显得更加综合,大家可能更习惯在各专门的版块讨论问题,作为源码分析版主,我也经常到其他版块去看看。最后,本版主武功不高,不足以服众,也许也是这里帖子比较少的原因。
以上代码经过分析调试,已找到问题的原因,但没把握说清楚。另外,最近有点忙,回复不够及时。
我猜想,选择集的SelectByPolygon方法所需要的PointList参数要求的点应该都在ACAD图形屏幕中,若有点在屏幕外,SelectByPolygon方法将忽略这些点,由于用户使用过Zoom或Pan命令,使得在屏幕中的点不同,从而造成选择集内容不同。
解决方法,在SelectByPolygon方法前ZoomAll,选择集构造后ZoomPrevious恢复屏幕。即:
ZoomAll
ssetobj.SelectByPolygon acSelectionSetCrossingPolygon, xpt, _
            filtertype, filterdata
ZoomPrevious

yu-gn 发表于 2003-4-17 16:13:00

感谢leeyeafu斑竹!!

实验通过,原因正如您所说
但我看的书没有一本提这个问题,我FT
页: [1]
查看完整版本: 老大,这里怎么冷冷清清呢??----->leeyeafu转移