Ein Treffpunkt für C#-Programmierer
Guest
So beheben Sie den Ausnahmetyp in C#.net ObjectArx
Post
by Guest » 13 Jan 2025, 10:34
Wenn ich meinen Code ausführe, wird immer diese Zeile „Exception of type Autodesk.AutoCAD.BoundaryRepresentation.Exception was throwd“ angezeigt.
Ich verwende .netFramework 4.8 in Visual Studio 2022. Hat jemand den gleichen Fehler oder weiß er, wie man ihn behebt? es
hier ist der Code
Code: Select all
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.BoundaryRepresentation;
using Autodesk.AutoCAD.Colors;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Input;
namespace _3Dinterface.ViewModels
{
public class MainWindowViewModel : INotifyPropertyChanged
{
private string _selectedColor1;
private string _selectedColor2;
private Autodesk.AutoCAD.Colors.Color _color1;
private Autodesk.AutoCAD.Colors.Color _color2;
public string SelectedColor1
{
get => _selectedColor1;
set { _selectedColor1 = value; OnPropertyChanged(nameof(SelectedColor1)); }
}
public string SelectedColor2
{
get => _selectedColor2;
set { _selectedColor2 = value; OnPropertyChanged(nameof(SelectedColor2)); }
}
public ICommand SelectColor1Command { get; }
public ICommand SelectColor2Command { get; }
public ICommand ApplyColorsCommand { get; }
public MainWindowViewModel()
{
SelectColor1Command = new RelayCommand(_ => SelectColor(1));
SelectColor2Command = new RelayCommand(_ => SelectColor(2));
ApplyColorsCommand = new RelayCommand(_ => ApplyColorsTo3DObject());
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private void SelectColor(int colorNumber)
{
var colorDialog = new Autodesk.AutoCAD.Windows.ColorDialog();
if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (colorNumber == 1)
{
_color1 = colorDialog.Color;
SelectedColor1 = $"First 1: {_color1.ColorIndex}";
}
else
{
_color2 = colorDialog.Color;
SelectedColor2 = $"Second 2: {_color2.ColorIndex}";
}
}
}
private void ApplyColorsTo3DObject()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
if (_color1 == null || _color2 == null)
{
ed.WriteMessage("\nPlease chose 2 color.");
return;
}
using (var lck = doc.LockDocument())
{
PromptEntityOptions peo = new PromptEntityOptions("\nSelect 3D object:");
peo.SetRejectMessage("\nNot Solid3d.");
peo.AddAllowedClass(typeof(Solid3d), true);
var per = ed.GetEntity(peo);
if (per.Status != PromptStatus.OK)
{
ed.WriteMessage("\nUnfound object.");
return;
}
using (Transaction tr = db.TransactionManager.StartTransaction())
{
var solid3d = tr.GetObject(per.ObjectId, OpenMode.ForWrite) as Solid3d;
if (solid3d == null)
{
ed.WriteMessage("\nobject not Solid3d.");
return;
}
try
{
using (Brep brep = new Brep(solid3d))
{
int faceIndex = 0;
foreach (var face in brep.Faces)
{
try
{
var colorToApply = (faceIndex % 2 == 0) ? _color1 : _color2;
ApplyColorToFace(face, colorToApply);
faceIndex++;
}
catch (System.Exception ex)
{
ed.WriteMessage($"\nERROR: {ex.Message}");
}
}
}
ed.WriteMessage("\nSucceed .");
}
catch (System.Exception ex)
{
ed.WriteMessage($"\nError in Solid3d: {ex.Message}");
}
tr.Commit();
}
}
}
private void ApplyColorToFace(Autodesk.AutoCAD.BoundaryRepresentation.Face face, Autodesk.AutoCAD.Colors.Color color)
{
if (face != null)
{
try
{
var subEntityPath = face.SubentityPath;
var entityId = subEntityPath.GetObjectIds().FirstOrDefault();
if (entityId.IsValid)
{
using (Transaction tr = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction())
{
Solid3d solid = tr.GetObject(entityId, OpenMode.ForWrite) as Solid3d;
ObjectId[] ids = new ObjectId[] { entityId };
FullSubentityPath path = new FullSubentityPath(ids, new SubentityId(SubentityType.Null, IntPtr.Zero));
List SubentIds = new List();
using(Autodesk.AutoCAD.BoundaryRepresentation.Brep brep = new Autodesk.AutoCAD.BoundaryRepresentation.Brep(path))
{
foreach (Autodesk.AutoCAD.BoundaryRepresentation.Edge edge in brep.Edges)
{
SubentIds.Add(edge.SubentityPath.SubentId);
}
}
foreach (SubentityId subentId in SubentIds)
{
var entity = tr.GetObject(entityId, OpenMode.ForWrite) as Entity;
if (entity != null)
{
entity.Color = color;
}
tr.Commit();
}
}
}
}
catch (System.Exception ex)
{
Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage($"\nError in face: {ex.Message}");
}
}
}
public class RelayCommand : ICommand
{
private readonly Action _execute;
private readonly Predicate _canExecute;
public RelayCommand(Action execute, Predicate canExecute = null)
{
_execute = execute ?? throw new ArgumentNullException(nameof(execute));
_canExecute = canExecute;
}
public bool CanExecute(object parameter) => _canExecute?.Invoke(parameter) ?? true;
public void Execute(object parameter) => _execute(parameter);
public event EventHandler CanExecuteChanged
{
add => CommandManager.RequerySuggested += value;
remove => CommandManager.RequerySuggested -= value;
}
}
}
}
Ich versuche, den Code anders zu schreiben und den Code zu debuggen, aber immer noch derselbe
1736760897
Guest
Wenn ich meinen Code ausführe, wird immer diese Zeile „Exception of type Autodesk.AutoCAD.BoundaryRepresentation.Exception was throwd“ angezeigt. Ich verwende .netFramework 4.8 in Visual Studio 2022. Hat jemand den gleichen Fehler oder weiß er, wie man ihn behebt? es hier ist der Code [code]using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.BoundaryRepresentation; using Autodesk.AutoCAD.Colors; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Windows.Input; namespace _3Dinterface.ViewModels { public class MainWindowViewModel : INotifyPropertyChanged { private string _selectedColor1; private string _selectedColor2; private Autodesk.AutoCAD.Colors.Color _color1; private Autodesk.AutoCAD.Colors.Color _color2; public string SelectedColor1 { get => _selectedColor1; set { _selectedColor1 = value; OnPropertyChanged(nameof(SelectedColor1)); } } public string SelectedColor2 { get => _selectedColor2; set { _selectedColor2 = value; OnPropertyChanged(nameof(SelectedColor2)); } } public ICommand SelectColor1Command { get; } public ICommand SelectColor2Command { get; } public ICommand ApplyColorsCommand { get; } public MainWindowViewModel() { SelectColor1Command = new RelayCommand(_ => SelectColor(1)); SelectColor2Command = new RelayCommand(_ => SelectColor(2)); ApplyColorsCommand = new RelayCommand(_ => ApplyColorsTo3DObject()); } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private void SelectColor(int colorNumber) { var colorDialog = new Autodesk.AutoCAD.Windows.ColorDialog(); if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (colorNumber == 1) { _color1 = colorDialog.Color; SelectedColor1 = $"First 1: {_color1.ColorIndex}"; } else { _color2 = colorDialog.Color; SelectedColor2 = $"Second 2: {_color2.ColorIndex}"; } } } private void ApplyColorsTo3DObject() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; if (_color1 == null || _color2 == null) { ed.WriteMessage("\nPlease chose 2 color."); return; } using (var lck = doc.LockDocument()) { PromptEntityOptions peo = new PromptEntityOptions("\nSelect 3D object:"); peo.SetRejectMessage("\nNot Solid3d."); peo.AddAllowedClass(typeof(Solid3d), true); var per = ed.GetEntity(peo); if (per.Status != PromptStatus.OK) { ed.WriteMessage("\nUnfound object."); return; } using (Transaction tr = db.TransactionManager.StartTransaction()) { var solid3d = tr.GetObject(per.ObjectId, OpenMode.ForWrite) as Solid3d; if (solid3d == null) { ed.WriteMessage("\nobject not Solid3d."); return; } try { using (Brep brep = new Brep(solid3d)) { int faceIndex = 0; foreach (var face in brep.Faces) { try { var colorToApply = (faceIndex % 2 == 0) ? _color1 : _color2; ApplyColorToFace(face, colorToApply); faceIndex++; } catch (System.Exception ex) { ed.WriteMessage($"\nERROR: {ex.Message}"); } } } ed.WriteMessage("\nSucceed ."); } catch (System.Exception ex) { ed.WriteMessage($"\nError in Solid3d: {ex.Message}"); } tr.Commit(); } } } private void ApplyColorToFace(Autodesk.AutoCAD.BoundaryRepresentation.Face face, Autodesk.AutoCAD.Colors.Color color) { if (face != null) { try { var subEntityPath = face.SubentityPath; var entityId = subEntityPath.GetObjectIds().FirstOrDefault(); if (entityId.IsValid) { using (Transaction tr = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction()) { Solid3d solid = tr.GetObject(entityId, OpenMode.ForWrite) as Solid3d; ObjectId[] ids = new ObjectId[] { entityId }; FullSubentityPath path = new FullSubentityPath(ids, new SubentityId(SubentityType.Null, IntPtr.Zero)); List SubentIds = new List(); using(Autodesk.AutoCAD.BoundaryRepresentation.Brep brep = new Autodesk.AutoCAD.BoundaryRepresentation.Brep(path)) { foreach (Autodesk.AutoCAD.BoundaryRepresentation.Edge edge in brep.Edges) { SubentIds.Add(edge.SubentityPath.SubentId); } } foreach (SubentityId subentId in SubentIds) { var entity = tr.GetObject(entityId, OpenMode.ForWrite) as Entity; if (entity != null) { entity.Color = color; } tr.Commit(); } } } } catch (System.Exception ex) { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage($"\nError in face: {ex.Message}"); } } } public class RelayCommand : ICommand { private readonly Action _execute; private readonly Predicate _canExecute; public RelayCommand(Action execute, Predicate canExecute = null) { _execute = execute ?? throw new ArgumentNullException(nameof(execute)); _canExecute = canExecute; } public bool CanExecute(object parameter) => _canExecute?.Invoke(parameter) ?? true; public void Execute(object parameter) => _execute(parameter); public event EventHandler CanExecuteChanged { add => CommandManager.RequerySuggested += value; remove => CommandManager.RequerySuggested -= value; } } } } [/code] Ich versuche, den Code anders zu schreiben und den Code zu debuggen, aber immer noch derselbe
0 Replies
14 Views
Last post by Guest
13 Jan 2025, 17:10
So beheben Sie den Fehler von Migrationen in ASP.NET CORE
by
Anonymous »
06 Feb 2025, 07:50 » in
C#
Ich habe gerade einen ASP.NET -Absturzkurs gestartet und habe ein Problem. In diesem Kurs verwendet der Lehrer die Migration für SQL -Datenbanken und tippte diesen Befehl in der Paket -Manager...
0 Replies
15 Views
Last post by Anonymous
06 Feb 2025, 07:50
0 Replies
18 Views
Last post by Guest
27 Dec 2024, 08:57
0 Replies
14 Views
Last post by Guest
28 Dec 2024, 17:27
0 Replies
8 Views
Last post by Anonymous
20 Dec 2024, 18:46