关于CAD中VBA二次开发问题 5

我是初学者Functionloadlinetype(linetypenameAsString)AsAcadLineType'Thisexampleattemptstolo... 我是初学者

Function loadlinetype(linetypename As String) As AcadLineType
' This example attempts to load the linetype "CENTER" from
' the acad.lin file. If the linetype already exists, then
' a message is displayed.

' Load "CENTER" line type from acad.lin file
' On Error Resume Next ' trap any load errors
loadlinetype= 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 Function

Sub pipe()
Dim lay1 As AcadLayer
Dim lay2 As AcadLayer
Set lay1 = ThisDrawing.Layers.Add("pipeside")
Set lay2 = ThisDrawing.Layers.Add("center")
lay1.color = acYellow
lay1.Linetype = "continuous"

lay2.Linetype = loadlinetype("Center")

End Sub
现在想通过函数来加载线型,执行到lay2.Linetype = loadlinetype("Center")
出现错误,求大神指导!
展开
 我来答
hbpaoxiao2
2015-07-31 · TA获得超过2898个赞
知道大有可为答主
回答量:1962
采纳率:72%
帮助的人:873万
展开全部

VBA没用过,不过从你的代码来看

lay1.Linetype = "continuous"  '这句正解,说明layer.Linetype为string类型
lay2.Linetype = loadlinetype("Center") 'loadlinetype返回类型为AcadLineType,所以类型不匹配

试试改为

ay1.Linetype = "continuous"
loadlinetype("Center")
lay2.Linetype = "Center"
追问
运行是对的,我还想问您一个问题,怎么用编程实现挡CAD打开时,所有线型自动加载
追答

不清楚啊,试试auto_open事件?在模块中放入以下代码

sub auto_open()
    loadlinetype("Center")
    loadlinetype("xxx")
end sub
Function loadlinetype(linetypename As String) As AcadLineType
end function
高薪钣金工程
2021-04-27
知道答主
回答量:17
采纳率:0%
帮助的人:1.5万
展开全部

CAD钣金二次开发功能, 数冲与激光自动排版, 并统计材料费与喷涂费, 新功能在不断完善及更新开发中...

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式