明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1643|回复: 2

64位系统64位CAD的打开文件对话框

[复制链接]
发表于 2013-11-25 15:32 | 显示全部楼层 |阅读模式
64位系统下,64位的CAD VBA 的打开文件对话框 添加 Commondialog  提示“不支持止接口”。
不知道用什么来打开文件或获取某文件夹下的所有文件名。
发表于 2013-12-20 18:01 | 显示全部楼层
帮顶一下,我也被此问题困扰,至今未能解决,那位大侠知道的请指点一下
或者换一思路,在64位系统下,打开文件的控件commondailog变成什么了?
发表于 2013-12-21 13:29 | 显示全部楼层
本帖最后由 3xxx 于 2013-12-21 13:31 编辑

我的似乎没遇到这个问题啊。
哦,看错了,我用的是vb。vba没试过。下面是vb。
比如:在64位系统下CAD2014版没问题啊。
Sub deleteraster()

'对AutoCAD部件的引用
    Dim acadApp As Object '声明AutoCAD应用程序对象变量

    Set acadApp = GetObject(, "AutoCAD.Application") '若AutoCAD已运行则获得它的对象实例

    acadApp.Visible = True 'False
'Dim acadDoc As AcadDocument
'Set acadDoc = acadApp.ActiveDocument
Dim objName As String
Dim rasterObj As AcadRasterImage 'AcadEntity
Dim filename() As Variant
Dim FilterType(0) As Integer
Dim ftype(0) As Integer
Dim fdata(0) As Variant
Dim FilterData(0) As Variant
Dim layerObj As AcadLayer
   With CommonDialog1
        .CancelError = True
        .MaxFileSize = 32767
        .Flags = cdlOFNHideReadOnly Or cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNNoDereferenceLinks
        .DialogTitle = "打开dwg文件"
        .Filter = "图形文件(*.dwg)|*.dwg|所有文件(*.*)|*.*"
        .filename = ""
        .ShowOpen
    End With
   
    filename = ParseFileNames(CommonDialog1.filename)
   
  '打开图形进行操作
    For i = 0 To UBound(filename) 'Lbound
        acadApp.Documents.open filename(i)
        Set acadDoc = acadApp.ActiveDocument
             '将所有图层打开,解锁,解冻
            For Each layerObj In acadDoc.Layers
                layerObj.Lock = False ' Not (layerObj.Lock)
                'layerObj.Freeze = False ' Not (layerObj.Freeze)
                layerObj.LayerOn = True ' Not (layerObj.LayerOn)
            Next


        '创建新选择集
        Set adss = acadDoc.SelectionSets.Add("adSS")
        If Err Then Set adss = acadDoc.SelectionSets.Add("adSS")
        adss.Clear

        ftype(0) = 0
        fdata(0) = "IMAGE" 'rasterimage无效
        adss.Select acSelectionSetAll, , , ftype, fdata

        For Each rasterObj In adss ' acadDoc.ModelSpace'
            objName = rasterObj.ImageFile 'Name 'ObjectName
            objName = JustFileName1(objName) '获得图像扩展名
                If objName = "jpg" Then '选择是jpg文件还是tif文件
                rasterObj.Detach 'Delete
                ElseIf objName = "JPG" Then
                rasterObj.Detach 'Delete
               
                End If
               
                If Err.Number = -2145386426 Then
                    MsgBox imageName & " 文件未找到。"
                    'Exit Sub
                End If

        Next
        acadDoc.PurgeAll '对图层和块进行清理
        '关闭图形
        acadDoc.Close ' True ',acadApp.Documents filename(i)
    Next i
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 00:53 , Processed in 0.243718 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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