几何约束
我试着做一件简单的事情:<strong>插入文本或块,固定在曲线的中点,水平或共面</strong>。这在AutoCAD中是可能的,没有问题,但如何通过编程实现我真的试图理解它的功能,但我在整个概念中迷失了方向……
有什么帮助吗
编辑:
此外,运行该帖子中的代码也不是没有问题的-cad抱怨“此图形中的一个或多个对象无法保存为指定格式…”,无论是在自动保存还是在保存时
**** Hidden Message ***** 我花了一段时间才把它挖出来,但这里发现了金子
https://forums.autodesk.com/autodesk/attachments/autodesk/152/24647/1/Parametric%20VB%20Net%20Code.txt
大量黄金代码,编译时不会出错。然而,我仍然不知道如何将文本与曲线对齐,现在只是盲目地猜测和尝试。。。 在文本旋转中尝试以下操作:
旋转
Vector3d-deriv=Pipe.Polyline.getFirst导数(insParam)
旋转=deriv.RadsFromXAxis()
//
///返回与向量对齐的块的旋转所使用的x轴的角度,单位为rads。
//
//
//
公共静态双RadsFromXAxis(此矢量3D矢量)
{
Vector3d-xAxis=新的Vector3d(1,0,0)
返回Math.Atan2(向量Y-xAxis.Y,向量X-xaxix.X)
}
RadsFromXAxis是Gile几何延伸中发现的多段线延伸。我现在找不到下载,但我敢肯定我是在沼泽里找到的
搜索并找到它们,从那里学习到一些真正的珍宝。 我很高兴你感兴趣。但是,我不确定手动旋转是否是我所追求的。
我正在谈论的是一种根据您定义的规则使CAD自动对齐和旋转实体的方法。
这真的是一个功能强大的工具,但是,我提供的这个链接(并被称为黄金)是唯一的其他(除了Jeffs)在线可用!
还有另一个指向博客的链接,介绍如何将块应用于每个折线顶点,但我找不到它。这个周末我真的打开了数百个页面,试图找到一些东西,所以它有点迷失在浏览器历史中。
此外,没有直接关系,但很有趣:
http://adndevblog.typepad.com/autocad/2012/03/working-with-associative-parameters-from-api.html
我提供的链接足够完整,但是,我不知道什么去哪里。例如,line有边-文本有什么?如何找到文本的兴趣点?...
我想Jeff H可能会有所帮助... 最后,五个令人沮丧的小时后,50多次尝试和错误尝试,取得了一些成功
使用trans2作为事务=trans.TransactionManager。StartTransaction‘处理子事务,以便允许1次撤消,从而撤消所有事务。
将SubEntEdgePath1设置为边缘的FullSubentityPath逻辑路径(一个边缘对象非常简单)
将SubEntEdgePath2变为FullSubentityPath
<div>将subEntPointPath1设置为用户选定点(通常为起点、终点或中点)的FullSubentityPath逻辑路径</div>
将subEntPointPath2变暗为FullSubentityPath
“创建从对象到其子实体的逻辑路径。
CreateSubEntityPath(曲线1、曲线1、子EntedgePath1、子entPointPath1和trans2)
SubEntEdgePath2=CreateSubEntityPath(ent1,entType)'切入点
subEntPointPath2=CreateSubEntityPath(ent1,entType)
<div>‘获取与我们的点位于同一平面上的约束组(在这种情况下,仅为wcs+高程,但如果您获取更高级的约束组,则可能需要对其进行大幅度修改)</div<
Dim consGrpId As ObjectId=GetConstraintGroup(True,trans2)
“使用逻辑路径在提供的两条边(曲线)的两个选定点(曲线点)之间创建约束。
Dim consgomedge1 As constrainedgegeometry=Nothing
Dim consgomedge2 As constrainedgegeometry=Nothing
使用constGrp作为Assoc2dConstraintGroup=DirectCast(trans2.GetObject(consGrpId,OpenMode.ForWrite,False),assoc2donstraintgroup)
试试
consgomedge1=addconstrainedgegeometry(constGrp,SubEntEdgePath1)
捕获ex作为异常
“在那里,继续前进。”
结束尝试
试试
consgomedge2=addconstrainedgegeometry(constGrp,SubEntEdgePath2)
捕获ex作为异常
“在那里,继续前进。”
结束尝试
将路径变暗为FullSubentityPath()={subEntPointPath1,subEntPointPath2}
将newConstraint标注为GeometricalConstraint=constGrp.addgeometricallconstraint(geometrical constraint.constraint类型重合,路径)
结束使用
trans2.Commit()
结束使用
End Sub
</div您将能够添加块或文本以粘贴到曲线的中点
所以现在可以做一些事情,但我仍然无法实际对齐文本或块…如何做到这一点? 我找不到斯蒂芬·普雷斯顿在这个问题上上的非盟课。也许联系他,看看他是否能从那个班得到讲义。
页:
[1]