Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 15328 
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

 

NápovědaCAD diskuze, rady, výměna zkušeností

 
CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion 360, 3ds Max a s dalšími CAD aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy Arkance Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenopermanentní přidání iLogic pravidla do dílu.

 Odpovědět Odpovědět archiv
Autor
Artesis Zobrazit panel
Diskutér
Diskutér

Přihlášen: 04.úno.2010
Lokalita: Czech Republic
Používám:
inventor2008
Stav: Offline
Bodů: 29
Přímý odkaz na tuto zprávu Téma: permanentní přidání iLogic pravidla do dílu.
    Zasláno: 24.srp.2017 v 13:58
Dobrý den,
 
  je nějaká možnost přidat pomocí jednoho iLogic pravidla permanentně pravidlo např. pro rozvin do dílu (ipt. souboru)?
U nových dílů nemám problém, pravidlo mám v šabloně. Pro staré díly, kde toto pravidlo není aktivováno je to přes spuštěče událostí pomalé, hlavně u většího počtu dílů. Člověku prostě trvá než se prokliká nabídkou...
Měl bych představu, že bych poté dané pravidlo zahrnul do globálních formulářů a na jedno kliknutí by se rozvin natrvalo v díle aktivoval.
 
(funkční pravidlo pro rozvin mám)
 
Díky za rady.


Upravil Artesis - 24.srp.2017 v 14:04
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 24.srp.2017 v 14:31
Tohle není dobrá cesta. Doporučuju použít externí pravidlo a spouštět ho pomocí X-Tools
Zpět nahoru
Artesis Zobrazit panel
Diskutér
Diskutér

Přihlášen: 04.úno.2010
Lokalita: Czech Republic
Používám:
inventor2008
Stav: Offline
Bodů: 29
Přímý odkaz na tuto zprávu Zasláno: 25.srp.2017 v 10:38
z jakého důvodu je to špatná cesta?
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 25.srp.2017 v 12:33
Co třeba zpětná aktualizace? Dočasné, nebo trvalé vypnutí?
Tohle vede na to, že budete mít ten kód na desítkách až stovkách různých míst a pokud budete chtít cokoli změnit, tak to bude prakticky neproveditelné.
Zpět nahoru
Artesis Zobrazit panel
Diskutér
Diskutér

Přihlášen: 04.úno.2010
Lokalita: Czech Republic
Používám:
inventor2008
Stav: Offline
Bodů: 29
Přímý odkaz na tuto zprávu Zasláno: 28.srp.2017 v 07:20
Mě osobně by stačilo, aby se to zahrnulo pomocí jednoho exterího pravidla do - pravidel po spuštění - před uložením dokumentu - "dané pravidlo". Tudíž jakékoliv vypínání-zapínání by do budoucna nemělo dělat problémy. Nejde o žádné stovky pravidel. Jde jen o jedno jediné pravidlo a to pro rozvin. Ostatní si před globální formuláře pouze spouštím, není třeba aby byly adaptivní tak jako pravidlo pro rozvin.
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 28.srp.2017 v 08:08
Kdysi existovala aplikace Code Injector, která tohle uměla, ale stejně doporučuju se spíš podívat na to, jak nastavit externí pravidlo pro X-Tools a jak ho spouštět. Pokud byste potřeboval pomoci s nastavením XTools, tak se obraťte na helpdesk.
Zpět nahoru
Artesis Zobrazit panel
Diskutér
Diskutér

Přihlášen: 04.úno.2010
Lokalita: Czech Republic
Používám:
inventor2008
Stav: Offline
Bodů: 29
Přímý odkaz na tuto zprávu Zasláno: 28.srp.2017 v 14:51
už jsem to našel...
 
Sub Main
Trace.WriteLine("Event Driven Rules Copy", "iLogic") 'debug
 Dim oTemplateDoc As Document
 Dim oTemplate As String
 
 'check file type
 If ThisApplication.ActiveEditDocument.DocumentType = kDrawingDocumentObject Then
 'If ThisDoc.Document.DocumentType = kDrawingDocumentObject Then
  oTemplate = "cesta\název_šablony.idw"   'file to copy events from
 ElseIf ThisApplication.ActiveEditDocument.DocumentType = kPartDocumentObject Then
 'ElseIf ThisDoc.Document.DocumentType = kPartDocumentObject Then
  oTemplate = "cesta\název_šablony.ipt"   'file to copy events from
 Else
  oTemplate = "cesta\název_šablony.iam"   'file to copy events from
 End If
 
 'file to copy events to
 oInput =  ThisApplication.ActiveEditDocument.FullFileName
 If oInput = "" Then 'catch a new file with no path
  Return
 End If 
 
 'open the template
 oTemplateDoc = ThisApplication.Documents.Open(oTemplate, False)
 CopyEventsToDocuments(oTemplateDoc)
 oTemplateDoc.Close
End Sub
Private Const m_ourGuid As String = "{2C540830-0723-455E-A8E2-891722EB4C3E}"
Private savedEnabled As Boolean
Dim oInput As String
Public Sub CopyEventsToDocuments(ByVal sourceDoc As Document)
 Dim sourcePropSet As PropertySet = GetEventRulesPropertySet(sourceDoc)
 Dim inputs() As String = { oInput}
 Dim destinationFileNames As List(Of String) = New List(Of String)(inputs)
 If (destinationFileNames Is Nothing) Then Return
 savedEnabled = iLogicVb.Automation.RulesOnEventsEnabled
 iLogicVb.Automation.RulesOnEventsEnabled = False
 Try 
  CopyEventsToAllDocuments(sourcePropSet, sourceDoc, destinationFileNames)
 Finally  
  iLogicVb.Automation.RulesOnEventsEnabled = savedEnabled
 End Try
End Sub
Function GetEventRulesPropertySet(ByVal sourceDoc As Document) As PropertySet
 Try
  Return sourceDoc.PropertySets(m_ourGuid)
 Catch ex As Exception
  Return Nothing
 End Try
End Function
Function VerifyRulesPropertySet(ByVal propSet As PropertySet) As Boolean
 If (propSet Is Nothing) Then Return True
 ' See if any rules are internal instead of external.  We can't copy those.
 For Each prop As Inventor.Property In propSet
  Dim strValue As String = prop.Value.ToString
  If (Not strValue.StartsWith("file://")) Then Return False
 Next
 Return True
End Function

Sub CopyEventsToAllDocuments(ByVal sourcePropSet As PropertySet, ByVal sourceDoc As Document, ByVal destinationFileNames As List(Of String))
 For Each fileName As String In destinationFileNames
  If (String.Equals(sourceDoc.FullFileName, fileName)) Then Continue For
  CopyEventsToDocument(sourcePropSet, fileName)
 Next
End Sub
Sub CopyEventsToDocument(ByVal sourcePropSet As PropertySet, ByVal fileName As String)
 'Dim doc As Document = FindOpenDocument(fileName)
 Dim openedHere As Boolean = False
 If (doc Is Nothing) Then
  doc = ThisApplication.Documents.Open(fileName, True)
  openedHere = True
 End If
  
 CopyEventsPropertySetToDocument(sourcePropSet, doc)
 iLogicVb.Automation.RulesOnEventsEnabled = savedEnabled
End Sub
Sub CopyEventsPropertySetToDocument(ByVal sourcePropSet As PropertySet, ByVal doc As Document)
 ' If an event-driven rules property set already exists, delete it.
 Dim oldPropSet As PropertySet = GetEventRulesPropertySet(doc)
 If (oldPropSet IsNot Nothing) Then
  oldPropSet.Delete()
 End If
 If (sourcePropSet Is Nothing OrElse sourcePropSet.Count = 0) Then Return
 Dim destPropSet As PropertySet = doc.PropertySets.Add("_iLogicEventsRules", m_ourGuid)
 For Each prop As Inventor.Property In sourcePropSet
  destPropSet.Add(prop.Value, prop.Name, prop.PropId)
 Next
 EnsureDocumentInterest(doc)
End Sub
Const iLogicId As String = "{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}"
Sub EnsureDocumentInterest(ByVal doc As Document)
 If (ThisApplication.SoftwareVersion.Major < 15) Then Return ' Inventor 2010 or before
 If (DocumentHasiLogicInterest(doc)) Then Return
 Dim dataVersion As Integer = 20090512
 Dim newInterest As DocumentInterest = doc.DocumentInterests.Add(iLogicId, "iLogic", DocumentInterestTypeEnum.kInterested, dataVersion, Nothing)
End Sub
Function DocumentHasiLogicInterest(ByVal doc As Document) As Boolean
 Dim interest As DocumentInterest = FindDocumentInterest(doc, iLogicId)
 If (interest IsNot Nothing) Then
  If (interest.InterestType = DocumentInterestTypeEnum.kInterested) Then
   Return True
  End If
  interest.Delete()
 End If
 Return False
End Function
Function FindDocumentInterest(ByVal doc As Document, ByVal clientId As String) As DocumentInterest
 For Each interest As DocumentInterest In doc.DocumentInterests
  If (String.Equals(interest.ClientId, clientId, StringComparison.OrdinalIgnoreCase)) Then
   Return interest
  End If
 Next
 Return Nothing
End Function
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 13368:VIPiLogic pravidlo - výpis hmotností a poloh těžišť všech komponent v sestavě Inventoru do tabulky Excelu
Tip 12043:VIPExport jednotlivých součástí sestavy do samostatných STEP souborů.
Tip 10851:iLogic - jak ve výkresu zpracovat materiál a cestu součásti?
Tip 8631:Mluvící iLogic pravidlo pro kontrolu materiálu součásti Inventoru (výchozí materiál).
Tip 10267:VIPRychlá inspekce dílů v sestavě Inventoru - iVlastnosti jako tooltip (iLogic)
Tip 9399:VIPPočet kusů součásti v sestavě do výkresu dané součásti.


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 1,461 sekund.