|
送给大家学习下。
import kcs_ui
import kcs_util
import kcs_draft
import KcsTransformation2D
import KcsPoint2D
import math
import KcsStat_point2D_req
import KcsCursorType
def run(*args):
while 1:#如果不点击完成或者按回车键或者ESC键,进入循环。
sp = KcsPoint2D.Point2D()#起点
ep = KcsPoint2D.Point2D()#终点
stp=KcsStat_point2D_req.Stat_point2D_req()
stp.SetDefMode("ModeAuto")#2D选点模式,自动捕捉点
transf = KcsTransformation2D.Transformation2D()
res1,sp= kcs_ui.point2D_req("指定第一点",sp,stp)
if res1==kcs_util.operation_complete() or res1==kcs_util.cancel() :#点击完成或者按回车键或者ESC键,退出循环。
return 1#退出
else:
res2,ep = kcs_ui.point2D_req("指定第二点",ep,stp)
if res2==kcs_util.operation_complete()or res2==kcs_util.cancel():#点击完成或者按回车键或者ESC键,退出循环。
return 1#退出
else:
try:
handle = kcs_draft.view_identify(sp)#点选视图句柄
kcs_draft.element_transformation_get(handle, transf)#视图句柄获取transf
scale = transf.GetScale() #获取视图比例因子
dx=(ep.X-sp.X)/scale[0]#计算水平间距
dy=(ep.Y-sp.Y)/scale[0]#计算垂直间距
l=math.sqrt(dx*dx+dy*dy)#两点距离
if dx==0:#垂直情况不能用反三角计算,给出垂直判定。
a=90.0#水平倾角
else:
a=abs(math.atan(dy/dx)*180/3.14159265)#计算水平倾角
kcs_ui.message_noconfirm("*"*120) #分割线
kcs_ui.message_noconfirm(("水平增量:=%10.0f;垂直增量=%10.0f;水平倾角=%10.0f;距离=%10.0f,视图比例=%10.0f"%(dx,dy,a,l,1/scale[0])) )
#显示内容
kcs_ui.message_noconfirm("*"*120) #分割线
except:
kcs_ui.message_noconfirm(kcs_draft.error)
|
|