首页 > 其他分享 >Web cad(私有云CAD SDK)中实现插入图块的方法

Web cad(私有云CAD SDK)中实现插入图块的方法

时间:2023-10-07 16:02:31浏览次数:46  
标签:Web blkRef 图块 mxcad 插入 mxweb new cad

前言

CAD制图的过程中会有很多重复的图元需要绘制,为了节约绘制时间,我们会把部分图元保存成图块,下次就可以快速和多次的插入到相应的图纸位置中,提高绘图效率。

网页版CAD页面中要实现插入图块功能,首先需要将这个图块dwg文件转换成mxweb文件,我们需要下载MxDraw云图开发包,根据入门文档的操作, 实现dwg文件到mxweb文件的转换, 让它支持在页面中显示。

下载试用包之后,我们按下图所示将dwg文件转成mxweb文件:

 

更多关于图纸转换程序的使用说明可以参考入门文档或者mxcad文档-图纸转换

有了mxweb文件,就可以通过mxcad npm包实现插入图块功能。

注意:无论是图纸还是图块 最终转换后都是mxweb文件。

在阅读了mxcad文档-快速入门后, 你可以自己按照步骤去实现页面加载mxweb文件显示图纸,也可以直接下载或者参考我们提供的示例源码

实现插入图块功能

我们就基于示例源码中vite目录这个由vite打包工具使用mxcad的初始化示例项目为例 来开始实现一个插入图纸的功能,代码如下:

import { createMxCad } from "mxcad"

(async ()=> {

    const mxcad = await createMxCad({

        canvas: "#myCanvas",

        locateFile: (fileName) => {

            return new URL(`/node_modules/mxcad/dist/wasm/${mode}/${fileName}`, import.meta.url).href

        },

        fileUrl: new URL("../public/test2.mxweb", import.meta.url).href,

        fontspath: new URL("../node_modules/mxcad/dist/fonts", import.meta.url).href,

    })

 

    // 这里用定时器是保证稳定的测试, 正常来说是在需要的时候调用就好

    setTimeout(async () => {

        // 加载图块转换的mxweb文件

        let blkrecId = await mxcad.insertBlock(new URL("../public/tree.mxweb", import.meta.url).href, "tree");

 

        // id是否有效

        if (!blkrecId.isValid()) {

            return;

        }

        // 实例化一个块

        let blkRef = new McDbBlockReference();

        // 将加载的图块ID赋值给它

        blkRef.blockTableRecordId = blkrecId;

        // 然后计算一下这个块的包围盒

        let box = blkRef.getBoundingBox();

        if (box.ret) {

            let dLen = box.maxPt.distanceTo(box.minPt);

            // 如果图块包围盒特别小

            if (dLen > 0.00001) {

                // 则需要放大

                blkRef.setScale(mxcad.getMxDrawObject().screenCoordLong2Doc(100) / dLen);

            }

        }

 

        // 这里开始做用户交互

        let getPoint = new MxCADUiPrPoint();

        getPoint.setMessage("\指定插入基点");

 

        // 动态绘制这个图块

        getPoint.setUserDraw((v, worldDraw) => {

            blkRef.position = v;

            worldDraw.drawMcDbEntity(blkRef);

        });

 

        // 用户鼠标点击时得到位置

        let pt = await getPoint.go();

        if (!pt) return;

        blkRef.position = pt;

        // 绘制这个图块

        mxcad.drawEntity(blkRef);

    }, 1000)

})()

 

效果如下图:

这样我们就完成了图块的插入。

DEMO源码: 

https://gitee.com/mxcadx/mxdraw-article/tree/master/插入图块功能/demo.zip

 

标签:Web,blkRef,图块,mxcad,插入,mxweb,new,cad
From: https://www.cnblogs.com/yzy0224/p/17746522.html

相关文章

  • 香港Web3.0生态现状
    目前香港Web3.0生态正在快速发展。香港政府和金融机构正在积极推动Web3.0生态的建设,以推动数字经济和智慧城市的发展。香港政府已经发布了有关虚拟资产发展的政策宣言,鼓励和监管并重,加大力度推动虚拟资产产业向前发展。同时,香港证监会也在致力于建立健全的监管制度,以引导行业健康发......
  • 解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时
    方法一:在awk中已经判断好并发连接数量的ip地址,传给whileread执行防火墙规则封掉对应的ip。root@centos8~]#catddos.sh#!/bin/bashss-nt|awk-F '[:]+''/ESTAB/{ip[$(NF-2)]++}END{for(iinip)if(ip[i]>100)printi}'|awk-F']''{print$1}'|whilere......
  • Java Web学习路线
    1.基础概念Web应用程序基础客户端-服务器模型HTTP协议URI和URL浏览器和服务器交互过程2.Servlet编程Servlet概述Servlet生命周期Servlet配置和映射请求和响应对象请求参数的获取和处理Servlet过滤器会话管理和Cookie3.JSP(JavaServerPages)JSP基础......
  • C# webservice接口调用实例
    https://blog.csdn.net/qq_43544461/article/details/130768314SOAP协议SOAP(SimpleObjectAccrssProtocol,简单对象访问协议)是一种简单的基于XML的协议,可以使应用程序在分散或分布式的环境中通过HTTP来交换信息。SOAP是WebService的通信协议,SOAP提供了标准的RPC方法来调用WebS......
  • CTFer blogs--Web-easyphp
    一、题目链接:https://adworld.xctf.org.cn/challenges/list二、解法步骤:本题打开后是一段php代码,首先进行代码审计: 题目要求输入两个变量a和b(还有个c),都符合其对应条件即可拿到flag。先来看变量a:isset(a)是php中最常用来判断变量是否被设置以及非空有值则返回true,否则返回fa......
  • 【TinyWebServer】13踩坑和面试题
    踩坑在此项目中遇到的一些比较有意义的问题大文件传输先看下游双书上发送逻辑这块的代码,发送数据只调用了writev函数,并对其返回值是否异常做了处理。boolhttp_conn::write(){ inttemp=0; intbyte_have_send=0; intbyte_to_send=m_write_idx; if(byte_to_......
  • 【TinyWebServer】12注册登录
    整体概述本项目中,使用数据库连接池实现服务器访问数据库的功能,使用POST请求完成注册和登录的校验工作。本文内容本篇将介绍同步实现注册登录功能,具体的涉及到流程图,载入数据库表,提取用户名和密码,注册登录流程与页面跳转的的代码实现。流程图具体的,描述了GET和POST请求下的页......
  • Spring-Boot 整合 J2EE Web组件
    一,整合Servlet1,通过注解扫描完成Servlet组件的注册1.1编写servlet/***SpringBoot整合Servlet方式一**<servlet>*<servlet-name>FirstServlet</servlet-name>*<servlet-class>com.bjsxt.servlet.FirstServlet</servlet-class>*</servlet>**<servlet-......
  • webapi 登录接口acctID参数获取SQL
    USEK3DBConfiger20216155555176selectA.FNUMBER,B.FNAME,A.FDATABASENAME,A.FDATACENTERIDFROMT_BAS_DATACENTERASALEFTJOINT_BAS_DATACENTER_LASBONA.FDATACENTERID=B.FDATACENTERIDANDA.FLANGUAGE=B.FLOCALEID FDATACENTERID字段......
  • webpack - 构建支持TypeScript的React应用
    1.初始化package.json创建项目文件夹mkdirwebpack-react-tscdwebpack-react-ts初始化项目package.jsonyarninit-y{"name":"webpack-react-ts","version":"1.0.0","main":"index.js","license&......