| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: benutzerdefinierte Befehle mit Parametern aufrufen (2293 mal gelesen)
|
AndreasM2000 Mitglied CAD-Projektleiter, Zeichner, Programmierer
Beiträge: 21 Registriert: 24.11.2013 https://autocaddotnetsamples.wordpress.com/
|
erstellt am: 17. Mai. 2015 09:15 <-- editieren / zitieren --> Unities abgeben:
Hi, weiß jemand, ob es möglich ist, mit .Net/C# einen benutzerdefinierten Befehl zu programmieren, den man beim Aufruf in AutoCAD auch noch Parameter übergeben kann. Ich habe solche Beispiele im Internet nicht gefunden. Man kann immer nur den benutzerdefinierten Befehl ohne Parameter aufrufen und nur innerhalb der Abarbeitung auf Nutzereingaben reagieren. Ich möchte aber verschiedene Werte gleich beim Aufruf mitgeben. Gruss Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingenieur Studio HOLLAUS Mitglied CAD / CAFM / GIS Beratung-Programmierung-Schulung
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: 17. Mai. 2015 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasM2000
Wie/von wo aus möchtest Du einen solchen Befehl aufrufen? Einen Aufruf mit echten Parametern gibt es eigentlich nur in Programmiersprachen ... und Du kannst ja in C# eine function bauen, die Parameter entgegennimmt (damit programmintern Parameter=JA) und dann einen AutoCAD Befehl erstellen, der Werte vom Benutzer abfragt, und diese obige Funktion dann mit den eingegebenen Werten als Parameter übergibt. In AutoCAD gibt es bei Befehlen keine Parameter, nur Optionen, die nach dem Start von einem Befehl (situationsabhängig) abgefragt werden, das kannst Du aber auch mit diversen Editor.getXXXX-Funktionen. Sollte ich was falsch verstehen, dann nenne uns ein Beispiel, das Du umsetzen möchtest; beschreibe auch, wie der Anwender einen Befehl mit Parametern eingeben sollte. Noch eine Alternative wäre LISP, hier kannst Du einen Programmaufruf (nicht wirklich AutoCAD-Befehl) aus der Befehlszeile heraus starten, dem kannst Du Parameter übergeben. Und last-but-not-least, mit C# kannst Du auch LISP-functions erzeugen, vielleicht wäre das etwas näher Deinen Wünschen? ------------------
www.cars4fun.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 21. Mai. 2015 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasM2000
Zitat: Original erstellt von AndreasM2000: Hi, weiß jemand, ob es möglich ist, mit .Net/C# einen benutzerdefinierten Befehl zu programmieren, den man beim Aufruf in AutoCAD auch noch Parameter übergeben kann. Ich habe solche Beispiele im Internet nicht gefunden. Man kann immer nur den benutzerdefinierten Befehl ohne Parameter aufrufen und nur innerhalb der Abarbeitung auf Nutzereingaben reagieren. Ich möchte aber verschiedene Werte gleich beim Aufruf mitgeben. Gruss Andreas
Dass das in AutoCAD nicht möglich ist, ergibt sich aus der Funktionsweise von AutoCAD selbst. In der Befehlseingabe wird ein Leerzeichen grundsätzlich als <RETURN> abgearbeitet. Damit wird die Ausführung eines Befehls bzw einer Funktion also schon gestartet, bevor Du Parameter übergeben könntest. Oder anders betrachtet: Der AutoCAD Befehlsprompt ist immer noch die Eingabezeile eines Lisp Interpreters. Der zeichnet sich gegenüber einem normalen Lisp Interpreter nur dadurch aus, dass er auch Eingaben, die nicht eindeutig als Lisp Funktionen erkennbar sind, als AutoCAD Befehle interpretiert. AutoCAD Befehle sind Funktionen, die ohne Parameter aufgerufen werden, und die eventuell nötige Parameterwerte während des Programmablaufs interaktiv als Nutzereingabe anfordern. Dein Ziel ist also prinzipiell nicht erreichbar. Du kannst aber natürlich Lisp Funktionen aufrufen, die Du nicht nur mit Lisp, sondern mit allen möglichen Programmiersprachen (also auch C#) definieren kannst, und die, wenn sie nicht in Lisp definiert sind, auch direkt auf das .Net Framework zugreifen können. Dabei kannst Du Deinen Funktionen beliebige Parameter übergeben.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasM2000 Mitglied CAD-Projektleiter, Zeichner, Programmierer
Beiträge: 21 Registriert: 24.11.2013 https://autocaddotnetsamples.wordpress.com/
|
erstellt am: 21. Mai. 2015 16:17 <-- editieren / zitieren --> Unities abgeben:
Hello, vielen Dank für die Antworten. Ich habe inzwischen noch einen Hinweis von einem Kollegen bekommen. Man kann die z.B. in C# programmierten Funktionen inkl. der Parameter als dll-Datei im VBA-Bereich unter Verweise der Programmierumgebung bekannt machen, dann eben aufrufen und weiterverarbeiten mit VBA-Möglichkeiten. Das muss ich jetzt nur noch mal ausprobieren. Sollte aber klappen. Leider habe ich aber über diesen Weg auch nur die paar Steuerelemente von VBA zur Verfügung. Lassen sich die (vielen) WinForms-Steuerelemente, die ich in bei Visual Studio sehe, wenn ich Windows-Applikationen z.B. entwickele, nicht doch auch irgendwie nutzen? Gruß Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 21. Mai. 2015 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasM2000
... warum der Schwenk auf VBA, wenn doch bereits irgendetwas in c#.Net vorliegt? Dann bleibt doch bei c#.Net Da gibt's dann nicht nur WinForms sondern alle Möglichkeiten XAML/WPF. Ich habe das Gefühl, dass du etwas mit viel Aufwand realisieren möchtest, was vom Konzept her nicht richtig durchdacht ist. Dein letzter Post passt nicht zu der ursprünglichen Frage. Vielleicht beschreibst du mal, was du konkret vor hast. 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 |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 22. Mai. 2015 04:53 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasM2000
Zitat: Original erstellt von AndreasM2000: ...Leider habe ich aber über diesen Weg auch nur die paar Steuerelemente von VBA zur Verfügung. Lassen sich die (vielen) WinForms-Steuerelemente, die ich in bei Visual Studio sehe, wenn ich Windows-Applikationen z.B. entwickele, nicht doch auch irgendwie nutzen?
Grundsätzlich bleibe ich zwar bei meiner Meinung, dass es schon sehr triftige Gründe geben muss, weshalb man .Net-Dll'S in VBA einbindet, dennoch der Hinweis: Wenn du im .Net die Funktionen baust, die du von VBA aus aufrufst, dann können diese Funktionen natürlich auch Steuerelemente/Dialoge aus der kompletten .Net-Welt beinhalten und anzeigen. Ich habe mir über diesen Weg ein paar nette Dialoge gebastelt, die ich von Lisp auf aufrufe -- da ist die Dialogerstellung noch sehr viel beschränkter als in VBA. 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 |
AndreasM2000 Mitglied CAD-Projektleiter, Zeichner, Programmierer
Beiträge: 21 Registriert: 24.11.2013 https://autocaddotnetsamples.wordpress.com/
|
erstellt am: 24. Mai. 2015 16:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, Du hast natürlich Recht. Ich habe mich hier ein wenig verrannt. Sowohl der Versuch Parameter bei der Eingabe von AutoCAD-Befehlen mitzugeben als auch C#.net-Funktionalitäten mit vba-Steuerelementen zu verbinden, können nicht der richtige Weg sein, wenn man die .net-Funktionen mit der Windows-Forms-Elementen verbinden kann, deren Ergebnis dann mittels netload im AutoCAD aktiviert werden kann. Und das geht...ich hatte das nicht sehen, da beim Starten eines neuen Visual Studio Projektes mit Hilfe der AutoCAD-Plagin-Vorlage erstmal keine Steuerelemente zu sehen sind. Sie werden aber beim einfachen Hinzufügen einer Forms zugänglich. Dann habe ich auch das was ich wollte. Die kompletten Möglichkeiten einer (modernen) Programmiersprache im Zusammenspiel mit AutoCAD. Dann ist auch die Parameterübergabe zwischen dem User mittels Formularelementen und der erweiterten AutoCAD-Funktionalität in gewohnter Weise machbar. P.S. ich hatte das ganze Thema schon vor mehr als einem Jahr für mich gelöst, aber dann wieder vergessen, wie es geht. Ich mache es halt nicht jeden Tag.... Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|