Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  iLogic in vb.net übersetzen

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:  iLogic in vb.net übersetzen (1768 mal gelesen)
rwabst
Mitglied



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

Beiträge: 37
Registriert: 05.05.2015

PRDS 2016 Ultimate
Vault Workgroup 2016

erstellt am: 05. Mai. 2015 22:12    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

Guten Abend zusammen!

Fuchse mich gerade sehr langsam in die VB.Net Programmierung rein.
Es hat auch schon einiges funktioniert was ich mir vorgenommen hatte.
Leider hänge ich aber jetzt an einer Geschichte, bei der ich trotz intensiver Suche nicht fündig geworden bin.

Ich muss alte Inventor DWG Zeichnungen in denen überall unterschiedliche interne iLogic-Regeln vergraben wurden so bereinigen, dass sie wieder den neuen Richtlinien entsprechen.
Das bedeutet vor allem, "KEINE INTERNEN ILOGIC-REGELN"! 
Erschwehrend kommt noch hinzu, dass natürlich auch die auf den Zeichnungen abgebildeten Modelle eigene Regeln haben. Also muss ich per Programmierung rekursiv von der Zeichnung durch die Baugruppen gehen um alle iLogic-Regeln zu löschen.
Hierzu habe ich eine kleine iLogic-Regeln gefunden, die dies auch sehr sauber und performant macht.
Leider komme ich aber bei der Umsetzung nicht weiter.


--Code

Sub Main()
Auto = iLogicVb.Automation
Dim iLogicAuto As Object = Auto
Dim oDoc As Document = ThisApplication.ActiveDocument
Dim RuleColl As ObjectCollection = ThisApplication.TransientObjects.CreateObjectCollection

Response = MessageBox.Show("Sollen wirklich ALLE iLogic-Regeln ALLER untergeordneter Dateien gelöscht werden?","Firma",MessageBoxButtons.YesNo,MessageBoxIcon.Stop,MessageBoxDefaultButton.Button2)
If Response = vbNo Then
Return
End If

DoubleCheck = MessageBox.Show("Sind Sie sich wirklich sicher?","Firma",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2)
If DoubleCheck = vbNo Then
Return
End If
' Build collection of rules
RuleColl = BuildRuleColl(oDoc, RuleColl, iLogicAuto)
' Delete all rules in this document
Call DeleteAllRules(oDoc, RuleColl, iLogicAuto)
' Loop through all referenced docs in assembly
For Each oSubDoc As Document In oDoc.AllReferencedDocuments
    RuleColl.Clear
    ' Build collection of rules
    RuleColl = BuildRuleColl(oSubDoc, RuleColl, iLogicAuto)
    ' Delete all rules in this document
    Call DeleteAllRules(oSubDoc, RuleColl, iLogicAuto)
Next
End Sub

Function BuildRuleColl(ByVal Doc As Document,ByRef RuleColl As ObjectCollection,ByVal iLogicAuto As Object) As ObjectCollection
'Dim ruleName As String
Dim rules As Object = iLogicAuto.rules(Doc)
If Not (rules Is Nothing) Then
    For Each rule In rules
        RuleColl.Add(rule)
    Next
End If

Return RuleColl
End Function

Sub DeleteAllRules(ByRef Doc As Document, _
                   ByRef RuleColl As ObjectCollection, _
                   ByVal iLogicAuto As Object)
For i = RuleColl.Count To 1 Step -1
    Name = RuleColl.Item(i).Name
    If Not Name = "Delete All Rules" Then
        Try
            iLogicAuto.DeleteRule(Doc, Name)
        Catch
            MsgBox("Could not delete rule: " & Name & " in document " & Doc.Name)
        End Try
    End If
Next
End Sub

--Code Ende

Die meisten Argumente bekomme ich umgesetzt allerdings hängts bei mir am Anfang bei
"Auto = iLogicVb.Automation"

Kann mir bitte hierbei jemand in den Sattel helfen?

Vielen Dank im voraus!  

[Diese Nachricht wurde von rwabst am 06. Mai. 2015 editiert.]

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 07. Mai. 2015 08:56    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 rwabst 10 Unities + Antwort hilfreich

Hallo,

probier doch mal:

Code:

Auto = iLogicVb.Automation
Dim iLogicAuto As Object = m_inventorApplication.VBE.iLogicVb.Automation

------------------
MFG

Chris

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

Inventor 20xx, Visual Studio Express

erstellt am: 07. Mai. 2015 10: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 rwabst 10 Unities + Antwort hilfreich

Nimm doch den "Code Injector" - inklusive VB.net Quelltext.
Da ist die Funktion "Delete all Rules" schon eingebaut.
http://beinginventive.typepad.com/being-inventive/2012/08/major-upgrade-to-the-ilogic-code-injector-tool.html

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

rwabst
Mitglied



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

Beiträge: 37
Registriert: 05.05.2015

PRDS 2016 Ultimate
Vault Workgroup 2016

erstellt am: 08. Mai. 2015 09: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 für die Unterstützung!!!

Den Bereich "m_inventorApplication.VBE.iLogicVb.Automation" hatte ich auch schon probiert. Beim Ausführen in Inventor 2014 gibt er mir aber die Fehlermeldung.
"Der öffentliche Member iLogicVb" für den Typ VBE wurde nicht gefunden"
Mir fehlt scheinbar irgendein import Verweis?!
Wenn ich mir VBE im Objektkatalog anschaue, ist da schon ende.
Habe auch schon versucht die ilogic runtime dll als Verweis einzubinden. Leider auch ohne Erfolg.

Sorry für meine Noob-Fragen!

@CAD-Huebner:
Den Injector hatte ich mir auch schon angeschaut. Habe ihn aber aus drei Gründen verworfen.
- persönlicher Wissensdrang
- nicht noch ein "Inselprogramm"
- einfachere Weiterverarbeitung und Implementierung bei Folgeversionen in die eigene IT-Umgebung

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

rwabst
Mitglied



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

Beiträge: 37
Registriert: 05.05.2015

PRDS 2016 Ultimate
Vault Workgroup 2016

erstellt am: 08. Mai. 2015 11: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

So! Geht doch!

Alsooo, für die Allgemeinheit. 
Konnte mir selbst,wie folgt helfen.

In unendlichen Weiten ... fand ich diese Programmfunktion zum Einstieg ins iLogic AddIn.

Code---

    Function GetiLogicAddin(ByVal oApplication As Inventor.Application) As Object
        Dim addIns As ApplicationAddIns
        addIns = oApplication.ApplicationAddIns
        Dim addIn As ApplicationAddIn
        On Error GoTo NotFound
        addIn = oApplication.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}")
        If (addIn Is Nothing) Then
            GetiLogicAddin = Nothing
            Exit Function
        End If
        Call addIn.Activate()
        GetiLogicAddin = addIn.Automation
        Exit Function
NotFound:
    End Function

---Code

Diesen in meine Sub aufgenommen und das ganze sieht so aus.

Code---
    Public Sub Delete_all_logic_Rules() 'löscht alle internen iLogic-Regeln recursiv durch alle abhängigen Dokumente
        g_ThisApplication = GetObject(, "Inventor.Application")

        Dim Response As String
        Response = MessageBox.Show("Sollen wirklich ALLE iLogic-Regeln ALLER untergeordneter Dateien gelöscht werden?", "Firma", MessageBoxButtons.YesNo, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button2)
        If Response = vbNo Then
            Return
        End If

        Dim doublecheck As String
        doublecheck = MessageBox.Show("Sind Sie sich wirklich sicher?", "Firma", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
        If doublecheck = vbNo Then
            Return
        End If

        Dim i As Object
        i = GetiLogicAddin(g_ThisApplication)

        Dim g_ThisDocument As Inventor.Document
        g_ThisDocument = g_ThisApplication.ActiveDocument

        Dim model As Document
        model = g_ThisDocument.ReferencedDocuments.Item(1)

        '' Hier werden alle internen Regeln der Zeichnung und rekursiv durch das daruf befindliche Modell gelöscht.
        Call i.DeleteAllRulesInDocument(g_ThisDocument)
        Call i.DeleteAllRules(model)

    End Sub

--Code

Ich weiß es ist nicht schön aber ... et klappt!

Vielen Dank für die Gedankenanstöße!!!
Hilfe zur Selbsthilfe.

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