明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1425|回复: 6

[求助]帮我修改一下这段代码

[复制链接]
发表于 2009-8-9 03:44:00 | 显示全部楼层 |阅读模式

代码如下:

QD = acadDoc.Utility.GetPoint(, "起点:")
ZD = acadDoc.Utility.GetPoint(, "终点:")
    Set lineObj = acadDoc.ModelSpace.AddLine(QD, ZD)
    Set SelSetLineObject = acadDoc.SelectionSets.Add("AA")
    SelSetLineObject.Select acSelectionSetCrossing, QD, ZD
    InsertTextPoint = acadDoc.Utility.GetPoint(, vbCr & "插入点:")
    intPoints(0) = InsertTextPoint(0)
    intPoints(1) = InsertTextPoint(1)

For index = 0 To SelSetLineObject.Count - 1
 
          Set e = SelSetLineObject.Item(index)
         If e.ObjectName = lineObj Then
            pt1 = e.StartPoint  ' 直线起点坐标         
            pt1 = e.EndPoint    ' 直线终点坐标
       Set TextObject = acadDoc.ModelSpace.AddText(pt1, InsertPoint,1)
       Next
SelSetLineObject.Delete

图上有若干条直线,有平行有交叉,我从QD点到ZD点画一条穿过这几条线的直线,然后在指定点按照从QD点到交叉点由近到远的顺序依次插入图上原有直线两端的坐标,我上面的代码只能无顺序插入,麻烦那位大哥帮我改一下!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2009-8-9 07:22:00 | 显示全部楼层
你这种情况需要求交点到指定点的距离。进行排序后,再操作。
发表于 2009-8-9 11:53:00 | 显示全部楼层

请教mccad,在VBA中能否调用或实现ARX中的“Getpointbydistance”函数功能?

发表于 2009-8-9 13:31:00 | 显示全部楼层
VBA没有提供相应的方法,要借助Vlax类,不过很不稳定
 楼主| 发表于 2009-8-10 22:22:00 | 显示全部楼层

是不是很难,有没有其他方法可以达到这种效果!

发表于 2009-8-10 22:37:00 | 显示全部楼层

不算难啊。你需要做的是:

1.求交点,用IntersectWith方法。

2.用二维数组保存直线句柄与距离。

3.用排序法对数组按距离来排序。

4.排完序后,直线就已经排好序了。

 楼主| 发表于 2009-8-14 01:05:00 | 显示全部楼层
我对这个不是很熟,能不能给点代码?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 02:33 , Processed in 0.158049 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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