乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 93|回复: 5

几何约束

[复制链接]

7

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
56
发表于 2017-3-24 13:04:25 | 显示全部楼层 |阅读模式
我试着做一件简单的事情:<strong>插入文本或块,固定在曲线的中点,水平或共面</strong>。这在AutoCAD中是可能的,没有问题,但如何通过编程实现
我真的试图理解它的功能,但我在整个概念中迷失了方向……
有什么帮助吗
编辑:
此外,运行该帖子中的代码也不是没有问题的-cad抱怨“此图形中的一个或多个对象无法保存为指定格式…”,无论是在自动保存还是在保存时

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

7

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
56
发表于 2017-3-26 16:05:41 | 显示全部楼层
我花了一段时间才把它挖出来,但这里发现了金子
https://forums.autodesk.com/autodesk/attachments/autodesk/152/24647/1/Parametric%20VB%20Net%20Code.txt
大量黄金代码,编译时不会出错。然而,我仍然不知道如何将文本与曲线对齐,现在只是盲目地猜测和尝试。。。
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2017-3-26 18:29:03 | 显示全部楼层
在文本旋转中尝试以下操作:
旋转
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几何延伸中发现的多段线延伸。我现在找不到下载,但我敢肯定我是在沼泽里找到的
搜索并找到它们,从那里学习到一些真正的珍宝。
回复

使用道具 举报

7

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
56
发表于 2017-3-27 03:10:00 | 显示全部楼层
我很高兴你感兴趣。但是,我不确定手动旋转是否是我所追求的。
我正在谈论的是一种根据您定义的规则使CAD自动对齐和旋转实体的方法。
这真的是一个功能强大的工具,但是,我提供的这个链接(并被称为黄金)是唯一的其他(除了Jeffs)在线可用!
还有另一个指向博客的链接,介绍如何将块应用于每个折线顶点,但我找不到它。这个周末我真的打开了数百个页面,试图找到一些东西,所以它有点迷失在浏览器历史中。
此外,没有直接关系,但很有趣:
http://adndevblog.typepad.com/autocad/2012/03/working-with-associative-parameters-from-api.html
我提供的链接足够完整,但是,我不知道什么去哪里。例如,line有边-文本有什么?如何找到文本的兴趣点?...
我想Jeff H可能会有所帮助...
回复

使用道具 举报

7

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
56
发表于 2017-3-27 09:42:14 | 显示全部楼层
最后,五个令人沮丧的小时后,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您将能够添加块或文本以粘贴到曲线的中点
所以现在可以做一些事情,但我仍然无法实际对齐文本或块…如何做到这一点?
回复

使用道具 举报

7

主题

28

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
56
发表于 2017-3-29 15:14:58 | 显示全部楼层
我找不到斯蒂芬·普雷斯顿在这个问题上上的非盟课。也许联系他,看看他是否能从那个班得到讲义。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 14:04 , Processed in 0.166395 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表