清扫固体
我创建了一些简单的代码来围绕多段线扫描一个圆。不幸的是,在线框模式下,扫描实体的外观与使用“扫描”命令手动创建的实体不同,如下图所示在这张图片中,我在左边有手动扫描,在右边有由代码创建的扫描。
这是生成上述实线的代码。我今天想不清楚。你认为需要做些什么才能使其在线框中看起来正确?
私有子输入按钮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的几何体扩展来创建多段线,并且没有显示这些方法的代码。如果你需要它们,一个简单的谷歌搜索将找到正确的线程。
**** Hidden Message *****
这很奇怪,
看起来ISOLINES DISPSILH VSEDGES等系统变量正在被更改为一个固体....我不知道这是可以做到的。
是否以编程方式创建了两个扫描路径(左侧和右侧)? 是的。手动扫描是通过运行程序一次,然后删除它的实体部分并沿着折线路径扫描圆圈来完成的。 你在香草,对吧? 如果你在垂直行业,我会看看显示管理器,看看这是否会影响它。 是的,运行Vanilla AutoCAD。嗯,启动Vanilla Autocad的垂直。话虽如此,如果它是显示表示,我相信它会对两个3d实体产生类似的影响。它们看起来都一样。
在代码中创建的实体的问题是,圆圈在扫描时似乎有些旋转。圆圈旋转是恒定的,只是与路径不正确对齐。我尝试了所有的扫描生成器选项,但没有提出任何似乎有效的东西。
我的下一个选择将是尝试在官方的开发人员面前得到这个。NET页面,看看他们是否想出了什么。
我想知道是否还有其他运行代码的人有同样的问题?或者只是我。我可以尝试以不同的方式构建多段线,看看这是否有效果,但我相信它可能不会。 我可以暂时模仿它,我认为在UI
ISOLINES = 4
Sweep
ISOLINES = 2
Sweep
但是如果我绕行或再生,那么第一次扫描更新看起来像ISOLINES = 2的第二次扫描。
奇怪的是,这些是系统变量,而不是实体特定的属性。 这就好像圆在扫描时没有正确对齐
我认为您可能需要将圆法线与多段线起始段方向平移并对齐,就像使用拉伸一样,但我认为此调用会解决这一问题:
扫掠选项生成器。对齐=扫掠选项对齐选项。将SweepEntityPath与
对齐。尝试将
更改为SweepOptionBuilder。基点=点3d。原点
到
扫掠选项生成器。基点=中心线。起始点
就个人而言,我可能会使用沿路径挤出,因为三维实体截面是恒定的,而扫掠可以具有锥度和许多其他可能不需要的属性
不过,您可能必须自己进行转换,但这是微不足道的。 昨晚我有时间再看一遍,但我仍然没有任何运气。我尝试了上面列出的所有建议,基本上还是得到相同的结果。甚至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型螺栓的开始,我以为这将是一个简单的练习,但显然我高估了自己的能力。
页:
[1]
2