嗨,
我有自己的插件来检查图纸以应用我们公司的标准。
其中一个功能必须是检查Civil Drawingsettings中的绘图单元。
我可以检查当前的机组设定,但无法更改设定。
我想要的是当当前单位设置不是米时,将当前设置设置为米。我的代码:
- Dim civilDoc As CivilDocument = Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument
- Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
- Using trans As Transaction = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction()
- Try
- Dim civilUnits As String = civilDoc.Settings.DrawingSettings.UnitZoneSettings.DrawingUnits.ToString
- If Not civilUnits = "Meters" Then
- ed.WriteMessage("Change UNITS from : " & civilUnits & " to Meters")
- civilDoc.Settings.DrawingSettings.UnitZoneSettings.DrawingUnits = Settings.DrawingUnitType.Meters
- End If
- Catch ex As Autodesk.Civil.CivilException
- ed.WriteMessage("Exception Message is : " & ex.Message.ToString())
- Finally
- trans.Commit()
- End Try
- End Using
上述代码导致以下错误:
- ************** Exception Text **************
- System.ArgumentNullException: Value cannot be null.
- at Autodesk.Civil.AttributeHelper.putAttributeGeneric[i](UInt32 attributeId, IAeccAttributeBin* pAttrBin, Int32 newValue, AeccUserParam* userParam)
- at Autodesk.Civil.AttributeHelper.putAttributeInt(UInt32 attributeId, AcDbObjectId* ObjectId, Int32 newValue)
- at Autodesk.Civil.Settings.SettingsUnitZone.set_DrawingUnits(DrawingUnitType newValue)
- at AnaconToolSet.tabProcessDrawing.checkCivilDrawingSettings()
- at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
- at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
- at System.Windows.Forms.Control.WndProc(Message& m)
- at System.Windows.Forms.ButtonBase.WndProc(Message& m)
- at System.Windows.Forms.Button.WndProc(Message& m)
- at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
有人能给我指一下正确的方向吗?
本帖以下内容被隐藏保护;需要你回复后,才能看到! 游客,如果您要查看本帖隐藏内容请 回复 |