FreeCAD-一种新的绘图方法

Disclamer :我一生中从未接触过CAD / CAM应用程序,突然间,我不得不这么做 。 FreeCAD的工作原理令我赞叹不已,以至于需要在Habr上写一篇紧急文章来告诉其他人。


对于大多数活跃的CAD用户而言,这篇文章中的内容可能是琐碎而无聊的,并且该文章主要针对非CAD用户,以向他们介绍计算机图形学的美好新世界。


参赛作品


我的任务很简单-为我的公寓制作3D模型。 不仅是“大小的墙壁”,还包括所有的横梁,突起和弯曲。 我尝试了一个,两个,三个程序……我感到绝望(它以SweetHome3D开始,而Blender和Inkscape结束了)。 他们都该死的不舒服。 我尝试过的程序中有FreeCAD,由于“ nifig not do”和“不能正常工作”,我错过了。 绝望之后,我进入了第二轮。 这次,阅读更多文档... FreeCAD不仅“完成”,而且还为我打开了一个基于Constrains的令人愉悦的精确矢量绘图的新世界。


建模问题


首先,我将讨论各种编辑人员所遭受的痛苦。


让我们从SweetHome3D开始。 一个条件可理解的界面,使您可以将房间描述为“地板”(指定了形状和突起),并在其周围制作“墙”。 SweetHome3D给我带来了两个问题:像素搜寻(通过鼠标的微小移动或在对话框中更改大小,但是无法将壁准确地“压”到地板上-仅像素搜寻。第二个问题-SweetHome3D模型并不意味着存在横梁,拱门和其他墙元素此外,SH3D不知道如何倾斜墙壁和地板(我希望不会出现这样的问题,但是在确定IRL之前,我需要对其进行记录)。我需要的东西的90%已交付 我有令人难以置信的痛苦到5%,并使它不可能为剩余的5%。


从理论上讲,Blender允许您做所有事情,但从理论上讲是可以的。 在实践中,要么我的技能不够,要么过程本身很慢,但是在绘制了三个半角之后,我放弃了。 太慢了,对照明和其他不重要的事情大惊小怪。 另外(据我所知),Blender不太可能显示尺寸正常的2D投影。


除一个问题外,Inkscape效果很好-在多截面线(F2)中,无法设置每个截面的尺寸。 可以-我会在Inkscape中绘制所有内容。


...但是我的帖子不是关于FreeCAD相对Blender的绝对优势(我不能像初学者那样将两者都比较),而是关于一种新的绘图样式。 首先,关于旧样式的问题(即“常规”矢量绘图)。


像素搜寻问题


在继续研究图片并解释“约束”的概念之前,我想着重谈一些困扰矢量艺术的永恒问题:


  • 几乎统一的曲线。 如果两条曲线几乎接触,那么您可能会认为它们在接触。 在某些时候(打印或进行其他操作时),图片会散开。
    图片


  • 几乎平行/垂直的线。 它们是平行的,但没有结束。



图片


注意轮廓线,它表明两条直线的描述矩形比直线本身大,即 线成锐角。


  • 从前一个派生的派生词是以0.001°角连接的线。


  • 线的大小和粗细不正确。 线条具有自己的粗细,并且在编辑(旋转,调整大小等)时,粗细开始浮动。 此外,在大多数矢量反应堆中,很难绘制出面积为100的正方形和厚度为0.5的线(因为该线到达图形区域的50%,而内部没有10x10,而是9.75x9.75)。


  • 保持对齐和对称是一项需要不断关注的任务。



编辑器内置了许多工具来处理此类问题,但是这些工具有一个困难-必须在出现问题的地方有意义地使用它们。 而且您应该自己监视问题的发生。


约束条件


这是一个很长的介绍。 现在我在说约束,或者用俄语讲,是保持联系(有关机械自由度的文章的术语翻译。


让我们尝试根据其基本属性绘制一个侧面为10的正方形。


方格4具有直边。


图片


差点发生 Solver告诉我们,我们需要设置15个额外的持有债券,以便我们的数字明确(其自由度为0)。


  • 正方形的相对边是平行的*

图片


规划求解说更好。 它开始被遗漏了。13.注意红色标记-这是约束的指示。 在开始时,我们意外地遇到了两个限制-两条水平线。


尽管看起来仍然有点方形,但它变得更好。 怎么了 嗯,是的,正方形是多边形,在多边形的边会聚成一个角。 添加这些限制。


图片


结果出乎意料,尽管求解器越来越令人满意。 所示图形是普通的四边形,其中边成对平行。 在学校课程之外,但是可以理解。


新增 ...飞机到这个数字。 相邻的面是垂直的。


图片


它似乎已经是对的(尽管我将图形稍微拉了一点,因为零尺寸的边非常适合求解器,因为它们垂直于它们所在的线(以点的形式))。 求解器发誓要超出限制。 我们同意他的观点,并删除了一个垂直度(我们有成对平行度的要求,一对垂直度自动从第一对垂直度中得出)。 除去多余的部分后,求解器会抱怨4个自由。


禁止任何其他事情,因为自由太多了。


例如,假设所有面的大小必须相同。 只需对任意两个相邻的边进行此操作,就可以使所有边都相等(学校几何!)。


之后,我们获得了三个自由。 还有三个自由? 但是正方形是相同的...是的,这是正方形,但是我们不知道它的大小(顺便说一下,0也是大小),以及它在空间中的位置。


进行设置-表示正方形的一个角位于“ 0,0”点,另外,我们将一侧的尺寸设置为10毫米。


一切都已经准备就绪,广场没有任何自由,这意味着没有隐藏的错误。


图片


这个例子有点怪诞,但是,正如我希望的那样,富有表现力。 给我特别深刻的印象是,求解器不仅检查歧义性,而且还警告该数字是否包含不必要的限制。


歌词


对我来说,这种描述图片的方法是全新的并且是意想不到的。 从某种意义上讲,它类似于带有机器代码的类型化编程语言所执行的操作-它们向其中添加了限制,使您可以以数学上准确的形式对可能的数据操作设置限制。 那时候,当有很多限制时,我们得到了明确的解决方案,该解决方案肯定在那里并且也绝对是明确的。 如果输入正确,则完全正确。 而且,没有“意外击中鼠标”或“手发抖”。

Source: https://habr.com/ru/post/zh-CN422019/


All Articles