VBA-从2点获取角度
大家好。(aCad2007)我用这段代码在VBA中获得了2个点。
如何获得它们之间的角度?如90度或45度
谢谢 也尝试过。。。
Dim d As Double
d = ThisDrawing.Utility.AngleFromXAxis(vPoint1,vPoint2)
Debug.Print ThisDrawing.Utility.AngleToString(d, acDegrees, 2)
,但无论vPoint1和2是什么,它都只返回0.00。 当你说得到两点之间的角度时,你是在暗示有一个共同的顶点吗?也许是世界起源?
AngleFromXAxis的工作方式是使用提供的两个点创建一条线,并返回它与世界X轴的角度。
如果确实存在公共顶点,则应将其与其他两个点配对,使用AngleFromXAxis两次,然后从另一个中减去一个。
令我沮丧的是,我一年大约有3周的时间来扮演Autocad大师,正如你所想象的那样,我做得很差劲。(现在,如果你有一些SQL或.NET,那么我可以)所以当你说“公共顶点”或“世界起源”时,我不知道那是什么。(我继承了这个项目,你的程序员是什么?在这里修复这个)
但基本上,我用GetPoint得到2个点,然后插入一个现有的图形,均匀分布在这条线上。他们要求的是旋转刚插入的图形,使其与点成什么角度。因此,如果两个点是180度(上下),则将图形旋转180度。如果这两个点从左到右,则为0度。所以我只有GetPoint函数中的两个数组。
再次感谢 简单的老式罪恶
当你得到一个点时,它由3部分x,y,z组成,你只需要应用一个简单的正弦规则sin(ang)=o/h cos=a/h tan=o/a(其他人有回答ohahoa的习惯)
ie pt1(0)=x1 pt1(1)=y1 pt1(2)=z
pt2(0)=x2 pt2(1)=y2 pt1(2)=z
a=pt2(0)-pt1(0)
o=pt2(1)-pt1(1)
h=sqrt(a^2+o^2)
尝试记住pt1和pt2的正确dim
将dblPOINT(0到2)设置为双精度
我会写两个函数,距离和角度,这样你们可以在其他程序中随时使用它们。它可能是lisp中的标准vba函数(距离pt1 pt2)(角度pt1 pt2)? BIGAL提到的标准VBA函数实际上就是这个图。公用事业角度x轴(和ThisDrawing.Utility.GetDistance表示距离)。毫无疑问,AngleFromXAxis使用了相同的数学公式。
然而,需要注意的是,在UCS中使用这两个函数而不是世界坐标系时。如果可能存在替代UCS,则需要坐标转换。参见示例:
Sub AngleSample()
Dim vPoint1 As Variant
Dim vPoint2 As Variant
Dim vTrans1 As Variant
Dim vTrans2 As Variant
Dim d As Double
Dim strMsg As String
With ThisDrawing.Utility
On Error Resume Next
vPoint1 = .GetPoint(, "Select Point 1: " & vbCr)
If Err <> 0 Then Exit Sub
vTrans1 = .TranslateCoordinates(vPoint1, acWorld, acUCS, 0)
vPoint2 = .GetPoint(vTrans1, "Select Point 2: ")
If Err <> 0 Then Exit Sub
On Error GoTo 0
vTrans2 = .TranslateCoordinates(vPoint2, acWorld, acUCS, 0)
d = .AngleFromXAxis(vTrans1, vTrans2)
strMsg = .AngleToString(d, acDegrees, 2)
.Prompt "Angle in Degrees is " & strMsg & vbLf
End With
End Sub 肖特,比格尔,谢谢
也许我看错了。。。如果你看我上传的图片。您可以看到,我插入的图形(称为椅子)跨使用GetPoint选择的线插入。因此,如果这条线是从12点到6点,那么椅子被均匀地间隔90度插入。如果线是从左向右的,则椅子将插入0度。
至少直到本周我都是这样理解的。现在他们希望它遵循最右边的数字。这就是为什么我要计算学位。
我想我看错了。任何评论都会很有帮助。
谢谢
可以使用旋转。。键入Ro,然后选择对象。。。进来选择参考,该参考是来自对象的新角度。。然后输入要旋转的指定角度。。
对不起,我英语不好。。
奥利弗 我认为你做错的是计算角度排序,Autocad以弧度逆时针测量角度,在编写代码时不注意单位设置,因此有时你甚至需要知道要在哪个象限中加90度或减90度,这样块就不会出现倒置。还要确保你的世界UCS。
对于你的方块,你将线的角度加1.5714,然后倒置调整。 这是一部电影。。。
3
页:
[1]
2