Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Skizze in Zeichnung, Maß geändert, Länge Linie wird nicht aktualisiert aktualisiert

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:  Skizze in Zeichnung, Maß geändert, Länge Linie wird nicht aktualisiert aktualisiert (658 mal gelesen)
EIBe 3D
Mitglied
Dipl. - Ing. (FH)


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

Beiträge: 267
Registriert: 24.01.2020

HP Z4 G4 Workstation
Xeon 3,6 32GB
Nvidia P2000
WIN10
SW2015 SP5.0
SW2017
*************
Inv2018 akt.SP

erstellt am: 19. Okt. 2020 10: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 zusammen,

folgendes Problem:

Zeichnungsdokument, Skizze in Zeichenansicht, 4 Linien in Skizze mit LängenMaßen d0 - d3.

Per VBA ist es mir möglich den Wert der Maße beliebig zu ändern. Dafür gehe ich in den Edit-Modus der Skizze und schreibe in jedes Maß irgendeinen Wert. Dieser wird korrekt eingetragen, danach verlasse ich den Edit-Modus.

Das Problem ist nun, das mir die Linienlänge nicht an den neu eingetragenen Wert angepasst wird. Erst wenn ich die Skizze manuell öffne und das Maß doppelklicke und per grünen Haken bestätige wird die Linienlänge aktualisiert. Das ist schlecht.

Verwende ich den gleichen Code, leicht angepasst, für eine Skizze in einem Bauteil, funktioniert das Ganze tadellos.

Ich vermute irgendeine Unzulänglichkeit in der Skizzierumgebung innerhalb einer Zeichnung, kennt jemand einen Workaround?
Z.B. wie ich das manuelle ändern des jeweiligen Maße simulieren kann. In der Api-Hilfe habe ich dazu nichts finden können.

Hier z.B. machen die ähnliches mit einem skizzierten Symbol, bzw. Titleblock mit iLogic. Allerdings hängt da hinter der Skizze ein Objekt (Symbol / Titleblock) welches sie dan refreshen.

Code für Zeichnung (Eine Ansicht mit einer Skizze "Masze_Fix" mit vier Linien und Maßen d0 - d3 muss vorhanden sein)

Code:

Sub drw_SkizzenMasz_manipulieren()

Dim oApp As Inventor.Application: Set oApp = ThisApplication

Dim oDoc As Inventor.Document: Set oDoc = oApp.ActiveDocument
Dim oDocDType As DocumentTypeEnum: oDocDType = oDoc.DocumentType

Dim oDrwDoc As DrawingDocument: Set oDrwDoc = oDoc

Dim oSheets As Sheets: Set oSheets = oDrwDoc.Sheets
Dim oSheet As Sheet: Set oSheet = oDrwDoc.ActiveSheet

Dim oDrwViews As DrawingViews: Set oDrwViews = oSheet.DrawingViews
Dim oDrwView As DrawingView

Dim oSketch As Sketch
Dim sSketchName As String
sSketchName = "Masze_Fix"

'oApp.ScreenUpdating = False


Dim dScaleTmp As Double

Dim dD0 As Double: dD0 = 1 'oDrwDoc.Parameters.Item("Masze_Fix_d0").Value
Debug.Print "dD0: " & dD0
Dim dD1 As Double: dD1 = 0.8 'oDrwDoc.Parameters.Item("Masze_Fix_d1").Value
Debug.Print "dD1: " & dD1
Dim dD2 As Double: dD2 = 1.2 'oDrwDoc.Parameters.Item("Masze_Fix_d2").Value
Debug.Print "dD2: " & dD2
Dim dD3 As Double: dD3 = 1.4 'oDrwDoc.Parameters.Item("Masze_Fix_d3").Value
Debug.Print "dD3: " & dD3


Dim oDimCons As DimensionConstraint

For Each oDrwView In oDrwViews
    If oDrwView.Sketches.Count > 0 Then
        For Each oSketch In oDrwView.Sketches
            If oSketch.Name = sSketchName Then
                Debug.Print sSketchName
                dScaleTmp = oDrwView.Scale
                Debug.Print dScaleTmp
                             
                Call oSketch.Edit
                For Each oDimCons In oSketch.DimensionConstraints
               
                Select Case oDimCons.Parameter.Name
               
                    Case "d0"
                        oDimCons.Parameter.Value = dD0 / dScaleTmp
                        Debug.Print "d0"
                        Debug.Print oDimCons.Parameter.Value & "mm"
                    Case "d1"
                        oDimCons.Parameter.Value = dD1 / dScaleTmp
                        Debug.Print "d1"
                        Debug.Print oDimCons.Parameter.Value & "mm"
                    Case "d2"
                        oDimCons.Parameter.Value = dD2 / dScaleTmp
                        Debug.Print "d2"
                        Debug.Print oDimCons.Parameter.Value & "mm"
                    Case "d3"
                        oDimCons.Parameter.Value = dD3 / dScaleTmp
                        Debug.Print "d3"
                        Debug.Print oDimCons.Parameter.Value & "mm"
                    End Select
           
                Next
            Call oSketch.ExitEdit
           
            Call oSketch.Edit
            Call oSketch.ExitEdit
           
            End If
        Next
    End If
Next
           
'oApp.ScreenUpdating = True
Call oDrwDoc.Update


End Sub



Code für Bauteil (Eine Skizze "Masze_Fix" mit vier Linien und Maßen d0 - d3 muss vorhanden sein)

Code:

Sub prt_SkizzenMasz_manipulieren()

Dim oApp As Inventor.Application: Set oApp = ThisApplication

Dim oDoc As Inventor.Document: Set oDoc = oApp.ActiveDocument
Dim oDocDType As DocumentTypeEnum: oDocDType = oDoc.DocumentType

Dim oPrtDoc As PartDocument: Set oPrtDoc = oDoc

Dim oSketch As Sketch
Dim sSketchName As String
sSketchName = "Masze_Fix"

Dim dD0 As Double: dD0 = 1
Debug.Print "dD0: " & dD0
Dim dD1 As Double: dD1 = 0.8
Debug.Print "dD1: " & dD1
Dim dD2 As Double: dD2 = 1.2
Debug.Print "dD2: " & dD2
Dim dD3 As Double: dD3 = 1.4
Debug.Print "dD3: " & dD3


Dim oDimCons As DimensionConstraint


        For Each oSketch In oPrtDoc.ComponentDefinition.Sketches
            If oSketch.Name = sSketchName Then
                Debug.Print sSketchName
               
                Call oSketch.Edit
               
                For Each oDimCons In oSketch.DimensionConstraints
               
                Select Case oDimCons.Parameter.Name
               
                    Case "d0"
                        oDimCons.Parameter.Value = dD0 '/ dScaleTmp
                        Debug.Print "d0"
                        Debug.Print oDimCons.Parameter.Value & "mm"
                    Case "d1"
                        oDimCons.Parameter.Value = dD1 '/ dScaleTmp
                        Debug.Print "d1"
                        Debug.Print oDimCons.Parameter.Value & "mm"
                    Case "d2"
                        oDimCons.Parameter.Value = dD2 '/ dScaleTmp
                        Debug.Print "d2"
                        Debug.Print oDimCons.Parameter.Value & "mm"
                    Case "d3"
                        oDimCons.Parameter.Value = dD3 '/ dScaleTmp
                        Debug.Print "d3"
                        Debug.Print oDimCons.Parameter.Value & "mm"
                    End Select
           
                Next
            Call oSketch.ExitEdit
           

            End If
        Next


Call oPrtDoc.Update


End Sub



Vielen Dank fürs lesen und schon jetzt für eure Mühen


Grüße

EIBe 3D

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

KraBBy
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 601
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 19. Okt. 2020 12: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 EIBe 3D 10 Unities + Antwort hilfreich

Call oSketch.Solve

Das scheint die Lösung zu sein. Einfach vor dem Call oSketch.ExitEdit einfügen.

------------------
Gruß KraBBy

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

EIBe 3D
Mitglied
Dipl. - Ing. (FH)


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

Beiträge: 267
Registriert: 24.01.2020

HP Z4 G4 Workstation
Xeon 3,6 32GB
Nvidia P2000
WIN10
SW2015 SP5.0
SW2017
*************
Inv2018 akt.SP

erstellt am: 19. Okt. 2020 12: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

Super, vielen Dank. Hat die Rumfummelei endlich ein Ende 


Grüße

EIBe 3D

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