priyanka_mehta 发表于 2022-7-6 17:04:06

从相交创建线

大家好,
 
我有三条折线。其中两条相交并形成类似X的形状。我的第三条多段线不与这两条相交。现在,我想创建一条垂直线的起点,作为这两条线的交点。
 
任何帮助都将不胜感激。
 
谢谢和问候,
普里扬卡

lpseifert 发表于 2022-7-6 17:28:03

............

Lee Mac 发表于 2022-7-6 17:34:20

我假设你的意思是垂直于第三条线,这条线与其他两条线不相交?

Lee Mac 发表于 2022-7-6 17:49:10

你真的需要一个LISP来完成这一点吗?难道不是像我在示例中所做的那样,自己画线更容易吗?
 
lpseifert已经向你展示了如何在上面的帖子中。。。

priyanka_mehta 发表于 2022-7-6 17:54:42

是的,我确实需要一个代码,因为我有数百个这样的点。。实际上,我需要一个VBA代码来实现这个。。。
 
 
还有一件事。。。
我想要两条线相交的坐标。。我使用的代码如下。。当我突然发现这个错误时,代码运行得非常好
 
“运行时错误”-2145320923(8021001c)
AutoCAD主窗口不可见“。如何消除此错误!
 
我刚接触AutoCAD VBA 2天,我不知道这个错误意味着什么
 
 
请帮忙!!
 
 
我使用的代码是:
//获取交点
 
Sub GetIntersectionPoints()
将SOS设置为AcadSelectionSet
将对象设置为AcadSelectionSet
对于本图纸中的每个SOS。选择集
如果是SOS。那么Name=“MySS”
此图纸。选择集(“mys”)。删去
退出
如果结束
下一个
此图纸。选择集。添加(“MySS”)
设置objSS=ThisDrawing。选择集(“mys”)
objSS。在屏幕上选择
'仅过滤直线和多段线
Dim ArrayToRemove()作为身份
Dim objEnt As AcadEntity模糊对象
Dim Num为整数
数值=-1
对于OBJS中的每个objEnt
如果是objEnt。ObjectName“AcDbLine”和objEnt。ObjectName“AcDbPolyline”然后
Num=Num+1
如果Num=0,则
ReDim ArrayToRemove(0)
其他的
ReDim Preserve ArrayToRemove(Num)
如果结束
设置ArrayToRemove(Num)=对象
如果结束
下一个
objSS。RemoveItems阵列删除
如果是objSS。然后计数>0
其他的
MsgBox“未选择直线和多段线!”
出口接头
如果结束
Dim ArrayWithCoordinates()为双精度
数值=-1
Dim i为整数
尺寸j为整数
将k设置为整数
变光Pts
对于i=0到objSS。计数-2
对于j=i+1到objSS。计数-1
Pts=objSS(i)。相交(objSS(j),acExtendNone)
如果UBound(Pts)>-1,则
对于k=0到UBound(Pts)
Num=Num+1
如果Num=0,则
ReDim ArrayWithCoordinates(0)
其他的
ReDim Preserve ArrayWithCoordinates(Num)
如果结束
阵列坐标(Num)=Pts(k)
下一个
如果结束
下一个
下一个
'获取为更好的用户可视化选择的直线和多段线
对于i=0到objSS。计数-1
objSS(一)。突出显示True
下一个
 
'显示所有交点的坐标
Dim MessageArray作为字符串
MessageArray=“”
如果Num>-1,则
对于i=0到UBound(带坐标的阵列)-2步骤3
MessageArray=MessageArray&ArrayWithCoordinates(i)&_
“,”&ArrayWithCoordinates(i+1)&“,”&ArrayWithCoordinates(i+2)&vbCr
下一个
MsgBox MessageArray,“交点坐标”
其他的
MsgBox“未找到交点”
如果结束
末端接头
 
 
 
谢谢和问候,
普里扬卡

priyanka_mehta 发表于 2022-7-6 18:08:41

您好。。
我已经找到了解决方案来消除idotic运行时错误。。我只需要把那个表单变成非模态的
 
无论如何,我仍然需要一个VBA代码,用于从交点创建垂直线。
 
谢谢和问候,
普里扬卡
页: [1]
查看完整版本: 从相交创建线