明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 392|回复: 2

[资源下载] Web端cad测量面积的示例代码(网页CAD测量面积功能开发)

[复制链接]
发表于 2023-4-27 13:48 | 显示全部楼层 |阅读模式
以下是一个webcad测量面积的示例代码,基于Three.jsjQuery库实现:
HTML部分:
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <meta charset="UTF-8">
  5.     <title>Web端CAD测量面积</title>
  6.     <style>
  7.       canvas {
  8.         width: 100%;
  9.         height: 100%;
  10.         display: block;
  11.       }
  12.     </style>
  13.   </head>
  14.   <body>
  15.     <div id="container"></div>
  16.     <div id="output">
  17.       <p>请点击屏幕选择点开始绘制,再次点击结束绘制并显示面积。</p >
  18.     </div>
  19.     <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  20.     <script src="https://cdn.bootcdn.net/ajax/libs/three.js/r125/three.min.js"></script>
  21.     <script src="app.js"></script>
  22.   </body>
  23. </html>

  24. JavaScript部分(app.js):
  25. // 初始化Three.js场景、相机、渲染器
  26. var scene = new THREE.Scene();
  27. var camera = new THREE.PerspectiveCamera(
  28.   75, window.innerWidth/window.innerHeight, 0.1, 1000 );
  29. var renderer = new THREE.WebGLRenderer({ antialias: true });
  30. renderer.setSize( window.innerWidth, window.innerHeight );
  31. document.getElementById("container").appendChild(renderer.domElement);

  32. // 初始化画线的材质
  33. var material = new THREE.LineBasicMaterial( { color: 0x0000ff } );

  34. // 初始化测量变量
  35. var linePoints = [];
  36. var area = 0;

  37. // 监听鼠标点击事件,绘制线段并计算面积
  38. document.addEventListener( 'click', onClick, false );

  39. function onClick( event ) {
  40.   // 获取鼠标点击坐标
  41.   var mouse = new THREE.Vector2();
  42.   mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
  43.   mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;

  44.   // 创建射线
  45.   var raycaster = new THREE.Raycaster();
  46.   raycaster.setFromCamera( mouse, camera );

  47.   // 计算射线和平面的交点,并绘制线段
  48.   var plane = new THREE.Plane(new THREE.Vector3(0, 0, 1), 0);
  49.   var intersection = new THREE.Vector3();
  50.   raycaster.ray.intersectPlane(plane, intersection);
  51.   linePoints.push(intersection);
  52.   if (linePoints.length > 1) {
  53.     var geometry = new THREE.BufferGeometry().setFromPoints(linePoints);
  54.     var line = new THREE.Line(geometry, material);
  55.     scene.add(line);

  56.     // 计算面积
  57.     var v1 = linePoints[linePoints.length-2];
  58.     var v2 = linePoints[linePoints.length-1];
  59.     area += (v1.x * v2.y - v2.x * v1.y) / 2;
  60.     $("#output").html("<p>面积: " + Math.abs(area).toFixed(2) + "</p >");
  61.   }
  62. }

  63. // 渲染场景
  64. function animate() {
  65.   requestAnimationFrame( animate );
  66.   renderer.render( scene, camera );
  67. }
  68. animate();<span style="font-family: 宋体; font-size: 10.5pt; background-color: rgb(255, 255, 255);"> </span>
复制代码
这个示例代码可以在浏览器中运行,并实现了在Three.js场景中绘制线段、计算面积等功能在线CAD有很多其他功能,可以到梦想CAD控件官网查看。以上代码可以根据实际需求对代码进行修改和拓展。

发表于 2023-4-27 18:13 | 显示全部楼层
这个网页代码运行不了呢,看不到效果。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2023-5-4 11:57 | 显示全部楼层
Noangler 发表于 2023-4-27 18:13
这个网页代码运行不了呢,看不到效果。

联系q:1298095305
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 17:11 , Processed in 0.181081 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表