乐筑天下

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

更改土建图纸设置中的图纸单元

[复制链接]

4

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
27
发表于 2015-5-4 06:10:02 | 显示全部楼层 |阅读模式
嗨,
我有自己的插件来检查图纸以应用我们公司的标准。
其中一个功能必须是检查Civil Drawingsettings中的绘图单元。
我可以检查当前的机组设定,但无法更改设定。
我想要的是当当前单位设置不是米时,将当前设置设置为米。我的代码:
  1. Dim civilDoc As CivilDocument = Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument
  2.         Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
  3.         Using trans As Transaction = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction()
  4.             Try
  5.                 Dim civilUnits As String = civilDoc.Settings.DrawingSettings.UnitZoneSettings.DrawingUnits.ToString
  6.                 If Not civilUnits = "Meters" Then
  7.                     ed.WriteMessage("Change UNITS from : " & civilUnits & " to Meters")
  8.                     civilDoc.Settings.DrawingSettings.UnitZoneSettings.DrawingUnits = Settings.DrawingUnitType.Meters
  9.                 End If
  10.             Catch ex As Autodesk.Civil.CivilException
  11.                 ed.WriteMessage("Exception Message is  : " & ex.Message.ToString())
  12.             Finally
  13.                 trans.Commit()
  14.             End Try
  15.         End Using

上述代码导致以下错误:
  1. ************** Exception Text **************
  2. System.ArgumentNullException: Value cannot be null.
  3.    at Autodesk.Civil.AttributeHelper.putAttributeGeneric[i](UInt32 attributeId, IAeccAttributeBin* pAttrBin, Int32 newValue, AeccUserParam* userParam)
  4.    at Autodesk.Civil.AttributeHelper.putAttributeInt(UInt32 attributeId, AcDbObjectId* ObjectId, Int32 newValue)
  5.    at Autodesk.Civil.Settings.SettingsUnitZone.set_DrawingUnits(DrawingUnitType newValue)
  6.    at AnaconToolSet.tabProcessDrawing.checkCivilDrawingSettings()
  7.    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  8.    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  9.    at System.Windows.Forms.Control.WndProc(Message& m)
  10.    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
  11.    at System.Windows.Forms.Button.WndProc(Message& m)
  12.    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

有人能给我指一下正确的方向吗?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2015-5-4 09:50:50 | 显示全部楼层
我要大胆猜测您调用它的表单是无模式表单或调色板集,在任何一种情况下,您都需要在编辑设置之前锁定绘图。我使用C#,但我能够从无模式表单中复制错误并像这样解决:私有空button1_Click(对象发送者,EventArgs e)。
{。
使用(DocumentLock lk=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument())。
{。
民间文档civdoc=CivilApplication.ActiveDocument;。
DrawingUnitType单元=civdoc.Settings.DrawingSettings.UnitZoneSettings.DrawingUnits;。
如果(单位==DrawingUnitType.Feet)。
{。
civdoc.Settings.DrawingSettings.UnitZoneSettings.DrawingUnitsDrawingUnitType.Meters。
}。
}。
}。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 04:02 , Processed in 0.212260 second(s), 56 queries .

© 2020-2025 乐筑天下

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