求方位角
CAD图上有已知的直线(Line),求直线的方位角。。。大家帮帮忙啊。。。
本帖最后由 cushi 于 2011-11-1 17:25 编辑
用下面的程序选取直线就出来角度
(* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 180) cushi 发表于 2011-11-1 17:25 static/image/common/back.gif
用下面的程序选取直线就出来角度
(* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 18 ...
谢谢你的回答。。但是我学的是autocad net开发,所以看不太懂。。能帮忙翻译下吗? 各位大侠帮忙翻译下。。 Dim db As Database = HostApplicationServices.WorkingDatabase
Dim ed As Editor = AcadApp.DocumentManager.MdiActiveDocument.Editor
Dim optSel As New PromptSelectionOptions
optSel.MessageForAdding = "選取物件"
Dim resSel As PromptSelectionResult = ed.GetSelection(optSel)
If resSel.Status <> PromptStatus.OK Then
Return
Else
Dim sSet As SelectionSet = resSel.Value
Dim ids As ObjectId() = sSet.GetObjectIds()
Using trans As Transaction = db.TransactionManager.StartTransaction()
For Each sSetEntId As ObjectId In ids
Dim ent As Entity = trans.GetObject(sSetEntId, OpenMode.ForRead)
Dim ent_Name As String = ent.GetType().Name
If ent_Name = "Line" Then
Dim BD_Line As Line = trans.GetObject(sSetEntId, OpenMode.ForRead)
Dim Angle As Double = BD_Line.Angle
end if
Next
trans.Commit()
End Using
End If 本帖最后由 cabinsummer 于 2011-11-1 22:45 编辑
chengw 发表于 2011-11-1 17:48 http://bbs.mjtd.com/static/image/common/back.gif
各位大侠帮忙翻译下。。
(* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 180)
从最里面的括号读起
(entsel)选择图元
(car (entsel))提取该图元名
(vlax-ename->vla-object (car (entsel)))转换为ObjectActiveX图元名
(vla-get-angle (vlax-ename->vla-object (car (entsel))))获取该图元的角度属性,单位为弧度
(* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 180)转换为角度
LISP就是精练啊,VBA要写一大堆代码,感叹颇多啊!!! 本帖最后由 VBALISPER 于 2011-11-2 12:29 编辑
一点建议,这个量出来的角度不是传统意义上的方位角,是CAD的角度.传统的方位角,0度是在正北方.应该还要加上一个判断,如果<90度,=90-X,如果>90,=450-X.
方位角的反向延长线方向能不能加上去呢,比如方位为10度的线,另一端方位为10+180=190度.
260-180=80度.即如果<180,=180+X。如果>180,即=X-180。
偶是初学,还不会这个。麻烦会的朋友补充一下。谢谢。
我也研究一下,争取自己做出来。
另外,多段线的方位这个不能量,可能要复杂点吧。
说干就干,写的这个出错了.没看出原因来.
(if (< (* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 180) 90) (- 90 (* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 180)) (- 450 (* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 180)) ) 本帖最后由 VBALISPER 于 2011-11-2 12:53 编辑
cushi 发表于 2011-11-1 17:25 static/image/common/back.gif
用下面的程序选取直线就出来角度
(* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 18 ...
请问cabinsummer你写这句(cvunit (vla-get-angle (vlax-ename->vla-object (car (entsel)))) "radian" "degree")和他这句(* (/ (vla-get-angle (vlax-ename->vla-object (car (entsel)))) pi) 180)
原理上有何区别