乐筑天下

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

清扫固体

[复制链接]

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2016-3-3 16:18:45 | 显示全部楼层 |阅读模式
我创建了一些简单的代码来围绕多段线扫描一个圆。不幸的是,在线框模式下,扫描实体的外观与使用“扫描”命令手动创建的实体不同,如下图所示
在这张图片中,我在左边有手动扫描,在右边有由代码创建的扫描。
这是生成上述实线的代码。我今天想不清楚。你认为需要做些什么才能使其在线框中看起来正确?
私有子输入按钮1_Click(发送者作为对象,例如事件参数)处理输入按钮1。Click
使用Active.Document.LockDocument()
使用transaction=Active.Database.TransactionManager.StartTransaction()
Dim modelSpace=Active.Database.modelSpace(OpenMode.ForWrite)
Dim polylineSegmentCollection=新的polylineSegmentCollection()
使用lineSegment1=新的linesegmenti2d(新的点2d(-4,4),新的点2d(-4,0))
Dim lineSegment=新的多段线线段(lineSegment1)
<div>polylineSegmentCollection.添加(线段)</div>
结束使用
Dim arcSegment=新的多段线线段(新的点2d(-4,0),新的点二维(4,0,1,0)
<div>polylineSegmentCollection.Add(arcSegment)</div>
使用lineSegment2=新的linesegment 2D(新的点2D(4,0),新的点2d(4,4))
尺寸线段=新的多段线线段(线段2)
<div>polylineSegmentCollection.添加(线段)</div>
结束使用
使用中心线=polylineSegmentCollection.ToPolyline()
modelSpace.AppendEntity(中心线)
事务。AddNewlyCreatedDBObject(中心线,真)
Dim solid=New Solid3d()
使用圆=新圆(Point3d.Origin,Vector3d.ZAxis,.5)
Dim sweepOptionsBuilder=New sweepOptionsBuilder()
扫掠选项生成器。Align=SweepOptionsAlignOption.AlignSweepEntityToPath
扫掠选项生成器。基点=点3d.原点
扫掠选项生成器。Bank=True
固体。CreateSWeeptSolid(圆、中心线、扫掠选项生成器.ToSweepOptions())
结束使用
modelSpace.AppendEntity(实体)
事务。AddNewlyCreatedDBObject(实心,真)
事务.提交()
结束使用
结束使用
结束使用
末端接头
我正在使用Gile的几何体扩展来创建多段线,并且没有显示这些方法的代码。如果你需要它们,一个简单的谷歌搜索将找到正确的线程。

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

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

使用道具 举报

51

主题

613

帖子

9

银币

中流砥柱

Rank: 25

铜币
815
发表于 2016-3-3 22:43:41 | 显示全部楼层

这很奇怪,
看起来ISOLINES DISPSILH VSEDGES等系统变量正在被更改为一个固体....我不知道这是可以做到的。
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2016-3-8 13:09:53 | 显示全部楼层
是否以编程方式创建了两个扫描路径(左侧和右侧)?
回复

使用道具 举报

51

主题

613

帖子

9

银币

中流砥柱

Rank: 25

铜币
815
发表于 2016-3-8 13:15:32 | 显示全部楼层
是的。手动扫描是通过运行程序一次,然后删除它的实体部分并沿着折线路径扫描圆圈来完成的。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2016-3-9 07:40:57 | 显示全部楼层
你在香草,对吧? 如果你在垂直行业,我会看看显示管理器,看看这是否会影响它。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2016-3-9 10:45:27 | 显示全部楼层
是的,运行Vanilla AutoCAD。嗯,启动Vanilla Autocad的垂直。话虽如此,如果它是显示表示,我相信它会对两个3d实体产生类似的影响。它们看起来都一样。
在代码中创建的实体的问题是,圆圈在扫描时似乎有些旋转。圆圈旋转是恒定的,只是与路径不正确对齐。我尝试了所有的扫描生成器选项,但没有提出任何似乎有效的东西。
我的下一个选择将是尝试在官方的开发人员面前得到这个。NET页面,看看他们是否想出了什么。
我想知道是否还有其他运行代码的人有同样的问题?或者只是我。我可以尝试以不同的方式构建多段线,看看这是否有效果,但我相信它可能不会。
回复

使用道具 举报

51

主题

613

帖子

9

银币

中流砥柱

Rank: 25

铜币
815
发表于 2016-3-9 11:30:52 | 显示全部楼层
我可以暂时模仿它,我认为在UI
ISOLINES = 4
Sweep
ISOLINES = 2
Sweep
但是如果我绕行或再生,那么第一次扫描更新看起来像ISOLINES = 2的第二次扫描。
回复

使用道具 举报

51

主题

613

帖子

9

银币

中流砥柱

Rank: 25

铜币
815
发表于 2016-3-9 12:57:43 | 显示全部楼层

奇怪的是,这些是系统变量,而不是实体特定的属性。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2016-3-9 14:51:14 | 显示全部楼层
这就好像圆在扫描时没有正确对齐
我认为您可能需要将圆法线与多段线起始段方向平移并对齐,就像使用拉伸一样,但我认为此调用会解决这一问题:
扫掠选项生成器。对齐=扫掠选项对齐选项。将SweepEntityPath与
对齐。尝试将
更改为SweepOptionBuilder。基点=点3d。原点

扫掠选项生成器。基点=中心线。起始点
就个人而言,我可能会使用沿路径挤出,因为三维实体截面是恒定的,而扫掠可以具有锥度和许多其他可能不需要的属性
不过,您可能必须自己进行转换,但这是微不足道的。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2016-3-11 07:38:02 | 显示全部楼层
昨晚我有时间再看一遍,但我仍然没有任何运气。我尝试了上面列出的所有建议,基本上还是得到相同的结果。甚至ExtrudeAlongPath看起来也不正确,我开始认为我的系统设置有其他问题。使用活动的,Document.LockDocument()。
使用事务=活动,database . transaction manager . start transaction()。
Dim模型空间=活动,Database.ModelSpace(OpenMode,ForWrite)。
Dim polylineSegmentCollection = New polylineSegmentCollection()。
Using linesegment 1 = New linesegment 2d(新点2d(-4,4),新点2d(-4,0))。
Dim line segment = new polyline segment(line segment 1)。
polylineSegmentCollection,Add(lineSegment)。
结束使用。
Dim arc segment = New polyline segment(新点2d(-4,0),新点2d(4,0),1,0)。
polylineSegmentCollection,添加(弧段)。
Using linesegment 2 = New linesegment 2d(New Point2d(4,0),New point 2d(4,4))。
Dim line segment = new polyline segment(line segment 2)。
polylineSegmentCollection,Add(lineSegment)。
结束使用。
使用centline = polylineSegmentCollection,拓扑林()。
Dim solid 1 = New solid 3d()。
使用circle = New Circle(中心线,起点,向量3d。YAxis,. 5)。
Dim sweepOptionsBuilder = New sweepOptionsBuilder()。
sweepOptionsBuilder,Align = SweepOptionsAlignOption,AlignSweepEntityToPath。
sweepOptionsBuilder,基点=中心线,起点。
sweepOptionsBuilder,Bank = True。
固体1,CreateSweptSolid(圆,中心线,sweepOptionsBuilder。tosweeptions())。
结束使用。
模型空间,AppendEntity(solid1)。
交易AddNewlyCreatedDBObject(solid1,True)。

Dim solid 2 = New solid 3d()。
使用circle2 =新圆(中心线,起点,向量3d。YAxis,0.5)。
Dim circle collection = New dbobject collection()。
圆形集合,添加(circle2)。
Dim region collection = Autodesk,AutoCAD . database services . region . createfromcurves(circle collection)。
Dim Region As Region = Region collection(0)。
固体2,挤压路径(区域,中心线,0.0)。
结束使用。
固体2,TransformBy(Matrix3d,位移(新向量3d(-12,0,0))。
模型空间,AppendEntity(solid2)。
交易AddNewlyCreatedDBObject(solid2,True)。
交易Commit()。
结束使用。
结束使用。
结束使用等值线确实可以补救这种情况,但是只有当您将它设置为较高的值时,正如Jeff提到的,将它改回并重新生成只是将它重置为最初的糟糕状态,我试图完成的是制作U型螺栓的开始,我以为这将是一个简单的练习,但显然我高估了自己的能力。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 19:00 , Processed in 0.339866 second(s), 72 queries .

© 2020-2025 乐筑天下

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