乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 145|回复: 4

[编程交流] 打开dwg,修改并另存为

[复制链接]

18

主题

32

帖子

14

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 22:37:33 | 显示全部楼层 |阅读模式
夏威夷群岛
 
我必须打开目录中的所有dwg,修改一些块属性(如BOM..图纸编号..)然后做一个saveas。
 
首先,我为已经打开的dwg制作代码,修改它并另存为(带有
mydwg。关闭并保存(ligneF))
 
所有的工作都打招呼了,很快我就把它放在一个循环中打开了所有的dwg。保存为文件时autocad崩溃。
 
你能帮助我吗。我试着用readdwgfile选择
应用DocumentManager。打开我在两方面都有相同的错误。
 
ps 1,如果我只运行open和saveas行,我也会出现同样的错误。
 
 
 
谢谢你的帮助
 
 
 
这是我的密码
 
 
  1. [size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] fichiersTrouv = Directory.GetFiles(T_CIBLE.Text, [/size][size=2][color=#a31515][size=2][color=#a31515]"*.dwg"[/color][/size][/color][/size][size=2], SearchOption.AllDirectories)[/size]
  2. [size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] ligneF [/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] fichiersTrouv [/size][size=2][color=#008000][size=2][color=#008000]' the list of file is correct[/color][/size]
  3. [/color][/size][size=2][color=#008000][size=2][color=#008000]'Application.DocumentManager.Open option[/color][/size]
  4. [/color][/size][size=2][color=#008000][size=2][color=#008000]'Dim mydwg As Document = Application.DocumentManager.Open(ligneF)[/color][/size]
  5. [/color][/size][size=2][color=#008000][size=2][color=#008000]' Dim myDWG As Document = Application.DocumentManager.MdiActiveDocument[/color][/size]
  6. [/color][/size][size=2][color=#008000][size=2][color=#008000]' myDB = myDWG.Database[/color][/size]
  7. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myDB [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]New[/color][/size][/color][/size][size=2] Database([/size][size=2][color=#0000ff][size=2][color=#0000ff]False[/color][/size][/color][/size][size=2], [/size][size=2][color=#0000ff][size=2][color=#0000ff]True[/color][/size][/color][/size][size=2])[/size]
  8. [size=2]myDB.ReadDwgFile(ligneF, IO.FileShare.ReadWrite, [/size][size=2][color=#0000ff][size=2][color=#0000ff]True[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]""[/color][/size][/color][/size][size=2])[/size]
  9. [size=2][color=#008000][size=2][color=#008000]' this section have no error, it work alone[/color][/size]
  10. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size][/color][/size][size=2] mytrans [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] Transaction = myDB.TransactionManager.StartTransaction[/size]
  11. [size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] myBlockName [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]String[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] GetTopLevelBlocks(myDB)[/size]
  12. [size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] BRefID [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] ObjectId [/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] GetBRefIDs(myDB, myBlockName)[/size]
  13. [size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size][/color][/size][size=2] myBlockName = [/size][size=2][color=#a31515][size=2][color=#a31515]"DANCART"[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Then[/color][/size]
  14. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] MYATTVALS [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]New[/color][/size][/color][/size][size=2] Dictionary([/size][size=2][color=#0000ff][size=2][color=#0000ff]Of[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]String[/color][/size][/color][/size][size=2], [/size][size=2][color=#0000ff][size=2][color=#0000ff]String[/color][/size][/color][/size][size=2])[/size]
  15. [size=2]MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"PROJET"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"A"[/color][/size][/color][/size][size=2])[/size]
  16. [size=2]MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"CLIENT1"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"B"[/color][/size][/color][/size][size=2])[/size]
  17. [size=2]MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"CLIENT2"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"C"[/color][/size][/color][/size][size=2])[/size]
  18. [size=2]MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"DESSINATEUR"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"D"[/color][/size][/color][/size][size=2])[/size]
  19. [size=2]MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"DATE"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"E"[/color][/size][/color][/size][size=2])[/size]
  20. [size=2]MYATTVALS.Add([/size][size=2][color=#a31515][size=2][color=#a31515]"DESSIN"[/color][/size][/color][/size][size=2], [/size][size=2][color=#a31515][size=2][color=#a31515]"F"[/color][/size][/color][/size][size=2])[/size]
  21. [size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size][/color][/size][size=2] myTrans2 [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] Transaction = BRefID.Database.TransactionManager.StartTransaction[/size]
  22. [size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myBRef [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] BlockReference = BRefID.GetObject(OpenMode.ForRead)[/size]
  23. [size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myAttCollection [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] AttributeCollection = myBRef.AttributeCollection[/size]
  24. [size=2][color=#0000ff][size=2][color=#0000ff]For[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Each[/color][/size][/color][/size][size=2] myAttRefID [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] ObjectId [/size][size=2][color=#0000ff][size=2][color=#0000ff]In[/color][/size][/color][/size][size=2] myAttCollection[/size]
  25. [size=2][color=#0000ff][size=2][color=#0000ff]Dim[/color][/size][/color][/size][size=2] myAttRef [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] AttributeReference = myAttRefID.GetObject(OpenMode.ForWrite)[/size]
  26. [size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size][/color][/size][size=2] MYATTVALS.ContainsKey(myAttRef.Tag) [/size][size=2][color=#0000ff][size=2][color=#0000ff]Then[/color][/size]
  27. [/color][/size][size=2]myAttRef.TextString = MYATTVALS(myAttRef.Tag)[/size]
  28. [size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size]
  29. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Next[/color][/size]
  30. [/color][/size][size=2]myTrans2.Commit()[/size]
  31. [size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size]
  32. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size]
  33. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Next[/color][/size]
  34. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Next[/color][/size]
  35. [/color][/size][size=2]mytrans.Commit()[/size]
  36. [size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Using[/color][/size][/color][/size]
  37. [size=2][color=#0000ff]
  38. [/color][/size][size=2]myDB.SaveAs(ligneF & [/size][size=2][color=#a31515][size=2][color=#a31515]"1.dwg"[/color][/size][/color][/size][size=2], DwgVersion.AC1004) [/size][size=2][color=#008000][size=2][color=#008000]' crash on this line[/color][/size]
  39. [/color][/size][size=2]myDB.Dispose()[/size]
  40. [size=2][color=#008000][size=2][color=#008000]' mydwg.CloseAndSave(ligneF) 'Application.DocumentManager.Open option crash [/color][/size]
  41. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Next[/color][/size]
  42. [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Sub[/color][/size]
  43. [/color][/size]
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 23:01:01 | 显示全部楼层
使用Try。。。获取描述性错误消息的Catch语句
类似于
 
  1. Try
  2. ...your code goes here
  3. Catch ex as AutoDesk.Autocad.Runtime.Exception ''/*or System.Exception*/
  4. Application.ShowAlertDialog(ex.Message + vblf + ex.StackTrace
  5. Finally
  6. 'keep it blank yet
  7. End Try

 
 
 
接下来使用命名空间系统。IO以获取有效的完整路径,
可能您在这行中漏掉了一个反斜杠:
  1. Imports System.IO
  2. ...................
  3. myDB.SaveAs(Path.Combine(ligneF, "1.dwg"), DwgVersion.AC1004)

那么(我不知道你现在的版本)也许,
必须向该方法传递3个参数,而不是2个:
  1. myDB.SaveAs(Path.Combine(ligneF, "1.dwg"), DwgVersion.AC1004,DataBase.SecurityParameters)

很好用
使用。。。myDB对象的End Using语句
只是快速浏览一下
回复

使用道具 举报

18

主题

32

帖子

14

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 23:11:13 | 显示全部楼层
谢谢'
 
我用TRY。。CATCH发现我在MYDB中使用了错误的dwgversion。SAVEAS命令
 
SSAVEA现在运行良好
 
我试试MYDB。SAVE()命令,但它不起作用???
 
试抓给我一个eFileINternalErr
 
奇怪的
回复

使用道具 举报

40

主题

133

帖子

25

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
277
发表于 2022-7-6 23:26:18 | 显示全部楼层
看这里http://208.74.205.69/t5/NET/Autocad-Database-Save/td-p/3196432
上面写着:数据库。Save()未实现,始终会出错。
 
顺便说一句:
如果ligneF=“my.dwg”
 
ligneF和“1.dwg”给出的文件名类似于:my。dwg1.dwg
 

 
路径Combine(ligneF,“1.dwg”)提供的文件名类似于:my。图纸1。图纸
 
我使用;左(ligneF,Len(ligneF)-4)+“1.dwg”
回复

使用道具 举报

18

主题

32

帖子

14

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-6 23:51:42 | 显示全部楼层
谢谢你的帮助。我发现只有SAVEAS可以工作,以保持数据库的完整性。
 
 
因此,我保存为,删除旧文件,重命名新文件
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-1-31 21:02 , Processed in 0.243509 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表