前言:

近期在做系统柜和衣柜导出CAD的工作,现阶段的工作是根据不同的厂商定制不同的CAD导出,其中房间平面图、顶脚线截面图、柜体立面图、侧视图、平面图、门板图等模块功能都基本固定,不同的是不同厂商的边框模板不一样,不同厂商需

要的内容是在房间平面图、顶脚线截面图、柜体平面图、侧视图、平面图、门板图之中选择和组合,变化的都是一些细节比如颜色、线段类型等等,但是如果每增加一个厂商就要写一套代码就很难让人接受了,为此编写一套可扩展可配置个性化需求的

导出CAD方案势在必行,为此我构思了如下三个阶段的优化方案供大家参考。

优化方案:

Step 1 – 代码模块化并用文本编辑方式配置参数

这个阶段是整个优化方案最基础最重要的阶段,在这个阶段中需要实现能单独生成各部分图形的模块化并且图形可以平移、比例拉伸等并参数化,然后在xml文件中记录各个图形的细节参数如边框路径、每个图形距离、图形线条样式等,由于导出CAD

功能为dll实现供网站调用,由于功能需要配置文件需放在服务器端,为方便编辑可以做一个页面读取并编辑xml方便在客户端电脑浏览器上编辑,并做一定的校验避免错误信息录入。

Step 2 – 图形化模板编辑参数

这个阶段采用上传dxf模板的形式来代替编辑xml,开发人员根据一定的规则在dxf的CAD文件中设置一些特殊字符表示房间立面图、柜体平侧立图位置及间距,不同的带样式的线段图形等信息代表所需参数线段参数信息,用程序解析该上传dxf的模板

CAD文件并转换成xml供下次使用而不是每次解析dxf以提高效率,有了xml后就能复用Step 1的功能导出CAD。

Step 3 – 图形化样例人工智能提取参数

这个阶段同样采取上传dxf的CAD文件,但文件中不再包含特殊字符作为占位符表示图形的位置,而是实实在在的一张CAD样例,采用C# GDI+技术将dxf图像绘制出对应的图片,根据图片使用IronPython调用C#封装OpenCV的EmguCV进行图像识别,提

取出图形中的边框,图形间距等信息,利用Tesseract OCR C#接口识别文字获取获取坐标等信息达到获取参数的功能,再将这些参数保存为xml供下次使用,之后复用Step 1的功能,现在我正在学习人工智能方面的知识,理论上来说这些功能基本都能实现。

3D柜体导出CAD优化参考方案的更多相关文章

  1. jvm出现OutOfMemoryError时处理方法/jvm原理和优化参考

    The heap stores all of the objects created by your java program.The heap's contents is monitored by ...

  2. 比较全面的MySQL优化参考(上下篇)

    转自:http://imysql.com/2015/05/24/mysql-optimization-reference-1.shtml 本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨 ...

  3. 比较全面的MySQL优化参考

      本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要 ...

  4. Nginx配置优化参考

    Nginx配置优化参考                                                                                          ...

  5. Nginx性能优化参考

    nginx性能优化参考 1)调整配置文件中的配置项的值(配置文件:nginx.conf) worker_processes auto;开启的进程数,一般配置为跟逻辑CPU核数一样worker_rlim ...

  6. IIS 程序池优化配置方案

    内容目录 IIS 程序池优化配置方案IIS高并发配置一.IIS站点绑定程序池设置二.支持万级并发请求 IIS 程序池优化配置方案 最近由于系统的客户越来越多,有客户反映访问速度变慢,尤其是api的请求 ...

  7. 3D max导出的设置选项

    一3D max导出的设置选项

  8. tp5.1 phpspreadsheet- 工具类 导入导出(整合优化,非原创,抄一抄,加了一些自己的东西,)

    phpspreadsheet-工具类 导入导出(整合优化,非原创,抄一抄,加了一些自己的东西)1. composer require phpoffice/phpspreadsheet2. 看最下面的两 ...

  9. NX二次开发-NXOPEN工程图导出CAD图纸DxfdwgCreator *dxfdwgCreator1;

    没有什么可以看的,NXOPEN直接录制一下导出CAD就可以了.录制出来自己挑需要的代码拿过来改一下. NX9+VS2012 #include <NXOpen/Part.hxx> #incl ...

随机推荐

  1. 项目打包部署到tomcat操作步骤

    对于项目部署到tomcat中,需进行一下步骤: 1.对于项目打war包,方式有以下几种:install一下   找到war包的路径即可 另外:在eclipse中,选中项目 1.1 选中Export 1 ...

  2. Mybatis-config.xml配置文件详解

    1.官方给出的案列: 注意:这些配置在文件中的顺序非常重要!必须严格按照上图中出现的顺序定义 2.properties属性 该属性主要作用就是引入外部的properties是文件,文件格式为xxx=x ...

  3. vc 加载外部资源,释放DLL

    #include "stdafx.h"#include "resource.h" #include <Windows.h> #include < ...

  4. Linux嵌入式 -- 内核 (arm) & 文件系统

    1. make distclean 2. 配置内核  ----> 生成 .config文件 make menuconfig ARCH=arm Makefile文件分析: 3.  编译内核 mak ...

  5. 获得一个list中某元素的索引值

    list = [1,2,3,3,2,1] list.index(1) # 只能获得首个1的索引值 如果要获得所有该元素的索引值 import numpy as np arr = np.array(li ...

  6. UI(UGUI)框架(一)---------概述与保存/读取面板类型与路径

    01.概念:管理场景中所有的面板,控制面板之间的跳转 02.项目层级目录: Resources:存放UIPanel,习惯把所有的一个个面板做成预制源,使用时加载 Scenes:存放场景 UIFrame ...

  7. substr 方法

    substr 方法 返回一个从指定位置开始,并具有指定长度的子字符串. 参数 start 必选.所需的子字符串的起始位置.字符串中第一个字符的索引为 0. length 可选项.返回的子字符串中包含的 ...

  8. 慕课网python分布式爬虫打造搜索引擎视频中爬取伯乐网文章

    代码:https://github.com/longbigbeard/scrapy_demo

  9. js杨辉三角

    function Tree() { this.lines = [ [] ] } var pp = Tree.prototype pp.genNode = function(line, i) { , , ...

  10. if (i%4 ==0 ) 逻辑的魅力 在于 这里

    <div class="course_height"> </div> <script src="js/jquery.min.js" ...