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