Inventor DWG / Probleme mit iProperty-Übernahme wenn Erstansicht auf 2. Blatt

Inventor DWG / Probleme mit iProperty-Übernahme wenn Erstansicht auf 2. Blatt

TAR_Loki
Collaborator Collaborator
3.343Aufrufe
21Antworten
Nachricht 1 von 22

Inventor DWG / Probleme mit iProperty-Übernahme wenn Erstansicht auf 2. Blatt

TAR_Loki
Collaborator
Collaborator

Hi Zusammen,

 

mir ist da ein keines Problem aufgefallen, und ich bin mir nicht sicher, ob dieses Problem nur mich betrifft, oder ob es allgemein ein Programierfehler von Autodesk ist.

Ich habe, für meine Kollegen, eine DWG Vorlage in Inventor gebastelt.

Diese Vorlage beinhaltet von vornherein 2 Blätter.

Auf Blatt 1 soll nur die Revisionstabelle sein und ab Blatt zwei sollen die Zeichnungen erstellt werden.

 

Wenn ich nun meine Erstansicht auf Blatt 2 erstellt, werden die iProperties, die ich zuvor in der IAM oder IPT ausgefüllt hatte, nicht übernommen.

Wenn ich jedoch die Erstansicht auf Blatt 1 erstellt, dann funktioniert alles wie vorgesehen.

Siehe Screencast

 

Eigentlich sollte es doch so sein, das es egal ist, wo die Erstansicht platziert wird.

 

Könntet Ihr mal schauen, ob Ihr das Problem nachvollziehen könnt?

 

Gruß,

Sven

 

 

0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (2)
3.344Aufrufe
21Antworten
Antworten (21)
Nachricht 2 von 22

Juergen_Wagner
Advisor
Advisor
Sehe ich anders. Ich denke es ist Standard, das die Iproperties des Modelles in Ansicht 1 auf Blatt 1 übernommen wird. Warum nicht die Tabelle auf Blatt 2 und die Ansichten auf Blatt 1?
Nachricht 3 von 22

TAR_Loki
Collaborator
Collaborator

Die iProperties sind doch eigentlich unabhängig vom Blatt zu betrachten, demnach sollte es Inventor egal sein, an welcher Stelle er gucken soll, das er sich die iProperties holt.

Was die Sortierung angeht, ist Blatt 1 zur Änderungsverfolgung wie in einem Buch als Inhaltsangabe zu sehen.

Da der Kunde bei jeder Revision immer nur eine Datei bekommt, es sich aber nicht immer auf jedem Blatt etwas geändert hat, soll Seite 1 dazu dienen, dem Kunden schnell die Information an die Hand zu geben, wo er die letzte Änderung findet.

Somit muss er nicht immer alle Zeichnungen durchblättern.

0 „Gefällt mir“-Angaben
Nachricht 4 von 22

Dennis.Ossadnik
Autodesk Support
Autodesk Support

Hallo @TAR_Loki,

 

ich verstehe, was Du meinst. Aber Inventor geht genau nach dieser Logik vor: 1. Blatt und 1 Ansicht.

 

"Theoretisch" kann es Inventor tatsächlich egal sein, wo er die Daten herholt.

Aber man hat sich darauf verständigt, dass es immer das erst-erstellt Blatt und die erst-erstellt Ansicht ist.

 

So ähnlich funktioniert das ja auch mit dem Schriftkopf. Da ist es immer die erste Ansicht auf dem Blatt.

 

Wenn Du das anders handhaben möchtest, müsstest Du leider auf Code ausweichen. Also bspw. iLogic.

 


Bitte nutzt den "Als Lösung akzeptieren"-Button, wenn ein Beitrag euer Problem oder eure Frage löst. Für hilfreiche Posts könnt ihr auch gerne Kudos vergeben.



Dennis Ossadnik
Senior Technical Support Specialist
0 „Gefällt mir“-Angaben
Nachricht 5 von 22

TAR_Loki
Collaborator
Collaborator

Hi @Dennis.Ossadnik,

 

kann ich das denn über iLogic regeln, das er die Daten auch vom 2. Blatt zieht?

Wenn ja, wie müsste die regel aussehen und wo müsste ich sie hinpacken?

 

Gruß Sven

0 „Gefällt mir“-Angaben
Nachricht 6 von 22

Dennis.Ossadnik
Autodesk Support
Autodesk Support

Guten Morgen Sven,

 

mit Programmierung geht (fast) alles Smiley (zwinkernd)

 

Du müsstest aber auf den Standard-Mechanismus von Inventor verzichten und in diesem Fall eine Regel schreiben, die genau die Werte der Felder hin- und herschubst, die Du benötigst. Als Referenz holst Du dann eben das Dokument, welches als erste Ansicht auf dem zweiten Blatt ist.

 

Hilft Dir das weiter?

 



Dennis Ossadnik
Senior Technical Support Specialist
0 „Gefällt mir“-Angaben
Nachricht 7 von 22

Martin-Winkler-Consulting
Advisor
Advisor

Hallo @TAR_Loki

welche Properties sollen den genau übernommen werden?

Kannst du die Vorlage hier posten?

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

0 „Gefällt mir“-Angaben
Nachricht 8 von 22

TAR_Loki
Collaborator
Collaborator

Ich hoffe die Vorlage funktioniert, da Sie schon 2 externe Regeln enthält.

 

Das hier wäre ein Beispil für die iProperties, die er übergeben sollte:

 

2018-03-13 10_38_03-Autodesk Inventor Professional 2018 - [HBL-000000000.ipt].png2018-03-13 10_38_52-Autodesk Inventor Professional 2018 - [HBL-000000000.ipt].png

0 „Gefällt mir“-Angaben
Nachricht 9 von 22

Martin-Winkler-Consulting
Advisor
Advisor

Hallo @TAR_Loki

wie @Dennis.Ossadnik schon schreibt mit programmieren geht fast alles.

Da ich heute meinen kreativen Tag habe 😉 schlage ich dir folgendes VBA Makro vor:

 

Sub PropertiesfromSheet2()

'Kopieren der Properties von der Erstansicht der Seite2 in die Properties der idw/dwg

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument
'Verweis auf User Properties der dwg
Dim oDrawUserProp As PropertySet


'ab hier gehts zu den Properties der Erstansicht von Sheet2
Dim oSheet2 As Sheet
Set oSheet2 = oDrawDoc.Sheets.item(2)
Dim oView1 As DrawingView
Set oView1 = oSheet2.DrawingViews.item(1)

'referenziertes Dokument von Sheet2 , View1 aufrufen
Dim oSheet2_RefFile As Document
Set oSheet2_RefFile = oView1.ReferencedDocumentDescriptor.ReferencedDocument
'Properties von Dokument
Dim oPropSets As PropertySets
Set oPropsSets = oSheet2_RefFile.PropertySets
Dim oPropSetRef As PropertySet
Dim oProp As Property


For i = 1 To 4
    Set oDrawUserProp = oDrawDoc.PropertySets.item(i)
    Set oPropSetRef = oPropsSets.item(i)
    
    'Übertragen der Properties
    For Each oProp In oPropSetRef
     If Not oProp.Expression = "(NULL)" Then
      'Prüfen ob das Property in der dwg vorhanden ist sonst anlegen
      If CheckPropertyExists(oDrawUserProp, oProp.Name) Then
        oDrawUserProp.item(oProp.Name).Value = oProp.Value
      Else
        Call oDrawUserProp.Add(oProp.Expression, oProp.Name)
      End If
     End If
    Next
Next

End Sub


Public Function CheckPropertyExists(oProps As PropertySet, oPropName As String) As Boolean
 CheckPropertyExists = False
 Dim oProp As Property
 For Each oProp In oProps
    If oProp.Name = oPropName Then
        CheckPropertyExists = True
    End If
 Next
End Function

 

Bitte komplett in ein Modul kopieren. Die Function prüft ob es das Property in der dwg/idw schon gibt, da es ansonsten hinzu gefügt werden muss.

Bei meinen Tests wurden alle Properties brav rüber kopiert. Ich hoffe das hilft dir.

 

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

Nachricht 10 von 22

TAR_Loki
Collaborator
Collaborator
Hallo Martin,

vielen Dank, ich werde es morgen früh mal ausprobieren.

Gruß Sven
0 „Gefällt mir“-Angaben
Nachricht 11 von 22

TAR_Loki
Collaborator
Collaborator

Hallo @Martin-Winkler-Consulting,

 

leider muss ich Dich noch mal kurz um eine kleine ilfestellung bitten.

Ich bin was VBA angeht, ein echter Leihe, wenn nicht sogar Ahnungslos. Smiley (fröhlich)

Kannst Du mir kurz helfen und sagen, was Du mit Modul meinst, wo ich es finde und wie ich es in die Vorlage bekomme? Sofern ich es nicht sogar direkt darin erstelle. Smiley (fröhlich)

 

Gruß Sven

0 „Gefällt mir“-Angaben
Nachricht 12 von 22

Martin-Winkler-Consulting
Advisor
Advisor

Hallo @TAR_Loki

Aufruf des VBA Makro Editors mit ALT+F11

 

Makro einfügen:

VBA_Editor.jpg

 

Inventor Optionen für .ivb Datei:

 

Inventor_ivb_Einstellung.jpg

Starten des Makros zum Beispiel mit iLogic Regel:

VBA_Makro_iLogic.jpg

 

Alternative:

Umscheiben des Makros direkt als iLogic Regel

 

Ich hoffe du kommst so weiter.

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

Nachricht 13 von 22

TAR_Loki
Collaborator
Collaborator

@Martin-Winkler-Consulting

Danke Dir, damit bin ich ein kleines Stück weiter gekommen.

Allerdings scheine ich irgendwo etwas noch nicht richtig gemacht zu haben.

 

Wie von Dir beschrieben, habe ich mir die VB-Projektdatei auf einem zentralen Netzwerkordner abgelegt und dies dann in den Anwendungsoptionen eingesellt.

 

2018-03-14 11_31_05-Inventor.png

 

2018-03-14 11_36_13-Anwendungsoptionen.png

 

In der Projektdatei habe ich das entsprechende Modul erstellt:

2018-03-14 11_33_45-Microsoft Visual Basic for Applications - HuB.ivb.png

 

Danach habe ich die Regel erstellt, die dieses Makro ansteuern soll:

2018-03-14 11_34_25-Autodesk Inventor Professional 2018 - [Zeichnung1].png

 

2018-03-14 11_35_02-Autodesk Inventor Professional 2018 - [Zeichnung1].png

 

Wenn ich die Regel aber nun ausführe, bekomme ich folgende Meldung:

2018-03-14 11_35_32-Autodesk Inventor Professional 2018 - [Zeichnung1].png

 

Was habe ich falsch gemacht?

0 „Gefällt mir“-Angaben
Nachricht 14 von 22

Martin-Winkler-Consulting
Advisor
Advisor

@TAR_Loki

ersetze HuB.ivb durch das Wort Anwendungsprojekt in der iLogic Regel

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

0 „Gefällt mir“-Angaben
Nachricht 15 von 22

TAR_Loki
Collaborator
Collaborator

@Martin-Winkler-Consulting

 

Ich habe es so abgeäandert:

 

InventorVb.RunMacro("Anwendungsprojekt", "PropertiesfromSheet2_Modul", "PropertiesfromSheet2")

Allerdings schmeißt er mir danach neue Fehler aus:

 

2018-03-14 13_06_57-Autodesk Inventor Professional 2018 - [Zeichnung1].png

 

2018-03-14 13_01_26-Microsoft Visual Basic for Applications - HuB.ivb [Unterbrechen].png

 

2018-03-14 13_01_55-Autodesk Inventor Professional 2018 - [Zeichnung1].png

 

 

0 „Gefällt mir“-Angaben
Nachricht 16 von 22

Martin-Winkler-Consulting
Advisor
Advisor

Ist auf Blatt 2 eine Erstansicht eingefügt?

Die Variante das nichts eingefügt ist müsste man noch als Fehler abfangen, aber dann können natürlich auch keine Properties von dort übertragen werden.

Vielleicht kann auch jemand anders das mal testen. Bei mir lief es gestern.

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

0 „Gefällt mir“-Angaben
Nachricht 17 von 22

TAR_Loki
Collaborator
Collaborator
Noch nicht, da ich das ganze in die Vorlage/Template versuche einzuarbeiten
0 „Gefällt mir“-Angaben
Nachricht 18 von 22

Martin-Winkler-Consulting
Advisor
Advisor
Akzeptierte Lösung

So werden die Fehler

-kein Blatt2 vorhanden

-keine Erstansicht auf Blatt2

nun abgefangen:

Sub PropertiesfromSheet2()

'Kopieren der Properties von der Erstansicht der Seite2 in die Properties der idw/dwg

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument
'Verweis auf User Properties der dwg
Dim oDrawUserProp As PropertySet

Dim oSheet2 As Sheet
    If oDrawDoc.Sheets.Count > 1 Then
     Set oSheet2 = oDrawDoc.Sheets.item(2)
    Else
     MsgBox "Properties von Blatt2 können nicht übertragen werden" & Chr(13) _
     & "Blatt2 nicht vorhanden!", vbCritical, "Kopieren Properties"
     Exit Sub
    End If
Dim oView1 As DrawingView
    If oSheet2.DrawingViews.Count > 0 Then
     Set oView1 = oSheet2.DrawingViews.item(1)
    Else
     MsgBox "Properties von Blatt2 können nicht übertragen werden." & Chr(13) _
     & "Keine Erstansicht vorhanden!", vbCritical, "Kopieren Properties"
     Exit Sub
    End If

'referenziertes Dokument von Sheet2 , View1 aufrufen
Dim oSheet2_RefFile As Document
Set oSheet2_RefFile = oView1.ReferencedDocumentDescriptor.ReferencedDocument
'Properties von Dokument
Dim oPropSets As PropertySets
Set oPropsSets = oSheet2_RefFile.PropertySets
Dim oPropSetRef As PropertySet
Dim oProp As Property


For i = 1 To 4
    Set oDrawUserProp = oDrawDoc.PropertySets.item(i)
    Set oPropSetRef = oPropsSets.item(i)
    
    'Übertragen der Properties
    For Each oProp In oPropSetRef
     If Not oProp.Expression = "(NULL)" Then
      'Prüfen ob das Property in der dwg vorhanden ist sonst anlegen
      If CheckPropertyExists(oDrawUserProp, oProp.Name) Then
        oDrawUserProp.item(oProp.Name).Value = oProp.Value
      Else
        Call oDrawUserProp.Add(oProp.Expression, oProp.Name)
      End If
     End If
    Next
Next

End Sub

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

0 „Gefällt mir“-Angaben
Nachricht 19 von 22

TAR_Loki
Collaborator
Collaborator
Bombe! 😊
Vielen lieben dank
Ich werde es Montag direkt prüfen, da für mich vor zwei Stunden schon das Wochenende angefangen hat. 😊
0 „Gefällt mir“-Angaben
Nachricht 20 von 22

Martin-Winkler-Consulting
Advisor
Advisor

@TAR_Lokiuih, da hast du es aber gut...na dann schönes Wochenende! Smiley (fröhlich)

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature