关于直线与样条曲线交点问题
已知:直线两端点坐标问题:求模型空间中与已知直线相交的spline的交点坐标
达到效果:输入直线端点坐标,在文本中输出交点坐标和相对应的spline所在层名
如:
X Y LAYER
3.8 3.5 V
4.3 2.5 U
请斑竹和各位大虾帮忙,能给出VBA思路和所使用的主要命令也可
用IntersectWith求交点
语法:RetVal = object.IntersectWith(IntersectObject, ExtendOption)
将object设置为直线对象,将IntersectObject设置为spline对象,反过来也行,ExtendOption为求交类型。RetVal是返回的坐标数组,空值是不相交,否则是所有交点组成的数组。
问题
1.是否需要用选择集(SELECTBYPOLYGON)选择与直线相交的样条曲线??2.怎样知道与直线相交的spLine所在的层??
Re: 问题
可以使用选择集选择所要求交的多段线,然后枚举选择集中的每一个实体,判断与直线相交的情况,而它所在的层,可以直接用属性Layer来获取。谢谢,试验中。。。。。。
55555,请斑竹看出了什么问题??
Dim ssetobj As AcadSelectionSetOn 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呢???
程序没有问题,可能出在对象赋值上
On Error Resume Next会屏蔽错误,因而即使运行中出现错误也会继续,但是有没有达到自己的预定目的就不能确定了。这段代码主要是检查acadObj有没有赋值,是不是有效。还有应确定自己的AutoCAD是在R2000或者以上的版本运行,在R14下只支持后绑定,所有的对象声明一律用Object来代替。CAD版本问题
我机器上装有2002,2004,但2004竟然没有VBA,我FT,用VB变成,工程引用2004,但运行时有时调用2002,有时调用2004,怎样解决这个问题呢??在2004下,是否也可所有声明均用OBJECT呢???Re: CAD版本问题
一、如果是仅运行于某一版本,在“工程”菜单中选择“引用”,引用具体的某一版本的类型库,支持前期绑定。引用Application对象时,使用CreateObject 或 GetObject 函数,后面跟使用依赖于版本的 ProgID,如CreateObject ("AutoCAD.Application.16")。二、如果可运行于不同的版本,则不需要引用类型库,直接声明Application对象为Object类型,但仅支持后期绑定,创建对象使用CreateObject ("AutoCAD.Application")。
在编写代码时,前期绑定的好处是:自动语法检查,自动列出成员,自动数据提示。在运行时可以更快的执行,因为数据的类型已定,不需要在运行期间再进行判断。
后期绑定的好处是用户的AutoCAD版本可以随意,只要支持ActiveX就行。
建议在一台机上只安装一个版本的AutoCAD,只运行一个实例。否则跟AutoCAD的接口部分很可能会混乱。
听君一席话,胜读十年书。斑竹就是斑竹!!
页:
[1]