| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Blöcke an Linie verankern (1340 mal gelesen)
|
Boehri Mitglied
Beiträge: 80 Registriert: 07.04.2008
|
erstellt am: 27. Jan. 2011 11:03 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, gibt es die Möglichkeit mit vb.net in Autocad Blöcke auf Linien oder Polylinien zu verankern? Wenn ich die Linie verschiebe soll sich auch der verankerte Block mit verschieben. Gruss Boehri Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Boehri Mitglied
Beiträge: 80 Registriert: 07.04.2008
|
erstellt am: 27. Jan. 2011 13:12 <-- editieren / zitieren --> Unities abgeben:
Hallo, kleiner Nachtrag. Ich habe auf [URL=http://through-the-interface.typepad.com/through_the_interface/2008/08/anchoring-autoc.html][/URL] was gefunden. Ich habe folgenden Codeausschnitt
Code: void doc_CommandWillStart( object sender, CommandEventArgs e ) { if (_commandNames.Contains(e.GlobalCommandName)) { _ids.Clear(); _pos.Clear(); _doc.Database.ObjectOpenedForModify += new ObjectEventHandler(_db_ObjectOpenedForModify); _doc.CommandCancelled += new CommandEventHandler(_doc_CommandEnded); _doc.CommandEnded += new CommandEventHandler(_doc_CommandEnded); _doc.CommandFailed += new CommandEventHandler(_doc_CommandEnded); } }
in VB übesetzt Code:
Private Sub doc_CommandWillStart(ByVal sender As Object, ByVal e As CommandEventArgs) If _commandNames.Contains(e.GlobalCommandName) Then _ids.Clear()
_pos.Clear() AddHandler _doc.Database.ObjectOpenedForModify, AddressOf _db_ObjectOpenedForModify
AddHandler _doc.CommandCancelled, AddressOf _doc_CommandEnded
AddHandler _doc.CommandEnded, AddressOf _doc_CommandEnded
AddHandler _doc.CommandFailed, AddressOf _doc_CommandEnded End If End Sub
In C# funktioniert das Ganze einwandfrei. In VB allerdings nicht. Wenn ich die Linie oder den Kreis verschiebe stützt Autocad ab und folgender Fehler tritt auf Zitat: Eine verwaltete Ausführung wird innerhalb der Sperre für den OS-Loader versucht. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.
Es muss mit meiner Übersetzung des Codes zusammenhängen, da ab hier das Programm abgebrochen wird. Kann mir jemand sagen was hier falsch ist? Vielen Dank!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
oscarr Mitglied CAD-Manager
Beiträge: 198 Registriert: 02.10.2007 ACA 2012 - English Win 7/x64
|
erstellt am: 27. Jan. 2011 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für Boehri
Hallo, ich habe den c# beitrag ebenfals übersetzt. Der Fehler in der automatischen Übersetzung liegt bei mir jedoch nicht in Deinen zitierten Bereich sondern in der Sub rollbackLocations() Dort muss es bei der Deklerarion von a nicht:
Code: Dim a As Double = _pos(System.Math.Max(System.Threading.Interlocked.Increment(i),i - 1))
(wat fürn quatsch soll das eigentlich sein???) oder auch nicht:
Code: Dim a As Double = _pos(i++)
(Das ist noch nicht mal VB.NET)sondern meiner meinung nach:
Code: Dim a As Double = _pos(i) i += 1
den im c# hiess es ja:
Code: double a = _pos[i++];
wobei i++ mit i +=1 übersetzt wird jedoch zuerst i ausgelesen und dann incrementiert wird. glaube ich zumindestens LG Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Boehri Mitglied
Beiträge: 80 Registriert: 07.04.2008
|
erstellt am: 01. Feb. 2011 07:11 <-- editieren / zitieren --> Unities abgeben:
|