Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Zugreifen auf Teilesichtbarkeit innerhalb IDW

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:  Zugreifen auf Teilesichtbarkeit innerhalb IDW (1310 mal gelesen)
PhoeEniX
Mitglied
Technischer Produktdesigner

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

Beiträge: 6
Registriert: 29.04.2019

Autodesk Inventor Professional 2016
Autodesk Vault 2016

erstellt am: 18. Jun. 2019 11:53    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 Liebe Leidensgenossen,

ich suche eine Lösung, um anhand der Sichtbarkeit bestimmter Bauteile in der Baugruppe, die Blattgröße einer Zeichnung zu ändern.
D.h. in der IAM werden über ein Formular bestimmte Teile ausgewählt und der Rest unsichtbar gemacht (und zusätzlich auf Referenz gesetzt damit diese nicht in der Stückliste erscheinen). Nun soll beim Öffnen der Zeichnung geprüft werden, welche dieser Teile sichtbar sind und dann entsprechen die Blattgröße geändert werden (A3, A2, ...), da diese in der Größe variieren. Maßstab anpassen steht außer Frage.

Momentan habe ich mir schon folgenden Code zusammengestellt (musste in iLogic programmieren weil von Vorgänger so übernommen, daher fehlt "Set"):

Code:
Sub Blattgröße()

Dim oDoc As DrawingDocument
oDoc = ThisDoc.Document

Dim oDrawingView As DrawingViews
oDrawingView = oDoc.ActiveSheet.DrawingViews(1)

Dim oRefDoc As AssemblyDocument
oRefDoc = oDrawingView.ReferencedDocumentDescriptor.ReferencedDocument

Dim oAssDef As AssemblyComponentDefinition
oAssDef = oRefDoc.ComponentDefinition

Dim oOcc As ComponentOccurence
For Each oOccIn oAssDef.Occurences
  If oOcc.Name = "Name1" Then
    If oOcc.Visible = True Then
      MessageBox.Show("5", "5")
    End If
  Else If oOcc.Name = "Name2" Then
    If oOcc.Visible = True Then
      MessageBox.Show("10", "10")
    End If
  Else If oOcc.Name = "Name3" Then
    If oOcc.Visible = True Then
      MessageBox.Show("15", "15")
    End If
  Else If oOcc.Name = "Name4" Then
    If oOcc.Visible = True Then
      MessageBox.Show("20", "20")
    End If
  End If
Next
End Sub

Die MessageBox habe ich vorerst mal nur rein um zu sehen ob ich überhaupt so weit komme, allerdings funktioniert nicht mal das. Die Fehler entstehen schon bei der Deklaration der Verweise und das ist mein Problem; ich komm einfach nicht drauf was ich falsch mache        

Ich hoffe ihr könnt mir bei der Fehleranalyse helfen

------------------
Mit freundlichen Grüßen
Philip

[Diese Nachricht wurde von PhoeEniX am 18. Jun. 2019 editiert.]

[Diese Nachricht wurde von PhoeEniX am 18. Jun. 2019 editiert.]

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: 18. Jun. 2019 13:08    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 PhoeEniX 10 Unities + Antwort hilfreich

iLogic ist ohne IntelliSense einfach nur anstrengend!
Die Lösung ist denkbar einfach, da die Ursache wohl nur Tippfehler sind.

Dim oDrawingView As DrawingView 'war As DrawingViews

For Each oOcc In oAssDef.Occurrences 'Leerz. vor IN ergänzt; Occ. fehlendes r ergänzt

Das sollte es schon gewesen sein!

Ergänzend erlaube ich mir noch meine Meinung zu äußern (bitte nur als Anregung verstehen):
- keine Umlaute im Code! -> Sub Blattgroesse() statt Blattgröße
- If oOcc.Visible = True Then finde ich unglücklich
  If oOcc.Visible Then  reicht meist völlig
  If Not oOcc.Visible Then  die Umkehrung
  If True = oOcc.Visible Then  wenn man das TRUE zeigen möchte, so gibt es aber keine Verwechslung mit einer Zuweisung

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

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

PhoeEniX
Mitglied
Technischer Produktdesigner

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

Beiträge: 6
Registriert: 29.04.2019

Autodesk Inventor Professional 2016
Autodesk Vault 2016

erstellt am: 18. Jun. 2019 13: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

Danke KraBBy für die Hilfe und die Tipps

Leider kommt jetzt die Meldung 'Der Typ "ComponentOccurence" ist nicht definiert.'


Das mit den Rechtschreibfehlern ist etwas peinlich, aber wenn man den ganzen Tag auf den Code schaut sieht man irgendwann den Wald vor lauter Bäumen nicht mehr ^^
Hat das mit den Umlauten einen besonderen Grund? Bei mir gab das bisher keine Probleme

------------------
Mit freundlichen Grüßen
Philip

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

BernoAn
Mitglied



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

Beiträge: 164
Registriert: 16.01.2014

erstellt am: 18. Jun. 2019 15:01    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 PhoeEniX 10 Unities + Antwort hilfreich

Hallo,

Ich habe es dir in VBA soweit geschrieben wie du warst,
ich hoffe dir geholfen zu haben.

Code:

Sub Blattgröße()

Dim oDoc As DrawingDocument
Set oDoc = ThisApplication.ActiveDocument

Dim oDrawingView As DrawingView
Set oDrawingView = oDoc.ActiveSheet.DrawingViews(1)

Dim oRefDoc As AssemblyDocument
Set oRefDoc = oDrawingView.ReferencedDocumentDescriptor.ReferencedDocument

Dim oAssDef As AssemblyComponentDefinition
Set oAssDef = oRefDoc.ComponentDefinition

Dim oOcc As ComponentOccurrence
For Each oOocc In oAssDef.Occurrences

    If oOocc.Visible = True Then MsgBox  (oOocc.name & "    SICHTBAR")
    If oOocc.Visible = False Then MsgBox (oOocc.name & "    unsichtbar")
   

Next


End Sub


Gruß
Berno

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: 18. Jun. 2019 18:05    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 PhoeEniX 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von PhoeEniX:
Leider kommt jetzt die Meldung 'Der Typ "ComponentOccurence" ist nicht definiert.'

damit gehts:
Dim oOcc As ComponentOccurrence
gleicher typo bei Occurrence (doppel R) - hätte ich oben schon schreiben sollen 

Das mit dem Umlauten, hat keinen 'echten' Grund, dass ich sagen könnte "in diesem Fall jene Probleme". Könnte im internationalen Umfeld vielleicht Themen geben (oder gegeben haben), jenachdem welcher Zeichensatz Verwendung findet ...
Vielleicht werde ich nur schon alt... (ich mache auch keine Umlaute in Dateinamen und Verzeichnise, sogar Leerzeichen widerstreben mir)

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

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

PhoeEniX
Mitglied
Technischer Produktdesigner

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

Beiträge: 6
Registriert: 29.04.2019

Autodesk Inventor Professional 2016
Autodesk Vault 2016

erstellt am: 19. Jun. 2019 07: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

Danke euch beiden für die Hilfe, hat mir echt weitergeholfen 

vllt sollte ich dann in Zukunft erst auf VBA programmieren und dann nach iLogic übertragen, um solche "Leichtsinnsfehler" zu vermeiden

------------------
Mit freundlichen Grüßen
Philip

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. Jun. 2019 08:47    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 PhoeEniX 10 Unities + Antwort hilfreich

ein ähnlicher Gedanke wäre, die Routinen in VBA zu programmieren und nur den Aufruf in iLogic zu machen.

iLogic:
InventorVb.RunMacro("projectName", "moduleName", "macroName")

Dadurch könnte man ein par Vorteile verbinden (IntelliSense, Debugging, ObjectBrowser aus VBA und den Ereignisauslöser von iLogic). Nicht dass ich das schon groß gemacht oder auch nur ausprobiert hätte...

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

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

PhoeEniX
Mitglied
Technischer Produktdesigner

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

Beiträge: 6
Registriert: 29.04.2019

Autodesk Inventor Professional 2016
Autodesk Vault 2016

erstellt am: 21. Jun. 2019 09:37    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

Danke nochmal für eure Hilfe 

hier der fertige Code (ohne Rechtschreibfehler) für alle zum kopieren:

Code:

Sub BlattgroesseAnpassen()

  Dim oDoc As DrawingDocument
  oDoc = ThisApplication.ActiveDocument

  Dim oDrawingView As DrawingView
  oDrawingView = oDoc.ActiveSheet.DrawingViews(1)

  Dim oRefDoc As AssemblyDocument
  oRefDoc = oDrawingView.ReferencedDocumentDescriptor.ReferencedDocument

  Dim oAssDef As AssemblyComponentDefinition
  oAssDef = oRefDoc.ComponentDefinition

  ' setzt die Blattgroesse anhaengig von der Ösenaufhängung
  Dim oOcc As ComponentOccurrence
  For Each oOcc In oAssDef.Occurrences
    If oOcc.Name = "Name" Then
      If oOcc.Visible = True Then

        ActiveSheet.ChangeSize("A3", MoveBorderItems := True)

      End If
    End If
  Next
End Sub

Das "oOcc.Visible = True" habe ich jetzt mal so drin gelassen, damit ich das besser erkennen kann.
Aber ja "oOcc.Visible" würde vollkommen ausreichen

------------------
Mit freundlichen Grüßen
Philip

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