Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk
 - od firmy ARKANCE [www.cadforum.cz] ARKANCE | KONTAKT - CZ | SK | EN | DE
Již 10.000+ CAD tipů. Přes 118.000 registrovaných u nás, celkem 1.092.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků. Vyzkoušejte nový přesný Inženýrský kalkulátor. Kompletní příkazy AutoCADu a proměnné AutoCADu 2026.

CAD tip CAD tip # 13946:

Otázka

CAD 
 %  platforma  kategorie 
A

Kdo si někdy zkoušel vytvářet vlastní pravidla v iLogic, jistě narazil na jednu zvláštnost při přístupu k hodnotám parametrů v modelu Inventoru. Numerické hodnoty jsou reprezentovány tzv. databázovými jednotkami, což je v případě délkových, plošných a objemových jednotek vždy cm (centimetr, resp. cm^2, cm^3). My ale zpravidla potřebujeme hodnotu mm, resp. jednotky původního dokumentu nebo původního parametru.

V těchto případech pomůže jednoduchá konverzní funkce, která hodnotu daného parametru vrátí v jednotkách daného parametru, nebo - ještě praktičtěji - v hodnotách aktuálního dokumentu Inventoru.

V následujícím kódu iLogic najdete funkci GetRealParValue, která vrací skutečnou číselnou hodnotu v jednotkách parametru, a pokročilejší funkci GetRealParameterValue, která vrací hodnotu v libovolných jednotkách, např. ve výchozích jednotkách dokumentu. Ve vašich pravidlech pak prostě použijete místo Param.Value volání GetRealParValue(Param).

Kód obsahuje i úvodní, nepodstatnou část, která jen ilustruje použití obou funkcí.


Public Sub Main()
    Dim oDoc As PartDocument = ThisDoc.Document
    Dim Param As [Parameter] = oDoc.ComponentDefinition.Parameters.Item("d17a") ' <-- YOUR PARAMETER
	
    Dim uom = oDoc.UnitsOfMeasure
    Dim valueInParameterUnits As Double = GetRealParValue(Param)
'   Dim valueInParameterUnits As Double = GetRealParameterValue(oDoc, Param)
    Dim valueInDocumentUnits As Double = GetRealParameterValue(oDoc, Param, UnitsTypeEnum.kDefaultDisplayLengthUnits)
    Dim documentUnits As String = uom.GetStringFromType(UnitsTypeEnum.kDefaultDisplayLengthUnits)
	
	MsgBox("Parameter value is: " & vbCrLf &
	    valueInParameterUnits & " " & Param.Units & vbCrLf &
            valueInDocumentUnits & " " & documentUnits,
            MsgBoxStyle.Information, "iLogic convertor")
End Sub

Public Function GetRealParValue(Par As [Parameter]) As Double ' BASIC
    Dim uom = ThisDoc.Document.UnitsOfMeasure
    Dim outUnit = uom.GetTypeFromString(Par.Units)
    Dim dbUnitStr As String = uom.GetDatabaseUnitsFromExpression(Par.Expression, Par.Units)
    Dim dbUnit As UnitsTypeEnum = uom.GetTypeFromString(dbUnitStr)
    Dim rValue As Double = uom.ConvertUnits(Par.Value, dbUnit, outUnit)
    Return rValue
End Function

Public Function GetRealParameterValue(oDoc As Document, ' ADVANCED
                 Param As [Parameter], 
                 Optional OutputUnit As UnitsTypeEnum = Nothing) As Double
    Dim uom = oDoc.UnitsOfMeasure
    If (OutputUnit = Nothing) Then
        OutputUnit = uom.GetTypeFromString(Param.Units)
    End If
    Dim DatabaseUnitStr As String = uom.GetDatabaseUnitsFromExpression(
            						Param.Expression, Param.Units)
    Dim DatabaseUnit As UnitsTypeEnum = uom.GetTypeFromString(DatabaseUnitStr)
    Dim rValue As Double = uom.ConvertUnits(Param.Value, DatabaseUnit, OutputUnit)
    Return rValue
End Function

Ukázka použití funkcí pro parametr "d17a", v dokumentu s jednotkami "mm":

a výstup tohoto kódu:

Připomínáme, že standardní přístup přes hodnotu parametru, tedy .Value, by u tohoto parametru vrátil hodnotu 0.1 (cm).
Inventor
100% *CAD
2.12.2023 1197× Expert
font ilogic inventor model text
 
Související CAD produkty:
platí pro: Inventor ·

Zpět    Všechny další tipy



Pomohl vám tento tip? Provoz služby CADForum.cz podpoříte i nákupem produktů Autodesk u provozovatele tohoto serveru a Platinum partnera Autodesku, firmy ARKANCE.
Můžete si také přidat odkaz na vaše stránky: CAD Fórum - diskuze, tipy, bloky a utility
CAD: 
OS: 
Kateg: 
Text:
 FAQ
  






Tipy a triky prosím využívejte na vlastní zodpovědnost.
Provozovatel (Arkance Systems CZ s.r.o.) nenese odpovědnost za případné potíže vzniklé v souvislosti s použitím kteréhokoliv z uvedených tipů.
Pro plné zvládnutí dané aplikace doporučujeme absolvování některého z nabízených CAD školení.
Další publikování obsahu je dovoleno jen se souhlasem autora.
TOPlist