gjliang 发表于 2003-11-21 12:52:00

[求助]请帮我看以下这段代码

Sub wm()
Dim ent As AcadEntity
Dim tet As String
    For Each ent In ThisDrawing.ModelSpace
      If ent.linetype = "acad_iso05w100" Then
       ' On Error Resume Next
            Dim layc As AcadLayer
            Set layc = ThisDrawing.layers.add("虚线")
            layc.Color = acWhite
            layc.Lineweight = acLnWt050
            ent.layer = "虚线"
            ent.Color = acByLayer
            ent.Lineweight = acLnWtByLayer
            ent.linetype = "acad_iso05w100"
      End If
Next
ThisDrawing.PurgeAll
End Sub

请问为什么不能用ent.linetype = "acad_iso05w100" 做判断条件?

gzy 发表于 2003-11-21 13:02:00

应该是ent.linetype ="ACAD_ISO05W100"
然后你再用这个线型画一条线就可以运行到里面了。

gjliang 发表于 2003-11-21 13:14:00

我是想实现一个没有分层但里面有ACAD_ISO05W100线型,把它取出来单独建一个虚线层。并把所有ACAD_ISO05W100线型的实体转到该层上。

gzy 发表于 2003-11-21 13:25:00

上面的ent.layer="虚线"已经将符合条件的对象转到了“虚线”层了啊。
另外ent.linetype = "acad_iso05w100"这句好象没有必要。

gjliang 发表于 2003-11-21 13:28:00

但是我运行后没有任何效果的,运行得到的结果是:ent.linetype ="bylaye"

gzy 发表于 2003-11-21 13:31:00

这是因为你的图形空间没有符合条件(线型)的对象
你用该线型画一条线你就清楚了

mccad 发表于 2003-11-21 13:33:00

对于一些对象没有特别指定线型时,对象的线型为随层(BYLAYER),这样你通过使用
If ent.linetype ="ACAD_ISO05W100" Then
是过滤不出该对象的。

gjliang 发表于 2003-11-21 13:36:00

如果是以线宽、颜色等来做判断条件的话,就可以把符合条件的转移到相应图层里,你可以把这段程序放到你的机子上运行一下。如果改成线宽或者颜色做判断条件的话是可以的。用我的这个文件试一下。

gzy 发表于 2003-11-21 13:45:00

用你的程序一样也可以。
我是用ent.linetype ="ACAD_ISO05W100"运行结果如下。没有问题啊。

gjliang 发表于 2003-11-21 13:46:00

明总的意思是不是如果每一个实体都给指定了不随层的线型就可以了呢,那这个程序的作用也就没有了,因为在一个图上总会有随层的线型的。
页: [1] 2
查看完整版本: [求助]请帮我看以下这段代码