明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3294|回复: 9

关于直线与样条曲线交点问题

[复制链接]
发表于 2003-4-21 19:32 | 显示全部楼层 |阅读模式
已知:直线两端点坐标
问题:求模型空间中与已知直线相交的spline的交点坐标
达到效果:输入直线端点坐标,在文本中输出交点坐标和相对应的spline所在层名
如:
X       Y        LAYER
3.8    3.5         V
4.3    2.5         U
请斑竹和各位大虾帮忙,能给出VBA思路和所使用的主要命令也可
发表于 2003-4-21 19:43 | 显示全部楼层

用IntersectWith求交点

语法:
RetVal = object.IntersectWith(IntersectObject, ExtendOption)
将object设置为直线对象,将IntersectObject设置为spline对象,反过来也行,ExtendOption为求交类型。RetVal是返回的坐标数组,空值是不相交,否则是所有交点组成的数组。
 楼主| 发表于 2003-4-21 20:17 | 显示全部楼层

问题

1.是否需要用选择集(SELECTBYPOLYGON)选择与直线相交的样条曲线??
2.怎样知道与直线相交的spLine所在的层??

本帖子中包含更多资源

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

x
发表于 2003-4-21 20:29 | 显示全部楼层

Re: 问题

可以使用选择集选择所要求交的多段线,然后枚举选择集中的每一个实体,判断与直线相交的情况,而它所在的层,可以直接用属性Layer来获取。
 楼主| 发表于 2003-4-21 20:41 | 显示全部楼层

谢谢,试验中。。。。。。

 楼主| 发表于 2003-4-22 18:23 | 显示全部楼层

55555,请斑竹看出了什么问题??

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
fType(0) = 0
fData(0) = "s*"
filtertype = fType
filterdata = fData
ZoomAll
ssetobj.Select acSelectionSetall, , , filtertype, filterdata
ZoomPrevious
''遍历选择集
For Each pickedobjs In ssetobj
pickedobjs.highlight (True)
pickedobjs.Update
next
程序可以运行,但为什么没有选择到spline呢???
发表于 2003-4-22 19:12 | 显示全部楼层

程序没有问题,可能出在对象赋值上

On Error Resume Next会屏蔽错误,因而即使运行中出现错误也会继续,但是有没有达到自己的预定目的就不能确定了。这段代码主要是检查acadObj有没有赋值,是不是有效。还有应确定自己的AutoCAD是在R2000或者以上的版本运行,在R14下只支持后绑定,所有的对象声明一律用Object来代替。
 楼主| 发表于 2003-4-23 09:19 | 显示全部楼层

CAD版本问题

我机器上装有2002,2004,但2004竟然没有VBA,我FT,用VB变成,工程引用2004,但运行时有时调用2002,有时调用2004,怎样解决这个问题呢??在2004下,是否也可所有声明均用OBJECT呢???
发表于 2003-4-23 10:27 | 显示全部楼层

Re: CAD版本问题

一、如果是仅运行于某一版本,在“工程”菜单中选择“引用”,引用具体的某一版本的类型库,支持前期绑定。引用Application对象时,使用CreateObject 或 GetObject 函数,后面跟使用依赖于版本的 ProgID,如CreateObject ("AutoCAD.Application.16")。
二、如果可运行于不同的版本,则不需要引用类型库,直接声明Application对象为Object类型,但仅支持后期绑定,创建对象使用CreateObject ("AutoCAD.Application")。
在编写代码时,前期绑定的好处是:自动语法检查,自动列出成员,自动数据提示。在运行时可以更快的执行,因为数据的类型已定,不需要在运行期间再进行判断。
后期绑定的好处是用户的AutoCAD版本可以随意,只要支持ActiveX就行。
建议在一台机上只安装一个版本的AutoCAD,只运行一个实例。否则跟AutoCAD的接口部分很可能会混乱。
 楼主| 发表于 2003-4-23 10:58 | 显示全部楼层

听君一席话,胜读十年书。斑竹就是斑竹!!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-16 16:46 , Processed in 0.157377 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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