Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  vereinfachter Bemassungsaufruf

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:  vereinfachter Bemassungsaufruf (894 mal gelesen)
Canadabear
Mitglied
Konstrukteur


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

Beiträge: 919
Registriert: 30.06.2010

erstellt am: 26. Apr. 2013 20:54    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,

mich stoert es das ich bei jedem aufrufen des Bemassungsbefehls des Stil einstellen muss sobald er nicht Standart ist.
Die kommt leider bei uns oft vor da die allgemein Toleranzen hier ueber die Anzahl der Dezimalstellen der Masszahl definiert wird.

Ich habe nun gedacht das ich irgendwie die Komandos zum Bemassungsaufruf und Sileinstellung hintereinander aufrufen kann und dann automatisch auswaehlen kann welchen Stil ich verwenden will.
Dies klappt bis zum aufrufen des Stilauswahlkomandos.

Hat jemand eine Idee wie ich den (kleinen) letzten Schritt noch hinbekomme?

Eine anderer Loesungsweg ist aber auch willkommen.

Danke schon mal
Ray

P.S. hier der verwendete Code:

Public Sub RunLineCommand()

    Dim sKeyStr As String
    ' Get the CommandManager object.
    Dim oCommandMgr As CommandManager
    Set oCommandMgr = ThisApplication.CommandManager

    ' Get control definition for the line command.
    Dim oControlDef As ControlDefinition
    Set oControlDef = oCommandMgr.ControlDefinitions.item("DrawingGeneralDimensionCmd")
    ' Execute the command.
    Call oControlDef.Execute
        Set oControlDef = oCommandMgr.ControlDefinitions.item("AppDrawingStyleComboCmd")
    ' Execute the command.
    Call oControlDef.Execute
   
End Sub

------------------
Barbarus hic ego sum, quia non intellegor ulli!

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 01. Mai. 2013 13:34    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 Canadabear 10 Unities + Antwort hilfreich

Hallo

Da der Bemassungsbefehl in einer Endlosschleife läuft, wird das meiner Meinung so nix. Das Aufrufen eines Kommandes killt zwangsläufig das aktive Kommando. Beim Beenden wird aber auch die Auswahl aufgehoben, sprich es ist nichts selektiert dem man einen anderen Stil zu weisen könnte.

Gegenvorschlag:
Mach deine Bemassung alle mit Stil "nach Norm".
Benutz das SimpleSelektion-Beispiel (s.u.) aus der Entwicklerhilfe um nach jedem Anklicken einer Bemassung einen anderen Stil zuzuweisen. Die Auswahl des Stils könntest du über einen Auswaldialog in einer Form realisieren.

Zitat:
"Selection Simple Example "

This sample demonstrates using the selection events to select a face. Selection is dependent on events and VB only supports events within a class module.

To use the sample copy the TestSelection sub into a code module. Create a new class module called clsSelect and copy all of the rest of the code into it. To run the sample, have a part document open that contains some geometry and run the TestSelection sub. Select a face and it will display its area.


Code:

Public Sub TestSelection()
    ' Create a new clsSelect object.
    Dim oSelect As New clsSelect

    ' Call the pick method of the clsSelect object and set
    ' the filter to pick any face.
    Dim oFace As Face
    Set oFace = oSelect.Pick(kPartFaceFilter)

    ' Check to make sure an object was selected.
    If Not oFace Is Nothing Then
        ' Display the area of the selected face.
        MsgBox "Face area: " & oFace.Evaluator.Area & " cm^2"
    End If
End Sub


'*************************************************************
' The declarations and functions below need to be copied into
' a class module whose name is "clsSelect". The name can be
' changed but you'll need to change the declaration in the
' calling function "TestSelection" to use the new name.

' Declare the event objects
Private WithEvents oInteractEvents As InteractionEvents
Private WithEvents oSelectEvents As SelectEvents

' Declare a flag that's used to determine when selection stops.
Private bStillSelecting As Boolean

Public Function Pick(filter As SelectionFilterEnum) As Object
    ' Initialize flag.
    bStillSelecting = True

    ' Create an InteractionEvents object.
    Set oInteractEvents = ThisApplication.CommandManager.CreateInteractionEvents

    ' Ensure interaction is enabled.
    oInteractEvents.InteractionDisabled = False

    ' Set a reference to the select events.
    Set oSelectEvents = oInteractEvents.SelectEvents

    ' Set the filter using the value passed in.
    oSelectEvents.AddSelectionFilter filter

    ' Start the InteractionEvents object.
    oInteractEvents.Start

    ' Loop until a selection is made.
    Do While bStillSelecting
        ThisApplication.UserInterfaceManager.DoEvents
    Loop

    ' Get the selected item. If more than one thing was selected,
    ' just get the first item and ignore the rest.
    Dim oSelectedEnts As ObjectsEnumerator
    Set oSelectedEnts = oSelectEvents.SelectedEntities
    If oSelectedEnts.Count > 0 Then
        Set Pick = oSelectedEnts.Item(1)
    Else
        Set Pick = Nothing
    End If

    ' Stop the InteractionEvents object.
    oInteractEvents.Stop

    ' Clean up.
    Set oSelectEvents = Nothing
    Set oInteractEvents = Nothing
End Function

Private Sub oInteractEvents_OnTerminate()
    ' Set the flag to indicate we're done.
    bStillSelecting = False
End Sub

Private Sub oSelectEvents_OnSelect(ByVal JustSelectedEntities As ObjectsEnumerator, ByVal SelectionDevice As SelectionDeviceEnum, ByVal ModelPosition As Point, ByVal ViewPosition As Point2d, ByVal View As View)
    ' Set the flag to indicate we're done.
    bStillSelecting = False
End Sub


------------------
MfG
Ralf

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