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

CAD tip CAD tip # 13946:

   
Otázka CAD 
 %  platforma  kategorie 
Q - otázka

Hodnoty parametrů Inventoru ve skutečných jednotkách dokumentu.

A - odpověď

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    812×   Expert
font ilogic inventor model text
 
Související CAD produkty:
Ceny - CAD eShop:
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 Systems.
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