Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Befehl von Werkzeugpalette

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:  Befehl von Werkzeugpalette (710 mal gelesen)
Boehri
Mitglied



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

Beiträge: 80
Registriert: 07.04.2008

erstellt am: 17. Jan. 2011 08:23    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,

ich möchte folgendes realisieren.
Über eine Palette einen dynamischen Block einfügen ( Heizungsarmatur ).
Den Einfüge-Code kriege ich schon hin.
Meine Frage:
wie kann ich den Code von der Werkzeugpalette aufrufen und als Vaiable einen Blocknamen Übergeben.

mit Lisp geht das doch über

C^C(progn(setq  ..... 

oder so ähnlich.

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


Ex-Mitglied

erstellt am: 17. Jan. 2011 08:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> wie kann ich den Code von der Werkzeugpalette aufrufen und als Vaiable einen Blocknamen Übergeben.

Du rufst Deinen (dotNET-)Befehl genauso auf wie den _INSERT-Befehl und gibst den Blocknamen genauso an, wie Du einen Parameter in AutoCAD angibst.
Schreibst Du für AutoCAD im Menü z.B.
^C^C_INSERT;SchraubenBlock;
  ....oder auch....
^C^C(command "_INSERT" "SchraubenBlock")

Dann kannst Du zum Aufruf Deiner Funktion (ich nehme den Namen myINSERT mal an):
^C^CmyINSERT;SchraubenBlock;

Innerhalb Deines Codes musst Du halt 'nur' einen String abfragen (für den Blocknamen):

Code:
Dim tAcadDoc As Autodesk.AutoCAD.ApplicationServices.Document = Nothing
Try
  tAcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
  Dim tInputRes As EditorInput.PromptResult = tAcadDoc.Editor.GetString("Blockname: ")
  If tInputRes.Status = EditorInput.PromptStatus.OK AndAlso (tInputRes.StringResult.Length > 0) Then
      Dim tBlName As String = tInputRes.StringResult
  Else
      'Fehlerausgabe, wenn notwendig
  End If
[.....]


Alternativ kannst Du auch LISP-Funktionen in dotNET schreiben, ist ein wenig anders strukturiert, da kannst Du Parameter direkt mitgeben (und in Deiner LISP-Funktionserweiterung im Header deklarieren).
Braucht nur ein wenig mehr Code als ein Befehlsaufruf, ginge aber auch.

- alfred -

------------------
www.hollaus.at

Boehri
Mitglied



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

Beiträge: 80
Registriert: 07.04.2008

erstellt am: 17. Jan. 2011 10:10    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 Alfred,
vielen Dank für die schnelle Antwort und den Tip mit der Lispfuntion.

Meinst du das so?

Code:

    <LispFunction("IB")> _
    Public Sub Insert_Block(ByVal rbArgs As ResultBuffer)
        Dim blockname As String = ""
        If Not rbArgs = Nothing Then

            For Each rb As TypedValue In rbArgs
                If (rb.TypeCode = Autodesk.AutoCAD.Runtime.LispDataType.Text) Then
                    blockname = rb.Value.ToString()
                End If
            Next
        End If


es funktioniert zumindest :-)

Nochmals vielen Dank!

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



Geschäftsführer (m/w/d) Präzisionsfertigung

Das Unternehmen ist ein etablierter Präzisionsfertiger für den Maschinenbau mit Sitz in Bayern. Das Unternehmen beschäftigt rund 20 Mitarbeiter.

Die Qualität der hergestellten Produkte, der Ruf am Markt und der Maschinenpark bieten großes Wachstumspotenzial.

Oberstes Ziel des Unternehmens ist die langfristige positive Wertentwicklung. Dies soll vor allem erreicht werden durch eine ...

Anzeige ansehenVorstand, Geschäftsführung

Ex-Mitglied

erstellt am: 17. Jan. 2011 10:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Meinst du das so?
>> [...]
>> es funktioniert zumindest :-)

Na wenn's funktioniert, dann ist dem ja nichts mehr hinzuzufügen. 

- alfred -

------------------
www.hollaus.at

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