god 发表于 2002-11-22 19:10:06

[编程申请]:有没有把短线合成长线的工具

我收到一张dwg图纸,他们故意把一条多义线打断成很多短线段,本来是几百K的小文件变成了十几兆的大文件,给下一步的工作增加了麻烦,请问有没有什么办法把它合成端点较少的多义线呢?

急急急

******************************************
斑竹评论:能够引导大家积极讨论,有助于学习交流。

eachy 发表于 2002-11-22 19:23:30

Re: [编程申请]:有没有把短线合成长线的工具

最初由 god 发布
我收到一张dwg图纸,他们故意把一条多义线打断成很多短线段,本来是几百K的小文件变成了十几兆的大文件,给下一步的工作增加了麻烦,请问有没有什么办法把它合成端点较少的多义线呢?

急急急
工具箱-》曲线-》线变复线

god 发表于 2002-11-22 19:32:14

没有啊,我用的是026版的xdbox

XDSoft 发表于 2002-11-22 19:35:23

最初由 god 发布
没有啊,我用的是026版的xdbox

屏幕菜单:

曲线-线变复线,能把首尾相连的LINE,ARC,POLYLINE连接成一个POLYLINE。

god 发表于 2002-11-22 19:41:21

仅仅连接还不行,因为它本来就是连起来的,我想把几乎位于一条直线上的多段线连成一根直线,这样既不影响图纸效果,也可减小图的大小

eachy 发表于 2002-11-22 19:42:54

那用连接线段

efan2000 发表于 2002-11-22 19:46:14

最初由 god 发布
没有啊,我用的是026版的xdbox

god 发表于 2002-11-22 19:46:54

我猜你指的是“连接线段”“合并线段”吧,

看看他们提交的图。中间那根线上的夹点,密密麻麻的。度量太小了。

没必要这么密的,我想把他们变成只有几个端点的线

efan2000 发表于 2002-11-22 19:50:04

可否把这条线拷贝到另一张图纸,上传上来,大家帮忙解决一下。

god 发表于 2002-11-22 20:00:46

是一张地形图,我们要在上面做工程。但是文件有30多兆,我删了一些东西,还有十几兆。这是很小的局部图。可以看出效果

wang_yangming 发表于 2002-11-22 20:08:31

我有很多自编shx文件,输钢筋等级没问题

调用方法:I级钢筋%%130,II级钢筋%%131,III级钢筋%%132,IV级钢筋%%133

god 发表于 2002-11-22 20:16:55

我不是要联结啦,我是要减少一根多义线的端点数啦

看他们画的圆,都断成几百个端点的多义线了。

请大家伙儿帮忙看看,咋办呢?

各位斑竹,是不是暂时没办法了?

XDSoft 发表于 2002-11-22 21:09:25

最初由 god 发布
我不是要联结啦,我是要减少一根多义线的端点数啦

看他们画的圆,都断成几百个端点的多义线了。

请大家伙儿帮忙看看,咋办呢?

各位斑竹,是不是暂时没办法了?

不明白你的意思,用那个工具,几百个断的线,就连成一个了。

如果你说的还是一根,被人为的里面多了几百个端点,我想没有人能做到吧。

efan2000 发表于 2002-11-22 21:25:37

其实就是多段线的顶点太密了,下面的例程是用R2000r的VBA作的,大家可以把它转换成其它语言的。目的是把线中每隔几点的之间的顶点去除。


Sub Test()
    Dim EntObj As AcadEntity
    Dim vPt As Variant
    Dim i As Integer
    For Each EntObj In ThisDrawing.ModelSpace
      If TypeOf EntObj Is AcadLWPolyline Then
            vPt = EntObj.Coordinates
            For i = 0 To UBound(vPt) Step 2
                If i Mod 5 <> 0 Then '每隔5点,去除中间的4个点
                  RemoveVertex EntObj, i / 2
                End If
            Next
      End If
    Next
End Sub

'删除多段线中的某一个顶点
Sub RemoveVertex(ByRef pLineObj As AcadLWPolyline, ByVal Index As Integer)
    Dim vPt As Variant
    Dim Pt() As Double
    vPt = pLineObj.Coordinates
    If Index > (UBound(vPt) - 1) / 2 Then Exit Sub
    ReDim Pt(0 To UBound(vPt) - 2)
    Dim i As Integer
    For i = 0 To UBound(vPt) - 2 Step 2
      If i / 2 >= Index Then
            Pt(i) = vPt(i + 2)
            Pt(i + 1) = vPt(i + 3)
      Else
            Pt(i) = vPt(i)
            Pt(i + 1) = vPt(i + 1)
      End If
    Next
    pLineObj.Coordinates = Pt
End Sub

aeo 发表于 2002-11-22 22:17:12

是地形图呀
扫描后矢量化的,都这样的
真有好办法就好了
页: [1] 2 3 4 5 6
查看完整版本: [编程申请]:有没有把短线合成长线的工具