Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  iLogic Property in ReferencedDocuments schreiben

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
  
Ihren Arbeitsablauf mit Flexiblock in ZWCAD 2024 beschleunigen
Autor Thema:  iLogic Property in ReferencedDocuments schreiben (493 mal gelesen)
OibelTroibel
Mitglied
Konstrukteur


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

Beiträge: 595
Registriert: 18.04.2014

ACAD/Inventor 2018-21

erstellt am: 07. Jun. 2023 11: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

Hallo zusammen

Ich möchte gerne in einer Baugruppe eine iLogic-Regel ausführen, die die Abmessungen aller Unterbaugruppen und Bauteilen in die jeweiligen iProperties schreibt. Dazu habe ich folgendes Script:

Code:
Sub Main()
Dim oADoc As AssemblyDocument = ThisDoc.Document
Dim oAsmDef As AssemblyComponentDefinition
oAsmDef = oADoc.ComponentDefinition
Dim oRefDef As Document 

For Each oRefDoc As Document In oADoc.AllReferencedDocuments
If oRefDoc.IsModifiable = True

'Abmessungen auslesen
oRefDef = oRefDoc.ComponentDefinition
oMinP = oRefDef.RangeBox.MinPoint
oMaxP = oRefDef.RangeBox.MaxPoint
oXDiff = oMaxP.X - oMinP.X
oYDiff = oMaxP.Y - oMinP.Y
oZDiff = oMaxP.Z - oMinP.Z
oSize = oXDiff & " x " & oYDiff & " x " & oZDiff

oRefDef.PropertySet.Add(oSize, "Abmessung")
End If
Next
End Sub

Leider erhalte ich eine Fehlermeldung "Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "Inventor.Document" umgewandelt werden". Sieht ihr an was das liegen könnte?

Vielen Dank und beste Grüsse
Raphael

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: 702
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 07. Jun. 2023 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 Nur für OibelTroibel 10 Unities + Antwort hilfreich

Ich bin nur am Handy und kann es nicht ausprobieren. Meine Gedanken:

Beim if fehlt ein then. (wieso startet die Regel dann überhaupt?)
oSize ist nicht deklariert (und auch kein object). Auch die anderen Variablen im if-Block.
Die ComponentDefinition hat kein propertySet, oder? Müsste das oRefDoc sein...? Und dann müsste man auch erst das PropertySet angeben.

Hat aber alles nix unmittelbar mit der Fehlermeldung zu tun.

oRefDef ist falsch deklariert (als document, sollte aber componentDefinition sein.

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

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: 702
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 07. Jun. 2023 12: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 Nur für OibelTroibel 10 Unities + Antwort hilfreich

Unabhängig vom Code sei noch folgende Frage erlaubt: Bei den ganzen Einschränkungen, die es bei der RangeBox gibt, bringt die Info dann was?

Schräg im Raum liegende Volumen
Stützpunkte von Splines

Es ist nur sichergestellt, dass die Geometrie innerhalb der Box liegt. Nicht dass die Box "eng anliegt".

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

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: 702
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 07. Jun. 2023 12:58    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 OibelTroibel 10 Unities + Antwort hilfreich

Und noch ein Gedanke: funktioniert das .Add auch wenn das iProperty bereits existiert? Ich kenne es so, dass erst versucht wird, den Wert in das existierende iProp zu schreiben. Im Fehlerfall wird es erstellt.

Ähnlich wie hier.

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

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: 2428
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 07. Jun. 2023 13:11    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 OibelTroibel 10 Unities + Antwort hilfreich

Moin

Gewöhn dir einfach an, ein "Option Explicit On" in den Header deiner Regel zu schreiben. Das erzwingt eine saubere Deklaration aller Variablen. Das kostet etwas Zeit beim Schreiben, spart aber hinterher jede Menge Zeit weil man nicht solche Typenkonflikte suchen muss.

Die Einschränkungen einer so einfachen Abmessungsermittlung hat KraBBy ja schon genannt.


Code:

Sub Main()
Dim oADoc As AssemblyDocument = ThisDoc.Document
Dim oAsmDef As AssemblyComponentDefinition = oADoc.ComponentDefinition
Dim oRefDoc As Document

For Each oRefDoc In oADoc.AllReferencedDocuments
If oRefDoc.IsModifiable = True
'Abmessungen auslesen
Dim oRefDef As ComponentDefinition = oRefDoc.ComponentDefinition
Dim oMinP As Point = oRefDef.RangeBox.MinPoint
Dim oMaxP As Point  = oRefDef.RangeBox.MaxPoint
Dim oXDiff As Double= oMaxP.X - oMinP.X
Dim oYDiff As Double = oMaxP.Y - oMinP.Y
Dim oZDiff As Double = oMaxP.Z - oMinP.Z
Dim oSize As String= oXDiff.ToString  & " x " & oYDiff.ToString  & " x " & oZDiff.ToString
Try
oRefDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Abmessung").Value = oSize
Catch
oRefDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Add(oSize, "Abmessung")
End Try
End If
Next
End Sub


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

RKW Solutions GmbH
www.RKW-Solutions.com

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

OibelTroibel
Mitglied
Konstrukteur


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

Beiträge: 595
Registriert: 18.04.2014

ACAD/Inventor 2018-21

erstellt am: 07. Jun. 2023 14:44    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

Vielen Dank KraBBy und Ralf. Ihr habt vollkommen recht, das Script war nicht wirklich sauber und eher ein zusammengebastelter Schnellschuss. Ich habe für ein Bauteil folgenden Code verwendet
Code:
iProperties.Value("Custom", "Abmessung") = Round(Measure.ExtentsLength,1) & "x" & Round(Measure.ExtentsWidth,1) & "x" & Round(Measure.ExtentsHeight,1)


den ich nun auch in der Baugruppe ausführen wollte. Nach etwas googeln habe ich mir dann den obigen Code zusammengebastelt.
Den von Ralf optimierten Code funktioniert nun bestens und ich bin mir der Einschränkungen bewusst.
Nochmals vielen Dank euch beiden

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)2024 CAD.de | Impressum | Datenschutz