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: 19997 
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řenoPŘIDÁNÍ PARAMETRŮ A UŽ.IVL.

 Odpovědět Odpovědět archiv
Autor
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 Téma: PŘIDÁNÍ PARAMETRŮ A UŽ.IVL.
    Zasláno: 04.úno.2019 v 10:48
Nevím, jestli je tohle někde zdokumentované.
 
Možná to nějak půjde, ale nevím jak.
Navíc tyhle spouštěče jsou opět uložené v dokumentu a pokud v budoucnu pravidlo nebude dostupné, nastane chyba. Pokud budete chtít další přidat, máte stejný problém, jako kdyby bylo pravidlo lokální.
Já jsem pro tenhle účel napsal do XTools právě ty vlastní spouštěče, protože nejsou závislé na tom, aby byly uvedené v dokumentu, pokud v budoucnu zmizí, tak se nic nestane (takový stav je ošetřen), pokud přibydou, tak se jednoduše doplní.
 
Zpět nahoru
Lukáš Záruba Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 02.lis.2007
Lokalita: ČR (SČ)
Používám:
inventor 2015
Stav: Offline
Bodů: 429
Přímý odkaz na tuto zprávu Zasláno: 31.led.2019 v 14:10
Ok, děkuji za doporučení.

Je tedy možné na konec tohoto pravidla napsat příkaz, která mi přiřadí jednotlivá externí pravidla k událostem při který se mají spouštět? viz výstřižek níže? 


Připojené náhledyPřihlaste se pro zobrazení plné verze - 4903/spoustit_pravidlo.JPG




Budu rád za radu i případně všelijaké postřehy.
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: 31.led.2019 v 13:25
Používání interních pravidel v dokumentu není vhodná cesta.
Nejvíc se mi v praxi osvědčilo hlídání určité události nad dokumentem (nejčastěji před uložením) a na tuto událost spouštět externí pravidla.
K tomu je v XTools přímo možnost nastavit pravidlo, které se má spouštět. Toto pravidlo pak může volat další pravidla atd...
Důvody jsem tu už rozebíral mnohokrát, ale nejdůležitější je: Až (ne jestli!) bude potřeba v budoucnu změnit tato pravidla, budete mít opravdu velký problém. U externích to změníte na jednom místě a máte klid.
Zpět nahoru
Lukáš Záruba Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 02.lis.2007
Lokalita: ČR (SČ)
Používám:
inventor 2015
Stav: Offline
Bodů: 429
Přímý odkaz na tuto zprávu Zasláno: 31.led.2019 v 12:01
Ano to funguje když ho potřebuji spustit ale já bych ho chtěl uložit přímo do itp a iam. Pravidlo výše popsané mi připraví parametry a vlastnosti pro itp a iam, které jsou přeukládané ze starších projektů a ty je nemají. Nové již mají vše připravené v šablonách. Proto se snažím vytvořit si pravidlo které by mi po přeuložení starého modelu na nové pomohlo co nejvíce nastavit díl tak aby bez větších zásahů byl jako nová šablona.
Budu rád za radu i případně všelijaké postřehy.
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: 31.led.2019 v 11:42
Zkuste se podívat na RunExternalRule
Zpět nahoru
Lukáš Záruba Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 02.lis.2007
Lokalita: ČR (SČ)
Používám:
inventor 2015
Stav: Offline
Bodů: 429
Přímý odkaz na tuto zprávu Zasláno: 31.led.2019 v 11:29
Napadá mě, že když už mám pravidlo které mi vytvoří všechny potřebné parametry a vlastnosti aby z nich jiné pravidlo mohlo poskládat texty. Nedalo by se na konec tohoto pravidla napsat příkaz?

Něco takového - 

Vlož do tohoto dokumentu externí pravidlo :

1) NADPIS
2) POPIS
3) MAT 
Budu rád za radu i případně všelijaké postřehy.
Zpět nahoru
Lukáš Záruba Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 02.lis.2007
Lokalita: ČR (SČ)
Používám:
inventor 2015
Stav: Offline
Bodů: 429
Přímý odkaz na tuto zprávu Zasláno: 31.led.2019 v 11:08
OK, díky to je ono. Již to funguje a vypadá to takto:

Sub Main()
    Dim userParams As UserParameters = GetUserParams(ThisDoc.Document)
 
    EnsureParameter(userParams, "R1", comment:="NADPIS - ROZM�R")
    EnsureParameter(userParams, "R2", comment:="NADPIS - ROZM�R")
    EnsureParameter(userParams, "R3", comment:="NADPIS - ROZM�R")
    EnsureParameter(userParams, "R4", comment:="NADPIS - ROZM�R")
    EnsureParameter(userParams, "R5", comment:="NADPIS - ROZM�R")
    EnsureParameter(userParams, "PR1", comment:="POPIS - ROZM�R")
    EnsureParameter(userParams, "PR2", comment:="POPIS - ROZM�R")
    EnsureParameter(userParams, "PR3", comment:="POPIS - ROZM�R")
    EnsureParameter(userParams, "PR4", comment:="POPIS - ROZM�R")
    EnsureParameter(userParams, "PR5", comment:="POPIS - ROZM�R")
    EnsureParameterTEXT(userParams, "TEST", comment:="TESTOVAC� PARAMETR")
    
 
    Dim customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")
 
    EnsureProperty(customPropertySet, "N1")
    EnsureProperty(customPropertySet, "N1-M")
    EnsureProperty(customPropertySet, "N2")
    EnsureProperty(customPropertySet, "N2-M")
    EnsureProperty(customPropertySet, "N3")
    EnsureProperty(customPropertySet, "N3-M")
    EnsureProperty(customPropertySet, "N4")
    EnsureProperty(customPropertySet, "N4-M")
    EnsureProperty(customPropertySet, "N5")
    EnsureProperty(customPropertySet, "N5-M")
    EnsureProperty(customPropertySet, "P1")
    EnsureProperty(customPropertySet, "P1-M")
    EnsureProperty(customPropertySet, "P2")
    EnsureProperty(customPropertySet, "P2-M")
    EnsureProperty(customPropertySet, "P3")
    EnsureProperty(customPropertySet, "P3-M")
    EnsureProperty(customPropertySet, "P4")
    EnsureProperty(customPropertySet, "P4-M")
    EnsureProperty(customPropertySet, "P5")
    EnsureProperty(customPropertySet, "P5-M")
    EnsureProperty(customPropertySet, "PR1")
    EnsureProperty(customPropertySet, "PR1-M")
    EnsureProperty(customPropertySet, "PR2")
    EnsureProperty(customPropertySet, "PR2-M")
    EnsureProperty(customPropertySet, "PR3")
    EnsureProperty(customPropertySet, "PR3-M")
    EnsureProperty(customPropertySet, "PR4")
    EnsureProperty(customPropertySet, "PR4-M")
    EnsureProperty(customPropertySet, "PR5")
    EnsureProperty(customPropertySet, "PR5-M")
    EnsureProperty(customPropertySet, "R1")
    EnsureProperty(customPropertySet, "R1-M")
    EnsureProperty(customPropertySet, "R2")
    EnsureProperty(customPropertySet, "R2-M")
    EnsureProperty(customPropertySet, "R3")
    EnsureProperty(customPropertySet, "R3-M")
    EnsureProperty(customPropertySet, "R4")
    EnsureProperty(customPropertySet, "R4-M")
    EnsureProperty(customPropertySet, "R5")
    EnsureProperty(customPropertySet, "R5-M")
    EnsureProperty(customPropertySet, "MAT")
    EnsureProperty(customPropertySet, "MAT-M")
    EnsureProperty(customPropertySet, "MAT2")
    EnsureProperty(customPropertySet, "MAT2-M")
    EnsureProperty(customPropertySet, "TYP1")
    EnsureProperty(customPropertySet, "TYP1-M")
    EnsureProperty(customPropertySet, "TYP2")
    EnsureProperty(customPropertySet, "TYP2-M")
 
End Sub

Function GetUserParams(doc As Document) As UserParameters
    If (doc.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject) Then
        Dim asm As AssemblyDocument = doc
        Return asm.ComponentDefinition.Parameters.UserParameters
    ElseIf (doc.DocumentType = DocumentTypeEnum.kPartDocumentObject) Then
        Dim prt As PartDocument = doc
        Return prt.ComponentDefinition.Parameters.UserParameters
    Else
        Throw New ArgumentOutOfRangeException("Document can be AssemblyDocument or PartDocument")
    End If
End Function
 
Function EnsureParameter(
                userParams As UserParameters,
                paramName As String,
                Optional defaultValue As Double = 0,
                Optional units As String = "mm",
                Optional comment As String = "") As Parameter
    Dim p As Parameter
    Try
        p = userParams(paramName)
    Catch ex As Exception
        p = userParams.AddByValue(paramName, defaultValue, units)
        p.Comment = comment
    End Try
    Return p
End Function

Function EnsureParameterTEXT(
                userParams As UserParameters,
                paramName As String,
                Optional defaultValue As String= "",
                Optional comment As String = "") As Parameter
    Dim p As Parameter
    Try
        p = userParams(paramName)
    Catch ex As Exception
        p = userParams.AddByValue(paramName, defaultValue, "TEXT")
        p.Comment = comment
    End Try
    Return p
End Function

Function EnsureProperty(propertySet As PropertySet, propName As String, Optional defaultValue As String  = "") As [Property]
    Dim p As [Property]
    Try
        p = propertySet(propName)
    Catch ex As Exception
        p = propertySet.Add(defaultValue,propName)
    End Try
    Return p
End Function
Budu rád za radu i případně všelijaké postřehy.
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: 31.led.2019 v 08:39
třeba takhle
 
Function EnsureParameter(
                userParams As UserParameters,
                paramName As String,
                Optional defaultValue As String= "",
                Optional comment As String = "") As Parameter
    Dim p As Parameter
    Try
        p = userParams(paramName)
    Catch ex As Exception
        p = userParams.AddByValue(paramName, defaultValue, "TEXT")
        p.Comment = comment
    End Try
    Return p
End Function
Zpět nahoru
Lukáš Záruba Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 02.lis.2007
Lokalita: ČR (SČ)
Používám:
inventor 2015
Stav: Offline
Bodů: 429
Přímý odkaz na tuto zprávu Zasláno: 29.led.2019 v 18:19
Je možné do tohoto ilogicu dopsat i část která by stejně vkládala textové parametry jako teď číselné parametry ?
Budu rád za radu i případně všelijaké postřehy.
Zpět nahoru
Lukáš Záruba Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 02.lis.2007
Lokalita: ČR (SČ)
Používám:
inventor 2015
Stav: Offline
Bodů: 429
Přímý odkaz na tuto zprávu Zasláno: 29.led.2019 v 16:27
díky, už mi to funguje. Thumbs Up
Budu rád za radu i případně všelijaké postřehy.
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: 29.led.2019 v 14:12
Tohle je dost děsivé :)
Pravilo selže, protože hned na prvním řádku je
Dim part As PartDocument = ThisDoc.Document
a to v sestavě prostě neprojde.
 
Níže je ten kód přepsaný do trochu lepšího tvaru včetně úpravy pro sestavu
Sub Main()
    Dim userParams As UserParameters = GetUserParams(ThisDoc.Document)
 
    EnsureParameter(userParams, "R1", comment:="NADPIS - ROZMĚR")
    EnsureParameter(userParams, "R2", comment:="NADPIS - ROZMĚR")
    EnsureParameter(userParams, "R3", comment:="NADPIS - ROZMĚR")
    EnsureParameter(userParams, "R4", comment:="NADPIS - ROZMĚR")
    EnsureParameter(userParams, "PR1", comment:="POPIS - ROZMĚR")
    EnsureParameter(userParams, "PR2", comment:="POPIS - ROZMĚR")
    EnsureParameter(userParams, "PR3", comment:="POPIS - ROZMĚR")
    EnsureParameter(userParams, "PR4", comment:="POPIS - ROZMĚR")
 
    Dim customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")
 
    EnsureProperty(customPropertySet, "N1")
    EnsureProperty(customPropertySet, "N1-M")
    EnsureProperty(customPropertySet, "N2")
    EnsureProperty(customPropertySet, "N2-M")
    EnsureProperty(customPropertySet, "N3")
    EnsureProperty(customPropertySet, "N3-M")
    EnsureProperty(customPropertySet, "P1")
    EnsureProperty(customPropertySet, "P1-M")
    EnsureProperty(customPropertySet, "P2")
    EnsureProperty(customPropertySet, "P2-M")
    EnsureProperty(customPropertySet, "P3")
    EnsureProperty(customPropertySet, "P3-M")
    EnsureProperty(customPropertySet, "PR1")
    EnsureProperty(customPropertySet, "PR1-M")
    EnsureProperty(customPropertySet, "PR2")
    EnsureProperty(customPropertySet, "PR2-M")
    EnsureProperty(customPropertySet, "PR3")
    EnsureProperty(customPropertySet, "PR3-M")
    EnsureProperty(customPropertySet, "PR4")
    EnsureProperty(customPropertySet, "PR4-M")
    EnsureProperty(customPropertySet, "R1")
    EnsureProperty(customPropertySet, "R1-M")
    EnsureProperty(customPropertySet, "R2")
    EnsureProperty(customPropertySet, "R2-M")
    EnsureProperty(customPropertySet, "R3")
    EnsureProperty(customPropertySet, "R3-M")
    EnsureProperty(customPropertySet, "R4")
    EnsureProperty(customPropertySet, "R4-M")
 
End Sub

Function GetUserParams(doc As Document) As UserParameters
    If (doc.DocumentType = DocumentTypeEnum.kAssemblyDocumentObject) Then
        Dim asm As AssemblyDocument = doc
        Return asm.ComponentDefinition.Parameters.UserParameters
    ElseIf (doc.DocumentType = DocumentTypeEnum.kPartDocumentObject) Then
        Dim prt As PartDocument = doc
        Return prt.ComponentDefinition.Parameters.UserParameters
    Else
        Throw New ArgumentOutOfRangeException("Document can be AssemblyDocument or PartDocument")
    End If
End Function
 
Function EnsureParameter(
                userParams As UserParameters,
                paramName As String,
                Optional defaultValue As Double = 0,
                Optional units As String = "mm",
                Optional comment As String = "") As Parameter
    Dim p As Parameter
    Try
        p = userParams(paramName)
    Catch ex As Exception
        p = userParams.AddByValue(paramName, defaultValue, units)
        p.Comment = comment
    End Try
    Return p
End Function
 
Function EnsureProperty(propertySet As PropertySet, propName As String, optional defaultValue As String  = "") As [Property]
    dim p as [Property]
    Try
        p = propertySet(propName)
    Catch ex As Exception
        p = propertySet.Add(defaultValue,propName)
    End Try
    Return p
End Function
Zpět nahoru
Lukáš Záruba Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 02.lis.2007
Lokalita: ČR (SČ)
Používám:
inventor 2015
Stav: Offline
Bodů: 429
Přímý odkaz na tuto zprávu Zasláno: 29.led.2019 v 12:46
Zdravím mám vzorec viz.: níže který funguje dobře v .ipt ale v .iam mi to hlásí chybu. Vzorec hromadně přidává parmetry a uživatelské ivlastnosti které následně využívá jiný vzorec. 

Nevím proč mi to funguje v dílu ale ne v sestavě. Napadá někoho jak to upravit tak aby to fungovalo i v sestavě?

Předem děkuji

Dim part As PartDocument = ThisDoc.Document
Dim userParams = part.ComponentDefinition.Parameters.UserParameters
Dim p As Inventor.Parameter

Try
 p = userParams("R1")
Catch
 p = userParams.AddByValue("R1", 0, "mm")
End Try
p.Comment = "NADPIS - ROZMĚR"
Try
 p = userParams("R2")
Catch
 p = userParams.AddByValue("R2", 0, "mm")
End Try
p.Comment = "NADPIS - ROZMĚR"
Try
 p = userParams("R3")
Catch
 p = userParams.AddByValue("R3", 0, "mm")
End Try
p.Comment = "NADPIS - ROZMĚR"
Try
 p = userParams("R4")
Catch
 p = userParams.AddByValue("R4", 0, "mm")
End Try
p.Comment = "NADPIS - ROZMĚR"
Try
 p = userParams("PR1")
Catch
 p = userParams.AddByValue("PR1", 0, "mm")
End Try
p.Comment = "POPIS - ROZMĚR"
Try
 p = userParams("PR2")
Catch
 p = userParams.AddByValue("PR2", 0, "mm")
End Try
p.Comment = "POPIS - ROZMĚR"
Try
 p = userParams("PR3")
Catch
 p = userParams.AddByValue("PR3", 0, "mm")
End Try
p.Comment = "POPIS - ROZMĚR"
Try
 p = userParams("PR4")
Catch
 p = userParams.AddByValue("PR4", 0, "mm")
End Try
p.Comment = "POPIS - ROZMĚR"

Dim propertyName As String = "N1"
Dim propertyValue As String = ""

customPropertySet = ThisDoc.Document.PropertySets.Item("Inventor User Defined Properties")
Try
      prop = customPropertySet.Item(propertyName)
Catch
      customPropertySet.Add("", propertyName)
End Try

Try
 prop = customPropertySet.Item("N1-M")
Catch
 customPropertySet.Add("","N1-M")
End Try

Try
 prop = customPropertySet.Item("N2")
Catch
 customPropertySet.Add("","N2")
End Try
Try
 prop = customPropertySet.Item("N2-M")
Catch
 customPropertySet.Add("","N2-M")
End Try

Try
 prop = customPropertySet.Item("N3")
Catch
 customPropertySet.Add("","N3")
End Try
Try
 prop = customPropertySet.Item("N3-M")
Catch
 customPropertySet.Add("","N3-M")
End Try

Try
 prop = customPropertySet.Item("P1")
Catch
 customPropertySet.Add("","P1")
End Try
Try
 prop = customPropertySet.Item("P1-M")
Catch
 customPropertySet.Add("","P1-M")
End Try

Try
 prop = customPropertySet.Item("P2")
Catch
 customPropertySet.Add("","P2")
End Try
Try
 prop = customPropertySet.Item("P2-M")
Catch
 customPropertySet.Add("","P2-M")
End Try

Try
 prop = customPropertySet.Item("P3")
Catch
 customPropertySet.Add("","P3")
End Try
Try
 prop = customPropertySet.Item("P3-M")
Catch
 customPropertySet.Add("","P3-M")
End Try

Try
 prop = customPropertySet.Item("PR1")
Catch
 customPropertySet.Add("","PR1")
End Try
Try
 prop = customPropertySet.Item("PR1-M")
Catch
 customPropertySet.Add("","PR1-M")
End Try

Try
 prop = customPropertySet.Item("PR2")
Catch
 customPropertySet.Add("","PR2")
End Try
Try
 prop = customPropertySet.Item("PR2-M")
Catch
 customPropertySet.Add("","PR2-M")
End Try

Try
 prop = customPropertySet.Item("PR3")
Catch
 customPropertySet.Add("","PR3")
End Try
Try
 prop = customPropertySet.Item("PR3-M")
Catch
 customPropertySet.Add("","PR3-M")
End Try

Try
 prop = customPropertySet.Item("PR4")
Catch
 customPropertySet.Add("","PR4")
End Try
Try
 prop = customPropertySet.Item("PR4-M")
Catch
 customPropertySet.Add("","PR4-M")
End Try

Try
 prop = customPropertySet.Item("R1")
Catch
 customPropertySet.Add("","R1")
End Try
Try
 prop = customPropertySet.Item("R1-M")
Catch
 customPropertySet.Add("","R1-M")
End Try

Try
 prop = customPropertySet.Item("R2")
Catch
 customPropertySet.Add("","R2")
End Try
Try
 prop = customPropertySet.Item("R2-M")
Catch
 customPropertySet.Add("","R2-M")
End Try

Try
 prop = customPropertySet.Item("R3")
Catch
 customPropertySet.Add("","R3")
End Try
Try
 prop = customPropertySet.Item("R3-M")
Catch
 customPropertySet.Add("","R3-M")
End Try

Try
 prop = customPropertySet.Item("R4")
Catch
 customPropertySet.Add("","R4")
End Try
Try
 prop = customPropertySet.Item("R4-M")
Catch
 customPropertySet.Add("","R4-M")
End Try

Budu rád za radu i případně všelijaké postřehy.
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 9195:VIPPřidání vlastního uživatelského parametru do katalogu prvků.
Tip 8544:Jak přesunout díl z nadřazené sestavy do existující podsestavy?
Tip 11606:Snadné přidání hrany do stávající sady zaoblení.
Tip 13237:Změna pořadí vstupních parametrů podsestavy v Subassembly Composeru.
Tip 11860:Jak přidat nebo nahradit parametry v mnoha RFA rodinách najednou?
Tip 10350:Bezpečnostní spuštění AutoCADu - bez aplikací.


 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,309 sekund.