这篇文章主要介绍TE如何动态标绘锥形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
TE二次开发中,可以标绘三维锥形,能够按照TE中操作的方式进行锥形的标绘。
具体在BS中的javascript代码实现如下:
添加操作的事件:
//左键、右键、实时刷新
sgworld.AttachEvent("OnLButtonDown", OnLButtonDown);
sgworld.AttachEvent("OnRButtonDown", OnRButtonDown);
sgworld.AttachEvent("OnFrame", OnFrame);
//左键事件
function OnLButtonDown(Flags,X,Y)
{
//是否开始标绘的标志
if(cflag)
{
var Iwordpoint= sgworld.Window.PixelToWorld(X,Y,0);
if(Cone==null)
{
var nLineColor = 0xFF0000FF;
//创建锥形对象
Cone=sgworld.Creator.CreateCone(Iwordpoint.Position,1,0,nLineColor,nLineColor,12,0,"circle");
}
else
{
var dis = sgworld.CoordServices.GetDistance(Cone.Position.X, Cone.Position.Y, Iwordpoint.Position.X, Iwordpoint.Position.Y);
//判断先画底部的圆
if(hflag)
{
var dis1 = sgworld.CoordServices.GetDistance(0, Cone.Position.Y, 0, Iwordpoint.Position.Y);
Cone.Height=dis;
cflag = false;
}
//设置半径和圆锥的高度
if (Cone.Height == 0&&!hflag) {
Cone.Radius = dis;
Cone.Height=dis;
hflag=true;
}
}
}
}
//右键事件,结束画锥形
function OnRButtonUpp(Flags,X,Y)
{
cflag = false;
Cone=null;
hflag=false;
}
//实时刷新事件
function Onframe()
{
if(cflag)
{
//底部圆的半径变换
if(Cone!=null)
{
var Imousinfo = sgworld.Window.GetMouseInfo();
var Iwordpoint = sgworld.Window.PixelToWorld(Imousinfo.X, Imousinfo.Y, 0);
//根据距离变换半径
var dis = sgworld.CoordServices.GetDistance(Cone.Position.X, Cone.Position.Y, Iwordpoint.Position.X, Iwordpoint.Position.Y);
if (Cone.Height == 0&&!hflag) {
Cone.Radius = dis;
}
if(hflag)
{
//高度变化
var dis1 = Imethod.getdistance(0, Cone.Position.Y, 0, Iwordpoint.Position.Y);
Cone.Height=dis1;
}
}
}
}
以上是“TE如何动态标绘锥形”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。