明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3313|回复: 10

VBA线型加载问题

[复制链接]
发表于 2005-2-24 11:57:00 | 显示全部楼层 |阅读模式
怎样防止线型的重复加载?对我来说很难,谢谢指教!
发表于 2005-2-24 12:43:00 | 显示全部楼层
Sub Example_Load()
' This example attempts to load the linetype "CENTER" from
' the acad.lin file. If the linetype already exists, then
' a message is displayed.

Dim linetypeName As String
linetypeName = "CENTER"

' Load "CENTER" line type from acad.lin file
On Error Resume Next ' trap any load errors
ThisDrawing.Linetypes.Load linetypeName, "acad.lin"

' If the name already exists, then notify user
If Err.Description = "Duplicate record name" Then
MsgBox "A line type named '" & linetypeName & "' already exists.", , "Load Example"
End If

End Sub
 楼主| 发表于 2005-2-24 20:59:00 | 显示全部楼层
可以加上说明吗?
发表于 2005-2-25 08:27:00 | 显示全部楼层
'符号后面的不是说明?老大,你编程吗?
发表于 2005-2-25 09:44:00 | 显示全部楼层
2楼的,那个帮助文件中的程序例子你试过没有,运行结果与所给说明好象不一致,而且程序没有完善的出错处理。
发表于 2005-2-25 12:37:00 | 显示全部楼层
  1. Sub Example_Load()
  2.        ' 该示例尝试从acad.lin文件中加载 "CENTER" 线型。如果该线型已经存在,则显示提示。
  3.       
  4.        Dim linetypeName As String
  5.        linetypeName = "center"
  6.       
  7.        ' 从acad.lin文件中加载 "CENTER"线型
  8.        On Error Resume Next       ' 捕获任何出错信息
  9.        ThisDrawing.Linetypes.Load linetypeName, "acad.lin"
  10.       
  11.        ' 如果该名称已经存在,则提醒用户
  12.        If Err.Number = -2145386405 Then
  13.                MsgBox "名称为“" & linetypeName & "”的线型已经存在。", , "明经通道VBA线型加载示例"
  14.        End If
  15.       
  16. End Sub
 楼主| 发表于 2005-2-25 19:43:00 | 显示全部楼层
2楼的,你的程序行不通,麻烦你再和mccad老师的对比一下,同样谢谢你!
 楼主| 发表于 2005-2-25 19:44:00 | 显示全部楼层
感谢郑老师
发表于 2005-5-12 11:03:00 | 显示全部楼层
''''各位老兄,看看下面的是否合适,以dashed线型为利
Dim i As Integer
Dim dashedlineexist As Boolean '''''判断是否存在的标志,如果存在,就激活为当前的线型,否则就添加该线型

dashedlineexist = False ''''先设定其不存在,如果存在就把它设成true


For i = 0 To ThisDrawing.Linetypes.Count - 1
If ThisDrawing.Linetypes.Item(i).Name = "DASHED" Then
ThisDrawing.ActiveLinetype = ThisDrawing.Linetypes.Item(i)
MsgBox "DASHED线型已经存在"
dashedlineexist = True
End If
Next i


If dashedlineexist = False Then ''''如果不存在就添加

Dim dashedline As AcadLineType
ThisDrawing.Linetypes.Load "DASHED", "acad.lin"
Set dashedline = ThisDrawing.Linetypes.Item(ThisDrawing.Linetypes.Count - 1) ''''找最后一个

ThisDrawing.ActiveLinetype = dashedline End If


发表于 2008-8-13 10:41:00 | 显示全部楼层
好帖,在判断图层和线性的装载时,用error比要比用循环实用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 02:27 , Processed in 0.189265 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表