前言:

近期在做系统柜和衣柜导出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. 分布式任务调度平台XXL-Job集群版搭建

    如果集群: 保存后: 启动两个 job 第二个job的配置: # web port server.port=8082 # log config logging.config=classpath:log ...

  2. spring boot 使用thymeleaf3.0以及thymeleaf的热部署

    spring boot 截止1.5.4,默认使用thymeleaf2.0,会有一些很蛋疼的地方比如xml格式之类的,具体哪些就不说了 -> 替换为3.0版本 pom中加入 <propert ...

  3. Java -- JDBC 获取数据库自动 生成的主键值

    public class Demo4 { /* create table test1 ( id int primary key auto_increment, name varchar(20) ); ...

  4. vue 列表渲染 v-for循环

    v-for循环指令类似与html中C标签的循环,同样可以遍历数组,集合. 1.这里演示一下遍历数组的基本用法,代码如下 <!DOCTYPE html> <html> <h ...

  5. hdu 5890 Eighty seven 暴力+bitset优化背包

    Eighty seven Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) P ...

  6. python常见的PEP8规范

    1. 括号中使用垂直隐式缩进或使用悬挂缩进 缩进 每级缩进用4个空格 示例: (垂直隐式缩进)对准左括号 def function_name(var_one,var_two, var_three,va ...

  7. SQL Server集成服务最佳实践:语句优化

        SQL Server集成服务(SQL Server Integration Services,SSIS)在其前辈DTS(Data Transformation Services,数据转换服务) ...

  8. java:OutputStream和InputStream 输出输入流,FileOutputStream,FileInputStream写入读取流

    1.在java中stream代表一种数据流(源),javaio的底层数据元,---(想像成水龙头)2.任何有能力产生数据流(源)的javaio对象就可以看作是一个InputStream对象既然它能产生 ...

  9. uva 10453 dp/LCS变形

    https://vjudge.net/problem/UVA-10453 给出一个字符串,问最少添加几个字符使其变为回文串,并输出任意一种答案.就是一个类似于LCS的题目,而且简化了一下,只会出现三种 ...

  10. 29 python 并发编程之多线程理论

    一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合 ...