前言:

近期在做系统柜和衣柜导出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. java中如何将非整数保留到小数点后指定的位数

  2. 关于CDN

    DNS域名解析过程 DNS即Domain Name System,是域名解析服务的意思.它在互联网的作用是:把域名转换成为网络可以识别的ip地址.人们习惯记忆域名,但机器间互相只认IP地址,域名与IP ...

  3. mysql删除重复记录

    Solution 1: Add Unique Index on your table: ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id ...

  4. Mybatis单个参数的if判断(针对异常:There is no getter for property..)------mybatis的内置对象

    这里有一个删除方法: int deleteByPrimaryKey(Integer id); 然后对应的sql的xml如下: <delete id="deleteByPrimaryKe ...

  5. MapReduce-计数器

    计数器 计数器是收集作业统计信息的有效手段之一,用于质量控制或应用级统计.计数器还可辅助诊断系统故障.根据计数器值来记录某一特定事件的发生比分析一堆日志文件容易得多.内置计数器Hadoop为每个作业维 ...

  6. Codeforces Round #304 (Div. 2) D. Soldier and Number Game 素数打表+质因数分解

    D. Soldier and Number Game time limit per test 3 seconds memory limit per test 256 megabytes input s ...

  7. Ubuntu 中查看内核版本和系统版本的四个命令

    一.查看内核版本:cat /proc/version 二.查看内核版本:uname -a 三.查看系统版本:lsb_release -a 四.查看发行版类型:cat /etc/issue

  8. 只有*.mdf 如何附加数据库到MSSQL

        下载的webform 项目,App_Data文件夹中 只有*.mdf,无*.ldf日志文件. 直接在MSSQL企业管理中 附加数据库  提示附加失败. 新建一个与要附加的数据库同名的数据库,然 ...

  9. 请求被中止: 未能创建 SSL/TLS 安全通道,以及解决方法,即:Could not create SSL/TLS secure channel

    C# 访问https请求被中止: 未能创建 SSL/TLS 安全通道(Could not create SSL/TLS secure channel) 以及 X509Certificate2 temp ...

  10. 选择排序—简单选择排序(Simple Selection Sort)原理以及Java实现

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...