Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  iLogic Code für den Befehl Gehe zu gefaltetem Bauteil

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
  
CIDEON Whitepaper: Collaboration mit optimiertem Daten- und Projektmanagement, ein Whitepaper
Autor Thema:  iLogic Code für den Befehl Gehe zu gefaltetem Bauteil (140 / mal gelesen)
Jonas Blaser
Mitglied



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

Beiträge: 13
Registriert: 17.12.2024

Inventor 2025

erstellt am: 16. Jan. 2025 09: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

Hallo Zusammen

Ich habe mir einen kleinen iLogic Code geschrieben, der eine Abwicklung erstellt und die Grössenwerte weitergibt. Das funktioniert auch alles wunderbar. Nun möchte ich, dass am Ende der Regel wieder in die gefaltete Ansicht gewechselt wird. Ich bekomme es irgendwie nicht hin.

Hier der Code:

On Error Resume Next
Dim oDoc As PartDocument
oDoc = ThisApplication.ActiveDocument
Dim MT_Blechgroesse As SheetMetalComponentDefinition
MT_Blechgroesse = oDoc.ComponentDefinition
MT_Blechgroesse.FlatPattern.Delete
MT_Blechgroesse.Unfold
MT_Blech = ThisApplication.ActiveDocument.ComponentDefinition
X= 10*( MT_Blech.RangeBox.MaxPoint.X - MT_Blech.RangeBox.MinPoint.X)
Y= 10*( MT_Blech.RangeBox.MaxPoint.Y - MT_Blech.RangeBox.MinPoint.Y)
Z= 10*( MT_Blech.RangeBox.MaxPoint.Z - MT_Blech.RangeBox.MinPoint.Z)
Parameter.Quiet = True
DICKE = MinOfMany(X, Y, Z)
LAENGE = MaxOfMany(X, Y, Z)
If X < LAENGE Then
BREITE = X
End If
If Y < LAENGE Then
BREITE = Y
End If
If Z < LAENGE Then
BREITE = Y
End If

iProperties.Value("Custom", "G_L") = Round(LAENGE, 1)
iProperties.Value("Custom", "Breite") = Round(BREITE, 1)
iProperties.Value("Custom", "Dicke") = Round(DICKE, 1)

RuleParametersOutput()
iLogicVb.UpdateWhenDone = True
oDoc = ThisApplication.ActiveDocument
MT_Blechgroesse = oDoc.ComponentDefinition
InventorVb.DocumentUpdate()

ThisDoc.Save


Das ist für die Profis unter euch sicher ein Amateur Code aber er funktioniert 

Vielen Dank für euere Hilfe
Gruss
Jonas

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

Windows 10 x64, AIP 2020-2025

erstellt am: 16. Jan. 2025 11:06    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 Jonas Blaser 10 Unities + Antwort hilfreich

Moin

Stimmt, der Code verursacht leichtes Kopfweh. Was du suchst heißt:

Code:
MT_Blechgroesse.FlatPattern.ExitEdit

Alternativvorschlag:

Code:

option explicit on
If Not ThisDoc.Document.DocumentType = DocumentTypeEnum.kPartDocumentObject Then
    MsgBox("Funktion nur in Blechteilen verfügbar.",MsgBoxStyle.Exclamation,"iLogic Blechgroesse")
    Exit Sub
End If

Dim oDoc As PartDocument = ThisDoc.Document

If Not oDoc.ComponentDefinition.Type = ObjectTypeEnum.kSheetMetalComponentDefinitionObject Then
    MsgBox("Funktion nur in Blechteilen verfügbar.",msgboxstyle.Exclamation,"iLogic Blechgroesse")
    Exit Sub
End If

Dim MT_Blechgroesse As SheetMetalComponentDefinition = oDoc.ComponentDefinition
If MT_Blechgroesse.HasFlatPattern = True Then
    MT_Blechgroesse.FlatPattern.Delete
    MT_Blechgroesse.Unfold
End If

Dim oUOM As UnitsOfMeasure = oDoc.UnitsOfMeasure

Dim dLength As Double  = SheetMetal.FlatExtentsLength
Dim dWidth As Double = SheetMetal.FlatExtentsWidth
Dim dThick As Double = oUOM.ConvertUnits(MT_Blechgroesse.Thickness.Value, UnitsTypeEnum.kDatabaseLengthUnits,"mm")

Dim dTemp As Double
If dLength < dWidth Then
    dTemp = dLength
    dLength = dWidth
    dWidth = dTemp
End If

iProperties.Value("Custom", "G_L") = Round(dLength, 1)
iProperties.Value("Custom", "Breite") = Round(dWidth, 1)
iProperties.Value("Custom", "Dicke") = Round(dThick, 1)

MT_Blechgroesse.FlatPattern.ExitEdit

ThisDoc.Save


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

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

Jonas Blaser
Mitglied



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

Beiträge: 13
Registriert: 17.12.2024

Inventor 2025

erstellt am: 16. Jan. 2025 11:17    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. Das funktioniert.

Zitat:
Original erstellt von rkauskh:
Moin

Stimmt, der Code verursacht leichtes Kopfweh. Was du suchst heißt:

Code:
MT_Blechgroesse.FlatPattern.ExitEdit

Alternativvorschlag:

Code:

option explicit on
If Not ThisDoc.Document.DocumentType = DocumentTypeEnum.kPartDocumentObject Then
    MsgBox("Funktion nur in Blechteilen verfügbar.",MsgBoxStyle.Exclamation,"iLogic Blechgroesse")
    Exit Sub
End If

Dim oDoc As PartDocument = ThisDoc.Document

If Not oDoc.ComponentDefinition.Type = ObjectTypeEnum.kSheetMetalComponentDefinitionObject Then
    MsgBox("Funktion nur in Blechteilen verfügbar.",msgboxstyle.Exclamation,"iLogic Blechgroesse")
    Exit Sub
End If

Dim MT_Blechgroesse As SheetMetalComponentDefinition = oDoc.ComponentDefinition
If MT_Blechgroesse.HasFlatPattern = True Then
    MT_Blechgroesse.FlatPattern.Delete
    MT_Blechgroesse.Unfold
End If

Dim oUOM As UnitsOfMeasure = oDoc.UnitsOfMeasure

Dim dLength As Double  = SheetMetal.FlatExtentsLength
Dim dWidth As Double = SheetMetal.FlatExtentsWidth
Dim dThick As Double = oUOM.ConvertUnits(MT_Blechgroesse.Thickness.Value, UnitsTypeEnum.kDatabaseLengthUnits,"mm")

Dim dTemp As Double
If dLength < dWidth Then
    dTemp = dLength
    dLength = dWidth
    dWidth = dTemp
End If

iProperties.Value("Custom", "G_L") = Round(dLength, 1)
iProperties.Value("Custom", "Breite") = Round(dWidth, 1)
iProperties.Value("Custom", "Dicke") = Round(dThick, 1)

MT_Blechgroesse.FlatPattern.ExitEdit

ThisDoc.Save




Den Code werde ich testen wenn wir mal Zeit haben. Der ist bei uns in allen Vorlagen etc... da brauche ich etwas Zeit wenn ich es richtig machen will.

Gruss
Jonas

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

nightsta1k3r
Ehrenmitglied V.I.P. h.c.
retired ...



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

Beiträge: 11307
Registriert: 25.02.2004

Hier könnte ihre Werbung stehen!

erstellt am: 16. Jan. 2025 13: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 Jonas Blaser 10 Unities + Antwort hilfreich

was Grundsätzliches:
Funktion, Makros, besondere Stile,  etc. nie in der Vorlage, sondern immer extern bereitstellen.
Erleichtert Pflege und Wartung und macht die Dateien kleiner.

------------------

------------------
Es reicht nicht, sich Blödsinn nur auszudenken, wenn man ihn nicht auch bis zur letzten Konsequenz durchzieht!

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

Jonas Blaser
Mitglied



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

Beiträge: 13
Registriert: 17.12.2024

Inventor 2025

erstellt am: 16. Jan. 2025 13:51    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

machen wir grundsätzlich so (Stile, Makros).

Aber bei iLogic bin ich nicht so der Profi. Die müssen doch in der Vorlage sein oder nicht?

Gruss

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

Windows 10 x64, AIP 2020-2025

erstellt am: 16. Jan. 2025 14:59    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 Jonas Blaser 10 Unities + Antwort hilfreich

Moin

Nö, eigentlich man kann iLogicregeln auch als externe Regel definieren, auf einem zentralen Netzlaufwerk ablegen und so für alle Rechner gleich zugänglich machen. Ausgelöst werden die dann z.B. beim Speichern.
Wenn man will, kann man noch eine Regel dazwischen schalten. So wird z.B. beim Speichern, egal welcher Dokumententyp gespeichert wird, die iLogic_OnSave Regel ausgeführt. Die ist auch eine externe Regel und in der steht drin welche Regel(n) beim aktuellen Dokumententyp ausgeführt werden sollen. Damit spart man sich, falls es mal eine neue zusätzliche Regel z.B. für Bauteile gibt, die auf jedem Rechner einzeln wieder eintragen zu müssen. Einfach Zeile in die iLogic_OnSave ergänzen, speichern und sofort für alle wirksam. Beim Entfernen genauso. Ebenso kann man den Aufruf einer Regel so mal eben zentral auskommentieren und somit temporär stillegen.

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