- 博客(102)
- 资源 (2)
- 收藏
- 关注
原创 利用WPF绘制轮廓并保存为图片
WPF作为显示工具也挺好用,用C#开发应用软件会比较省力,当然也有其缺点,如在对效率要求较高的情况下有性能问题,本文记录用WPF绘制轮廓并保存为图片相关内容。显示效果也还不错,满足调试使用了,
2024-09-18 18:52:15 411
原创 C++/CLI编程知识点小记
本篇博文并非详细的C++/CLI教程,仅是博主就学习和实践总结的部分知识点记录。第一次接触C++/CLI是2017年了,用C++编写底层库,C++/CLI编写wrapper层,在C#项目中进行调用,开发应用。
2024-09-18 11:30:14 1480
原创 从线段中搜寻提取闭合轮廓(三)
做底层和数据的调试问题也是个麻烦事,如果没有方便的可视化工具辅助,那将令人感到痛苦,借助可视化的工具可以让我们高效、省心,进而心情舒畅,重要的是可以提高调试效率。当然可视化工具也分不同层次的,大致分为手动操作为主的、自动为主的两种,手动操作为主的也要区分工具准确性、易用性,如果碰到难用的也是经常令人心情烦躁,甚至破口大骂;而易用性较好的会比较省心,但由于其手动操作为主的特点,需要耗时耗力,也难以心情很舒畅。(中间吐槽省略......)
2024-09-11 17:43:14 554
原创 三维布尔运算对不规范几何数据的兼容处理
上一篇文章谈过八叉树布尔运算,对于规范几何数据的情况是没有问题的。在实际情况中,由于几何数据来源不一,处理和生成方式不一,我们无法保证进行布尔运算的几何数据都是规范的,对于不规范情况有时候也有需求,这就需要兼容不规范数据情况,当然这种兼容不是一味的让步,而是对于存在有限的不规范数据的兼容处理。
2024-09-07 22:26:13 515
原创 八叉树CSG布尔运算
三角网格布尔运算有多种理论支撑实现,比如BSP网格布尔运算方法、八叉树网格布尔运算等,同样,不同的方法有其特点及适用范围。BSP网格布尔运算依赖于较为严格的实体规范表达,即参与运算的几何实体需要是闭合的、规整的,如果出现不闭合的几何实体,运算可能出错,比如对一颗网格化表达的树进行布尔就会出错,得到意想不到的造型效果。如果实体内部由有其他元素时也会出现上述问题,比如大坝内部有其他多种围挡等建造元素时。八叉树布尔运算适用性较好,缘于其较好的鲁棒性——对于不规整几何体的兼容处理能力。
2024-09-07 22:03:20 663
原创 一种误差较小的轮廓面积计算算法
基于微分思想的轮廓面积计算方法之一是将多边形轮廓边与X轴会Y轴进行围合,形成一个个梯形,每个梯形的面积有符号,累计求和即得到多边形轮廓的面积。详见博主之前的文章,记录导致计算轮廓面积出错的一个坑点-CSDN博客计算轮廓面积是常见的几何算法话题,获取轮廓面积、计算轮廓法线等场景会涉及到。计算轮廓面积的方法有很多,一种常用的是微积分思路的分段求和办法,即组成轮廓的每条线段与X轴或Y轴进行有向投影,轮廓边线与X轴或Y轴的投影之和即为轮廓的有向面积。
2024-09-03 18:52:29 902
原创 关于float浮点值二进制存储和运算精度损失的话题
浮点值的存储、运算都可能会带来精度损失,了解精度损失背后的机制原因方便我们更好的了解什么情况下会发生精度损失、什么情况下精度损失较大,以及思考怎么避免或减少精度损失。
2024-08-08 20:43:48 1099
原创 从线段中搜寻提取闭合轮廓(二)
调试了上篇文章中参考代码修了一些问题,优化了显示,但是由于算法逻辑存在一些问题,有很多不必要的性能损耗,且逻辑不是最优的,于是博主找时间重新实现了下该算法,提升了算法的健壮性和性能,将一些点记录如下。
2024-08-01 19:09:09 486
原创 记录导致计算轮廓面积出错的一个坑点
计算轮廓面积是常见的几何算法话题,获取轮廓面积、计算轮廓法线等场景会涉及到。计算轮廓面积的方法有很多,一种常用的是微积分思路的分段求和办法,即组成轮廓的每条线段与X轴或Y轴进行有向投影,轮廓边线与X轴或Y轴的投影之和即为轮廓的有向面积。其中第0、1、6的投影为正,第2、3、4、5的投影为负,累积即为轮廓面积(绿色填充部分)。如上所示,如果关心面积的正负时,一般将轮廓移到第一或第四象限再求面积。满足上述条件时,逆时针轮廓的面积为正,顺时针轮廓的面积为负。
2024-08-01 18:33:16 381
原创 从线段中搜寻闭合轮廓
最近在研究怎么从一堆线段中提取闭合轮廓,以前用过相关的库,忘记名字了,记得是构造了TopoPolygonTree,可以获取最大外轮廓,以及构成该最大外轮廓的其他轮廓,而内部轮廓是以树的形式表示,每个树节点是一个轮廓,树节点的深度(node.deep % 2 == 0?outer : inner)代表其是外轮廓还是内轮廓。重新搜索研究,进行代码的测试和问题修改,简单记录如下。
2024-07-17 18:56:32 985
原创 3ds Max导出fbx贴图问题简单记录
工作中发现3ds Max导出的fbx在其它软件(Autodesk viewer,blender,navisworks,FBXReview等)中丢失了部分贴图,但导出的fbx用3ds Max打开却正常显示。fbx格式使用范围较广,很多常见的三维软件都支持fbx格式的导入导出,Autodesk同时发布有FBXSDK支持fbx格式的读取。
2024-06-29 18:33:07 1956
原创 DWG转PDF字体研究记录
最近需要对PDF中的符合业务规则的文字进行提取,发现有些文字不是文字信息形式存储,而是polyline形式表达,意味着仅仅有形体上的表达,丢失了原本的文字信息。经过沟通得知,这些PDF是AutoCAD软件导出的,拿到原始dwg文件进行了测试和研究。
2024-06-20 11:28:59 1158
原创 将点作为C++ map容器key值时的踩坑记录
空间点具有X,Y,Z坐标等数据,一些情况下我们需要将点作为map容器的key值,比如识别重复点或处理轮廓等情况。
2024-05-31 18:55:06 408
原创 VUE格式探究记录
vue格式为鹰图Intergraph SP3D格式,是私有格式。博主对vue格式的直接解析可行性进行了初步的探究,记录如下。
2024-05-12 11:00:33 683 1
原创 记录rapidjson写出json时发生截断问题的处理
rapidjson性能非常棒,在处理大数据量的情况下性能要远优与cjson,是读写json的最佳选择库之一。该库也是腾讯开源的库,很多国外的库也在使用,如ODA等;在处理一个大文件,转出json时发生了json被截断的情况,也没有报错,真是一时不知从何下手,那就调试吧~
2024-04-22 18:18:28 412
原创 C++正则表达式笔记
(2)C++正则匹配实现提取两个指定字符串之间的字符串。最近翻了翻正则表达式的一些资料,做个记录。(3)替换两个字符串之间所有出现的字符。(1)正则匹配两个字符之间的字符串。(1)正则匹配两个字符之间的字符串。3、正则表达式基础语法大全。2、正则表达式语法简介。
2024-02-21 10:35:33 597
原创 关于三维布尔运算的几点思考
三维布尔运算根据三维实体数据结构表达分为CSG布尔运算、Brep布尔运算、三角网格布尔运算等类型。这几种类型算法在不同情境下有不同的优势,根据情况进行选择。但这也不能作为随意选择方案的借口,在不分析实际情况下。CSG和BRep布尔运算能够保留原始几何拓扑信息,适用于各类设计编辑场景,如建模设计软件中。而三角网格布尔运算也是常见和常用的,由于一些因素,当前实体的表达方式就是三角面网格方式,也需要对这些实体进行编辑,这时候三角网格布尔运算是最佳选择方案。
2023-05-28 10:23:32 2636
原创 几何算法学习实践和应用(二维)
几何算法底层的原理很多是相通的,用到的也都是基础的工具函数,学习和积累非常重要。很多原理可由二维推广到三维,一些复杂三维算法可以分解为二维实现。
2023-03-13 23:34:53 1472
原创 几何算法学习实践(三维)
将个人几何算法学习和实践进行记录,方便自己和有需要的人。学习和实践相结合,建立小项目进行练手,该项目包含几何工具库与图形显示两部分。
2023-03-12 12:41:00 2050 2
原创 生成业务数据模型图(SQLite + Navicat)
1.前言由于实际要求,往往需要我们提供系统或数据库的业务数据模型,可以利用工具来绘制或生成。2.sqlite + Navicat生成简述下步骤,(如果已有数据库,可忽略该步骤)新建sqlite数据库,当然一个数据库可能有多个表,如果目标数据库有多个表的话,这里新建一个也可以,剩下的再Navicat中继续创建,当然也可以一次性建完。这里我用的DB Browser for SQLite软件。 打开Navicat,文件--》新建连接--》SQLite,然后选择刚刚创建的db文件 在Navica
2022-05-28 23:20:22 4033
原创 navisworks获取元素稳定唯一ID方法研究
1. 前言模型中的构件理论上来说都需要有一个唯一且稳定的ID,如revit中有elementId、uniqueId,IFC中有guid,dwg中有entityId......navisworks中的元素是不是也应该有这样的唯一ID?2. 研究2.1. navisworks apimodelItem.GetHashCode()modelItem.InstanceHashCodemodelItem.InstanceGuid可直接在官方社区搜索相关问题:Navisworks API -
2021-11-21 16:35:13 1978 7
原创 点合并算法的思考
1.写在前面去年因为某项目遇到模型卡顿问题,分析原因发现是模型中点没有进行合并,故而设计了点合并的技术方案,由于某些原因该方案未能实施,仅仅是方案,放在技术方案堆里,以一篇文档形式。平时的积累尤其重要,尝试更优,加之日积月累,会有比较大的进展和进步,技术如此,工作也一样。平时面试偶尔也会以该题目为背景问一下面试者,看看思路怎样,有想法还不错的,也有不知所措的...好了,闲扯到这里,开始吧。2.思路2.1.方案一ifcOpenShell是将点的hash作为key,建立map,map&l
2021-09-13 23:07:13 1466
原创 关于控制程序内存的几点思考
写在前面 控制系统内存是常见的一个话题,一般三维设计软件内存控制的普遍较好,当然一方面是开发时间较长,投入较多,当然另一方面也是相应的开发团队技术经验较丰富,有较好的系统架构和内存管理机制。当然也会有一些软件或产品内存控制的不好,用户使用体验较差。 博主混迹于CSDN已有数年,也有一些经验,适逢周末惬意,闲暇时光中进行一些总结记录以供自己和需要的人参考。思考系统逻辑较复杂,运行时内存占用较高且不稳定,该怎么办?博主认为所谓系统逻辑复杂本是个伪概念,一个系统确实有...
2021-08-22 17:21:57 917
原创 矩阵求逆的简单记录
写在前面话说第一次完整的编写矩阵求逆函数是在写结构力学求解器时候,那时候用的是初等变换法,效率较低,不过那时候还没顾得上效率,求解器没有开发完整,记得只支持连续跨简支梁求弯矩(不记得这个术语还准确不...),好吧,是时候引出正文了。4X4转换矩阵求逆方法求逆矩阵方法很多,效率不一,而研究矩阵数据结构的设计就可以是一个领域了,怎么样占用内存小?怎么样运算效率高,当然本文不涉及这些的研究,有兴趣可以自行搜索学习这方面知识。https://zhuanlan.zhihu.com/p/500.
2021-07-22 23:19:22 2074 1
原创 记录Camtasia剪辑视频操作
1. 写在前面由于实际需要,需要剪辑视频,真是得各种为了生计的技艺都得略知一二,想起前段时间还给破解重置了我那破旧的笔记本密码~真是一言难尽。不过说实话,初始不知工具便,熟知才知是真香。很方便,提高工作效率和质量。本文记录自己使用Camtasia软件来分隔剪辑视频的操作,供自己和有需要的人参考。2. 正文2.1. 准备待分隔剪辑视频(以.mp4格式为例)、Camtasia 2018。2.2. 开始比如博主选择视频的 2min 23s到7min 29s ..
2021-06-06 13:41:36 1126 2
原创 VS检测内存泄漏C++程序
1. 写在前面最近在优化程序,节点紧,事情多,写的急...总之就是程序性能有问题,处理大模型就遇到瓶颈了。咋办?重构优化喽。首先,博主把程序中主要占内存或需要频繁使用的对象都用工具类统一进行内存申请、使用和释放,具体的:可以复用的且需要用来进一步处理计算的对象统一管理起来,方便复用,减少重复处理,所谓GetOrCreate是也 需要大量的申请、使用和释放的对象统一管理起来 需要周期性频繁使用的对象统一管理起来,这样也可以减少内存申请和释放 一次性处理占内存大的时候,那就分批处理 对象池也
2021-06-02 23:57:59 1491 3
原创 非常简单的解决VS调试符号加载慢的问题
方案很多博客都提到的清空符号缓存不知道是否真实有效?当然权威的还是参考官方文档,介绍的很清晰,但并没有提到这一点可以提高符号加载效率!而且可以根据介绍判断出具体的这些设置的作用,也可以初步判断出清空符号缓存没有多大实际作用。参考在调试器中设置符号 (.pdb) 和源文件 - Visual Studio | Microsoft Docs...
2021-05-29 10:05:38 2909
原创 猜想:string的compare是非线程安全的
写在前面之前碰到过map.find死循环的情况:记录使用map遇到的很奇怪的问题,map find()陷入死循环现在是同样的程序,也发生了程序“停滞”(即内存占用没有变化,CPU占用高,程序实际像死锁一样)!哎还是绕不开string的compare,无论是string本身的还是strcmp,而多线程情况下使用都可能会“死循环” “假死锁”,展开猜测string的compare(包括strcmp)是非线程安全的其他关于C++ stl string的线程安全性问题http://
2021-05-24 18:33:36 852 1
原创 zlib解压缩zip/gzip使用总结
写在前面zlib库很好用,包括一些前端/ios库都集成了该库用于解压缩相关,本文根据作者实际使用做个简单的总结。正文使用zlibwrap库进行解压缩,该库对zlib做了封装,提供简洁的接口BOOL ZipCompress(LPCTSTR lpszSourceFiles, LPCTSTR lpszDestFile, bool bUtf8 = false);BOOL ZipCompress(std::vector<LPCTSTR> lpszSourceFiles, LPCTST
2021-05-22 14:03:34 1812
原创 C++字符串转为大写/小写
说在前面最近紧急处理bug时候,想进行C++的字符串大小写转换,发现好像之前没有用到过?!,顺带说一下C#的是真的方便~,其实并不是没有,而是之前真的没有用过,那么需要用了,就查查吧,实践测试一下,有多种方法。正文有多种方法,可以使用C语言标准库函数toupper,tolower 以及对应的unicode版本 twoupper,twolower 可以使用C++标准库中的_strlwr_s, _strupr_s 以及对应的unicode版本 _wcslwr_s, _wcsupr_s 可
2021-05-22 13:45:54 7987 1
原创 感慨万千,洒一洒:当代渺小一份子的感悟
最近一次接近理想的状态是在大三大四时候,学习,读书,出去玩,跑步,还有每周五晚的逛超市,只为便宜的水果和格瓦斯。印象最深刻的莫过于在图书馆自习的时光,对之前欠下的学习债务系统性的自学,对将要考试的课程做复习,对将要上课的章节做预习,甚至还会复习下刚刚上过的课程,现在为什么成为程序猿也和那段时间有关系,借来fortran程序设计这本书,学习,编程,还借了计算程序力学和袁驷老师的结构力学求解器2,当然后两本没有系统性的进行学习,满足好奇心也是很舒服的,大概也是因为这些活动都有志...
2021-05-10 17:50:10 977 4
原创 混淆后导致Revit2021不能正常加载插件
1.问题用.NET Reactor混淆dll后导致Revit插件不能正常加载,好吧,问题发生了,那就先分析下吧;用相同的混淆设置,Revit2020的插件可以加载,那么初步判断是混淆设置的原因,继续验证猜想~不混淆dll,发现Revit2021可以正常加载dll,看来是混淆设置的问题,而且这个问题在Revit2021中是存在的,那么怎么解决?2.解决过程此过程记录博主分析解决该问题的过程,会涉及到一些知识点,如果读者时间有限,可以跳到解决方案一章尝试,如果问题还不能解决,则可参考该过
2021-03-21 22:01:44 2226
原创 微软glTF-SDK代码示例及源码研究
上一篇:GLtf读写库的初步研究1.glTF-SDK现状及问题1、接口使用较为方便;有简单示例;2、研究源码及示例,仅支持连续的addAccessor(),即连续的add绑定同一bufferView的Accessors,比如很多个mesh,(1)只能统一获取所有的indices(positions、uvs)再连续的addAccessories,绑定到一个indices的bufferView上;然后再绑定positions的,其次再绑定uvs...,这样流程不太 方便,占内存较大;(2)对于每
2021-03-11 23:10:12 2360 3
原创 Revit坐标系概念深入理解及应用:内部点、原点、项目基点、测量点、共享坐标系、地理坐标及之间关系和衍生概念操作(详细)
1. 概述 Revit 提供了多种方法来定义模型的关联环境。包括内部点、原点、项目基点、测量点、共享坐标系、地理坐标以及与定位概念相关的的距离限制、多模型协作、项目北、正北等概念;这些概念多而复杂,相互之间又有关联性,常常让人不知所措,继而横眉冷指,更甚者口吐着夹杂Revit的芬芳...而如果恰好是工作上遇到这方面问题了,那么简直是一种外外表到灵魂的拷问和云深不知处的茫然。 当然,Revit设置这样“复杂”而灵活的坐标系概念是有其特定历史意义的,满足于各种应用场景,不限于...
2021-02-27 13:35:38 6502 7
原创 GLtf读写库的初步研究
1.背景最近需要写gltf,预研了下相关的库,不得不说还是比较多的,毕竟GLtf的目标:“3D领域的JPEG”已经被行业比较广泛的接受和参与建设了;2.简要总结1、 KhronosGroup/glTF-CSharp-Loaderhttps://github.com/KhronosGroup/glTF-CSharp-Loader备注:竟然是根据gltf specification schema文件生成代码....和我们的XX需求场景一样2、微软的glTF-SDKhttps://githu
2021-02-21 23:03:54 1671 1
原创 3dTile技术研究-小结
上篇:3dTile技术研究-概念详述(10)Instanced 3D Model1.背景又看了一遍cesium的3D Tiles格式规范,看的过程中简单记录知识点,进行简单总结。由于总结记录的是“只言片语”,详细内容还请参考博主关于3dTiles的文章。如需要看详细的文章,请参考博主的3dTiles系列文章(文章末尾有链接)。2. LOD技术的研究1、Cesium官方,包括子章节https://github.com/CesiumGS/3d-tiles2、3DTile 的geometr
2021-02-18 17:00:39 1458 3
Intergraph vue格式文件解析
2024-05-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人