cad约束怎么调出来,cad怎么自带约束了

首页 > 实用技巧 > 作者:YD1662023-04-16 18:09:24

import cadquery as cq cone = cq.Solid.makeCone(1, 0, 2) assy = cq.Assembly() assy.add( cone, loc=cq.Location(cq.Vector(0, 0, 0), cq.Vector(1, 0, 0), 180), name="cone0", color=cq.Color("green") ) assy.add(cone, name="cone1", color=cq.Color("blue")) show_object(assy)

作为用户计算位置的替代方法,约束的 solve() 方法可用于在装配结果中定位对象。

如果同时使用初始位置和 solve() 方法,求解器将用它的解覆盖这些初始位置,但是初始位置仍然会影响最终解。 在欠约束系统中,如果对象对成本函数没有贡献,或者如果存在多个解决方案(即成本函数最小的多个实例),求解器可能不会移动对象,初始位置可能导致求解器收敛于一个特定的解决方案。 对于非常复杂的组件,设置近似正确的初始位置也可以减少所需的计算时间。

8、约束

约束通常比直接提供位置更好地表示用户想要建模的现实世界关系。 在上面的例子中,真实世界的关系是每个圆锥体的底面应该接触,这可以用平面约束建模。 当用户提供明确的位置(而不是约束)时,也会进行更新,例如,当 cone1 的位置发生变化时。

当至少提供一个约束并运行方法 solve() 时,就定义了一个优化问题。 每个约束都提供一个成本函数,该函数取决于创建约束时指定的两个对象的位置和方向(由 Location 表示)。 解算器改变装配子项的位置并尝试最小化所有成本函数的总和。 因此,通过阅读下面的成本函数公式,你可以准确理解每个约束的作用。

9、点约束

点约束是一种经常使用的约束,它可以最小化两点之间的距离。 一些示例用途是居中面或对齐顶点,但它也可用于虚拟顶点以在两个部件之间创建偏移。

成本函数是:

cad约束怎么调出来,cad怎么自带约束了(5)

其中:

创建点约束时, param 参数可用于指定两个中心之间的所需偏移量。 这个偏移量没有与之关联的方向,如果你想指定一个特定方向的偏移量,那么你应该使用一个虚拟顶点。

点约束使用 Center() 来查找参数的中心。 因此它适用于 Shape 的所有子类。

cad约束怎么调出来,cad怎么自带约束了(6)

import cadquery as cq # Use the Point constraint to position boxes relative to an arc line = cq.Edge.makeCircle(radius=10, angle1=0, angle2=90) box = cq.Workplane().box(1, 1, 1) assy = cq.Assembly() assy.add(line, name="line") # position the red box on the center of the arc assy.add(box, name="box0", color=cq.Color("red")) assy.constrain("line", "box0", "Point") # position the green box at a normalized distance of 0.8 along the arc position0 = line.positionAt(0.8) assy.add(box, name="box1", color=cq.Color("green")) assy.constrain( "line", cq.Vertex.makeVertex(*position0.toTuple()), "box1", box.val(), "Point", ) # position the orange box 2 units in any direction from the green box assy.add(box, name="box2", color=cq.Color("orange")) assy.constrain( "line", cq.Vertex.makeVertex(*position0.toTuple()), "box2", box.val(), "Point", param=2, ) # position the blue box offset 2 units in the x direction from the green box position1 = position0 cq.Vector(2, 0, 0) assy.add(box, name="box3", color=cq.Color("blue")) assy.constrain( "line", cq.Vertex.makeVertex(*position1.toTuple()), "box3", box.val(), "Point", ) assy.solve() show_object(assy)10、轴约束

轴约束最小化两个向量之间的角度。 它经常用于对齐面和控制对象的旋转。

成本函数是:

cad约束怎么调出来,cad怎么自带约束了(7)

其中:

参数 param默认为π弧度,它将两个方向设置为彼此相反。 这代表了通常所说的“配对”关系,即两个物体的外表面接触。

cad约束怎么调出来,cad怎么自带约束了(8)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.