明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1849|回复: 2

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

[复制链接]
发表于 2003-4-6 03:41 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 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中有无简单方法求点到直线的距离??
发表于 2003-4-8 09:58 | 显示全部楼层

原因:

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

感谢leeyeafu斑竹!!

实验通过,原因正如您所说
但我看的书没有一本提这个问题,我FT
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 14:30 , Processed in 0.307925 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表