Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Command Linie zeichnen ausführen

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:  Command Linie zeichnen ausführen (1125 / mal gelesen)
DerBrain87
Mitglied
Mathematiker


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

Beiträge: 84
Registriert: 29.04.2015

Inventor 2021

erstellt am: 08. Feb. 2017 09:29    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 zusammen,
so langsam bekomme ich durch meine erhöhte Forumaktivität ein etwas schlechtes Gewissen...
Mein heutiges Problem ist, ich hätte gern über VBA (oder später vb.net), dass Inventor sich so verhält, als ob ich auf den Knopf 'Linie zeichnen' gedrückt hätte d.h. er 2 punkte erfragt, welche er dann durch eine Linie (die er mir, wenn ich das ganze per Programmcode ausführe, natürlich zurück geben soll) verbindet.
Ich vermute, dass meine gesuchte Funktion sich irgendwo im CommandManger der Inventor-Objekts ähnlich der Pick-Methode versteckt. Leider kann ich keine Methode finden, deren Namen darauf hindeutet, dass dieses Command gestartet wird.
Mir ist durchaus bekannt, wie man mittels SketchLines Linien zeichnet deren Punkte man kennt, doch ich bezweifel, dass mir das hier etwas hilft, da der Benutzer bei 'Linie zeichnen' bevor die eigentliche Linie erstellt 2 transiente Punkte erzeugt/angibt...

gruß DerBrain87

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

DerBrain87
Mitglied
Mathematiker


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

Beiträge: 84
Registriert: 29.04.2015

Inventor 2021

erstellt am: 15. Feb. 2017 09: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

Hallo,
ich bin mittlerweile einen kleinen Schritt weiter gekommen.
Über:
Code:
Msgbox ThisApplication.CommandManager.ActiveCommand

konnte ich ermitteln, dass das gesuchte Command (nicht wirklich überraschend) 'SketchLineCmd' heißt. Versuche ich es jedoch mit:
Code:
ThisApplication.CommandManager.StartExecutable("SketchLineCmd","")

zu Starten kommt ein Laufzeitfehler, dass StartExecutable fehlgeschlagen sei.
Kann mir jemand weiter helfen?

Das Ziel soll sein, dass der Benutzer des Programms eine Linie in Inventor zeichnet, welche dann vom Programm eine besondere Farbe bekommen soll. Daher kann ich die Linie nicht aus VBA heraus zeichnen. Im worst-case müsste ich den Benutzer bitten die Linie zu zeichnen und dann via pick in mein Programm holen. Dies bekomme ich hin, über das SketchLineCmd wäre es jedoch bei weitem eleganter.

Gruß DerBrain87

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

Ticky72
Mitglied



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

Beiträge: 35
Registriert: 17.02.2016

Inventor 2019
Win7 64Bit

erstellt am: 15. Feb. 2017 12:20    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 DerBrain87 10 Unities + Antwort hilfreich

Hallo,

in der Inventor API Hilfe findest du unter
"Print list of all Inventor Commands API Sample"
folgenden Code:

Code:

Sub PrintCommandNames()
    Dim oControlDefs As ControlDefinitions
    Set oControlDefs = ThisApplication.CommandManager.ControlDefinitions

    Dim oControlDef As ControlDefinition
   
    Open "C:\temp\CommandNames.txt" For Output As #1

    Print #1, Tab(10); "Command Name"; Tab(75); "Description"; vbNewLine
   
    For Each oControlDef In oControlDefs

        Print #1, oControlDef.InternalName; Tab(55); oControlDef.DescriptionText
       
    Next
    Close #1
End Sub


In der erzeugten Datei kannst du relativ schnell das benötigte Command finden.


Zu deiner ursprünglichen Frage könnte man folgendes Ausprobieren:

Code:

Sub MeineLinie()
    Dim oPartDoc As PartDocument
    Set oPartDoc = ThisApplication.ActiveDocument
    Dim oCompDef As PartComponentDefinition
    Set oCompDef = oPartDoc.ComponentDefinition
    Dim oSketch As PlanarSketch
    Set oSketch = oCompDef.Sketches.Add(oCompDef.WorkPlanes(1))
    oSketch.Edit
'----------------
    Dim oLines As SketchLines
    Set oLines = oSketch.SketchLines
    Dim i As Integer
    i = oLines.Count + 1
    'Debug.Print "i=" & i
    Dim oCtrlDef As ControlDefinition
    Set oCtrlDef = ThisApplication.CommandManager.ControlDefinitions.Item("SketchLineCmd")
    oCtrlDef.Execute2 (True)
    Dim i2 As Integer
    i2 = oLines.Count
    'Debug.Print "i2=" & i2
        If Not i2 = i Then
            'Debug.Print "Exit"
            Exit Sub
        End If
    Dim oLine As SketchLine
    Set oLine = oLines.Item(oLines.Count)
    'Debug.Print "oLine.Length=" & oLine.Length
End Sub

Gruß
Helmut

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

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