Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  acedCmd aus accore.dll funktioniert beim neuen ACAD 2015 nicht!

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  acedCmd aus accore.dll funktioniert beim neuen ACAD 2015 nicht! (3544 mal gelesen)
Wene71
Mitglied



Sehen Sie sich das Profil von Wene71 an!   Senden Sie eine Private Message an Wene71  Schreiben Sie einen Gästebucheintrag für Wene71

Beiträge: 28
Registriert: 25.04.2010

Win8.1 Pro x64, ACAD 2015,
VS 2013

erstellt am: 29. Mrz. 2014 22:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

bis ACAD2014 habe ich per VB.NET Commands über die Funktion "acedCmd" aus
der "accore.dll" (unmanaged) an ACAD gesendet.

Etwa so...

Code:
Public Class Test

    <CommandMethod("Test")> _
    Public Sub Test()
        ExecuteCommand("-line", "0,0", "0,20", "")
    End Sub

End Class


Public Class clsAcadCommand
    Private Declare Function acedCmd Lib "accore.dll" (ByVal vlist As IntPtr) As Integer

    Public Shared Sub ExecuteCommand(ByVal ParamArray args() As Object)
        Dim rb As ResultBuffer = New ResultBuffer
        For Each val As Object In args
            If (val Is Nothing) Then
                rb.Add(New TypedValue(CType(LispDataType.Text, Integer), ""))
            ElseIf (TypeOf val Is String) Then
                rb.Add(New TypedValue(CType(LispDataType.Text, Integer), val))
            ElseIf (TypeOf val Is Point2d) Then
                rb.Add(New TypedValue(CType(LispDataType.Point2d, Integer), val))
            ElseIf (TypeOf val Is Point3d) Then
                rb.Add(New TypedValue(CType(LispDataType.Point3d, Integer), val))
            ElseIf (TypeOf val Is ObjectId) Then
                rb.Add(New TypedValue(CType(LispDataType.ObjectId, Integer), val))
            ElseIf (TypeOf val Is SelectionSet) Then
                rb.Add(New TypedValue(CType(LispDataType.SelectionSet, Integer), val))
            ElseIf (TypeOf val Is Double) Then
                rb.Add(New TypedValue(CType(LispDataType.Double, Integer), val))
            ElseIf (TypeOf val Is Short) Then
                rb.Add(New TypedValue(CType(LispDataType.Int16, Integer), val))
            ElseIf (TypeOf val Is Integer) Then
                rb.Add(New TypedValue(CType(LispDataType.Int32, Integer), val))
            ElseIf (TypeOf val Is TypedValue) Then
                rb.Add(val)
            End If
        Next
        Try
            Dim iCmdEcho As Integer = Application.GetSystemVariable("CmdEcho")
            Application.SetSystemVariable("CmdEcho", 0)
            acedCmd(rb.UnmanagedObject)
            Application.SetSystemVariable("CmdEcho", iCmdEcho)
        Catch ex As Exception
            Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
            ed.WriteMessage(ex.Message)
        Finally
            rb.Dispose()
        End Try
    End Sub

End Class


...dies hat bisher gut funktioniert.
Beim neuen AutoCAD 2015 bleibt die Funktionsausführung ohne Wirkung.

Weiß jemand den Grund woran dies liegen könnte?
Im I-Net hab ich noch nichts über das Problem gefunden.

Vielen Dank im Voraus,
Gruß Werner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 30. Mrz. 2014 13:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wene71 10 Unities + Antwort hilfreich

Hallo Werner,

ohne jetzt nach der Ursache zu forschen, weshalb der Weg nicht mehr geht. Nimm doch einfach das Document.SendStringToExecute

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Wene71
Mitglied



Sehen Sie sich das Profil von Wene71 an!   Senden Sie eine Private Message an Wene71  Schreiben Sie einen Gästebucheintrag für Wene71

Beiträge: 28
Registriert: 25.04.2010

Win8.1 Pro x64, ACAD 2015,
VS 2013

erstellt am: 30. Mrz. 2014 21:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

danke für die rasche Antwort.
Bei meiner Variante konnte ich der Befehlsfolge SelectionSets oder ObjectID's übergeben.

Z.B. so
ExecuteCommand("_.PEDIT", ent.ObjectId, "_JOIN", sset, "", "")

Bei Document.SendStringToExecute habe ich das nie hinbekommen.
Würde dies dort auch funktionieren?

Gruß,
Werner


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 31. Mrz. 2014 07:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wene71 10 Unities + Antwort hilfreich

Hallo Werner,

abgesehen davon, dass du die Join-Methode eines Curve-Objects für dein Beispiel nehmen kannst, ich helfe mir in solchen Fällen so, dass ich entweder eine Lisp-Funktion, die den Auswahlsatz bildet in die Befehlszeile 'schicke' oder den Command-Aufruf mit einzelnen Elementnamen 'füttere'
xxx.SendStringToExecute("_.PEDIT " ..)

foreach(ObjectId oid in sset)
{
  xxx.SendStringToExecute("(Handent \"" + _oid.Handle + "\") " ..)
}
xxx.SendStringToExecute( ...)

So in der Art .. das ist jetzt nur so runtergetippt, um das Prinzip aufzuzeigen.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Wene71
Mitglied



Sehen Sie sich das Profil von Wene71 an!   Senden Sie eine Private Message an Wene71  Schreiben Sie einen Gästebucheintrag für Wene71

Beiträge: 28
Registriert: 25.04.2010

Win8.1 Pro x64, ACAD 2015,
VS 2013

erstellt am: 31. Mrz. 2014 20:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Holger,

Problem gelößt! javascript:InsertSMI(' %20');

Die ARX-Funktion acedCmd heißt jetzt acedCmdS

Die Deklaration lautet so
Private Declare Function acedCmdS Lib "accore.dll" (ByVal vlist As IntPtr) As Integer

und was will man mehr es funkt wieder.
Warum dies so ist, ist im AutoCAD 2015 SDK gut beschrieben.

Aber trotzdem vielen Dank für Deine Anregungen, das mit dem
"Lisp-füttern" war ein guter Ansatz.

Bei meiner Command-Methode ist der Vorteil, das die Befehle synchron zum Programm ablaufen und sogar Pausen für Benutzereingaben möglich sind. Ganz so wie beim Lisp-Command.

Für alle die es brauchen wollen, hier nochmal die Deklarationen...

Vor ACAD 2013
Private Declare Function acedCmd Lib "acad.exe" (ByVal vlist As IntPtr) As Integer

Ab ACAD 2013
Private Declare Function acedCmd Lib "accore.dll" (ByVal vlist As IntPtr) As Integer

Ab ACAD 2015
Private Declare Function acedCmdS Lib "accore.dll" (ByVal vlist As IntPtr) As Integer

Viele Grüße,
Werner

PS: Dein Hinweis

Zitat:
abgesehen davon, dass du die Join-Methode eines Curve-Objects für dein Beispiel nehmen kannst
hab ich nicht ganz verstanden.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 01. Apr. 2014 08:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wene71 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Wene71:
...
PS: Dein Hinweis  hab ich nicht ganz verstanden.

Linien, Polylinien, Bögen, ... erben alle von einem Curve-Object und Entity-Object. Auf diese kann man auch die folgenden Methoden, die das Entity-Object mitbringt, anwenden:

Code:

public Autodesk.AutoCAD.Geometry.IntegerCollection JoinEntities(Autodesk.AutoCAD.DatabaseServices.Entity[] otherEntities)
    Member von Autodesk.AutoCAD.DatabaseServices.Entity

public void JoinEntity(Autodesk.AutoCAD.DatabaseServices.Entity secondaryEntity)
    Member von Autodesk.AutoCAD.DatabaseServices.Entity


Diese Methoden sind sozusagen das command: _.PEDIT | _Join

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


Sehen Sie sich das Profil von Ingenieur Studio HOLLAUS an!   Senden Sie eine Private Message an Ingenieur Studio HOLLAUS  Schreiben Sie einen Gästebucheintrag für Ingenieur Studio HOLLAUS

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 01. Apr. 2014 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wene71 10 Unities + Antwort hilfreich

Zitat:
Beim neuen AutoCAD 2015 bleibt die Funktionsausführung ohne Wirkung.
Weiß jemand den Grund woran dies liegen könnte?
Zitat:
Die ARX-Funktion acedCmd heißt jetzt acedCmdS
...oder FIBERWORLD aktivieren (Start von AutoCAD, NEXTFIBERWORLD ==> einschalten, AutoCAD neu starten)

------------------


www.cars4fun.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

oscarr
Mitglied
CAD-Manager


Sehen Sie sich das Profil von oscarr an!   Senden Sie eine Private Message an oscarr  Schreiben Sie einen Gästebucheintrag für oscarr

Beiträge: 198
Registriert: 02.10.2007

ACA 2012 - English Win 7/x64

erstellt am: 01. Apr. 2014 18:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wene71 10 Unities + Antwort hilfreich

Naja, Autodesk hat sich viel Mühe gegeben Fiber loszuwerden.

Siehe passend zum Thema:
AutoCAD 2015: calling commands

und:

AutoCAD 2015 for developers

Zitat:

The next major architectural change inside AutoCAD is the complete removal of Microsoft's long-deprecated fiber technology. The NEXTFIBERWORLD and FIBERWORLD system variables no longer have any influence over the use of fibers in AutoCAD: with any luck we’ve now addressed all the issues related to this.

LG
Holger

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


Sehen Sie sich das Profil von Ingenieur Studio HOLLAUS an!   Senden Sie eine Private Message an Ingenieur Studio HOLLAUS  Schreiben Sie einen Gästebucheintrag für Ingenieur Studio HOLLAUS

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 01. Apr. 2014 19:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wene71 10 Unities + Antwort hilfreich

danke für den Link, schon seit gestern Veröffentlicht und ich hab's noch nicht gefunden  
Nach dem Link zu Kean Walmsley's Blog könnte man sich den Aufruf in die accore.dll jetzt eigentlich sparen durch
Editor.Command bzw.
Editor.CommandAsync
..wird wohl schnell probiert werden.

------------------

[Diese Nachricht wurde von Ingenieur Studio HOLLAUS am 01. Apr. 2014 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Wene71
Mitglied



Sehen Sie sich das Profil von Wene71 an!   Senden Sie eine Private Message an Wene71  Schreiben Sie einen Gästebucheintrag für Wene71

Beiträge: 28
Registriert: 25.04.2010

Win8.1 Pro x64, ACAD 2015,
VS 2013

erstellt am: 01. Apr. 2014 21:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

danke für Eure Infos und die Links.

Habe gerade ed.command getestet! Funktioniert 1:1 wie
der alte ARX-Aufruf. Super Sache, sogar einen PauseToken fürs
warten auf Benutzereingaben gibt's jetzt.
Und man muss nichts erst in Lisp-Datentypen umwandeln.

@Brischke: Hab jetzt verstanden was Du mit Curve-Object gemeint hast. Danke!

Grüße,
Werner

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Karlovac
Mitglied



Sehen Sie sich das Profil von Karlovac an!   Senden Sie eine Private Message an Karlovac  Schreiben Sie einen Gästebucheintrag für Karlovac

Beiträge: 54
Registriert: 12.09.2013

AutoCAD Mechanical 2012-2015
Windows 7 Enterprise X64
Visual Studio 2010/2013
Intel Xeon W3680
Nvidia Quadro 2000
16 GB RAM

erstellt am: 22. Mai. 2014 14:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wene71 10 Unities + Antwort hilfreich

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz