Vytisknout stránku | Zavřít okno

Dosiahnutie rozmedzia požadovanej hodnoty

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: iLogic a ETO
Popis fóra: Funkce a makra iLogic, Inventor Engineering to Order (ETO), automatizace a konfigurace výrobků
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=27824
Datum vytištění: 10.kvě.2026 v 12:43


Téma: Dosiahnutie rozmedzia požadovanej hodnoty
Odeslal: hanc.mat
Předmět: Dosiahnutie rozmedzia požadovanej hodnoty
Datum odeslání: 12.říj.2018 v 11:53
Dobrý deň, Chcel by som si vypočítať vzdialenosť dier(B) od okraja valca ak mám definovanú šírku valca, rozstup dier medzi sebou a priemer dier i požadovanú hodnotu ktorá je akceptovatelná na začiatku a konci poľa dier(patternu).
Rozstup dier v poli A = 12 mm
Dĺžka valca = DV = je premenliva a uživateľom definovaná
vzdialenosť od okraja valca = B, jedná sa o súmernú súčiastku
Počet dier = Pocet_dier= DV/A
vzdialenosť od okraja = B = (DV - (floor(ND)*A))2
Ja ale požadujem aby 8.5<B<12.5
Teda potrebujem pravidlo:

Select Case B
Case Is < 8.5
     Pocet_dier = (((DV / (A * 2))) - 1)
     B = ( TrackWidth - ( Pocet_dier * A * 2 ul ) ) / 2 ul
Case Is > 12.5
        Pocet_dier = (((TrackWidth / (A * 2))) + 1)
     B = ( DV - ( DDPB5 * A * 2 ul ) ) / 2 ul
     Return ´bez return to nevracia diery súmerne do stredu
Case 8.5 To 12.5
     DDPB2 = ((TrackWidth / (RowToRowDistance * 2)))     
RuleParametersOutput()
End Select
bez return to nevracia diery súmerne do stredu
Otazka je ako nechat iLogic aby overil hodnotu a ak nieje spravna vypočítal hodnotu ktorá bude v rozmedzi od 8.5 do 12.5 inač musi opakovat if kde pročíta alebo odpočíta 1 dieru.
Kedže dĺžka sa mení ľubovolne od 0 do 1000 mm.

Ďakujem za akýkoľvek nápad.
Skúšal som to podmieňovať IF mi ale neberie to, a pri While End While sa mi to zacyklí.



Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 12.říj.2018 v 12:43
Aniž bych se pouštěl do geometrických rozborů, logika algoritmu mne spíš vede k řešení typu:
 
- spočíst všechny proměnné
- WHILE "B mimo meze"
 - IF "B přelezlo hranici" THEN provést korekční výpočet B
 - IF "B podlezlo hranici" THEN provést jiný korekční výpočet B
- END WHILE
 
nebo místo korekčního výpočtu jen přidat/ubrat díru a cyklit ještě až přes to počítání proměnných


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: hanc.mat
Datum odeslání: 12.říj.2018 v 13:31
Ak pouzijem While B<8.5
i=1
Počet dier = (prvotny pocet dier) - i)
End While
dojde k nekonecnemu vypoctu !

Skusam uy verziu ze nanovo neprepočívam prvotné výpočty ale po podmienke že je čislo menšie/vacsie ako požadované tak mi počita nanovo hodnotu.

Ako napísať že ak si dosiahol hodnotu sprav nič?


Odeslal: Vladimír Michl
Datum odeslání: 12.říj.2018 v 13:37
to je ten while - není-li splněna podmínka, neprovede se nic
 
(pokud přepočet v onom příkladu vždy vede ke zvětšení B, pak by smyčka měla skončit, protože B přeleze těch 8.5)


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: Navara
Datum odeslání: 12.říj.2018 v 13:49
Nevystačil byste si jenom s parametry? Zkuste se podívat na tohle vlákno:
https://www.cadforum.cz/forum/forum_posts.asp?TID=26469&KW=&title=parametry - https://www.cadforum.cz/forum/forum_posts.asp?TID=26469&KW=&title=parametry
Řeší se tam sice zábradlí, ale princip je stejný.


Odeslal: hanc.mat
Datum odeslání: 12.říj.2018 v 14:16
nie nevystačim si s parametrami nakoľko ja potrebujem overenie pomocou iLogicu a hlavne na koci si z toho robím formular s výberom kde si môžem meniť premenne a kde už potom ani to čo je v prvotnom priklade fix nebude fix.
Teda pevná ,,rozteč" medzi dierami. Bude fixna ale podla už existujúceho pravidla naviazaná na veľkosť diery.
Samozrejme šírka sa môže meniť v 0,5mm intervaloch a z toho si nema zmysel vytvarať excel tabulku a hľadať v nej prieniky.
To je ľahšie prísť nato ako funguje prikaz ,,while,, a rozbehať ho do funkčného prikazu.
Zatiaľ som došiel nato že asi bude treba pridavať len +1,+2 alebo -1,-2 a malo by to sedieť tak momentalne vytvaram len zbytočne velky IF ktory to ošetri. a vytvori X 6 novych parametrov ak sa nieco tak ...
ja by som skor potreboval ozrejmiť čo v mojom prikaze Select Case mam doplniť poprípade zameniť Case za IF s podprikazom While ... aby sa to necyklilo dookola ... a overilo mi hodnotu a ak nieje pravdivaupravali mi tu hodnotu ipravou +-i kým pravidlo sa nestane pravdou.
Skúšam to While ale zatial len 10x restart Inventora


Odeslal: hanc.mat
Datum odeslání: 12.říj.2018 v 14:29
Select Case B
Case Is < 8.5
     Pocet_dier = (((DV / (A * 2))) - 1)
     B1 = ( dlžka_valca - ( Pocet_dier * A * 2 ul ) ) / 2 ul
      IF 8.5 > B1
        Pocet_dier_1 = Pocet_dier - 1
        B2 = ( dlžka_valca - ( Pocet_dier_1 * A * 2 ul ) ) / 2 ul
.
.
.

RuleParametersOutput()
End Select
týmto zIfovaním to viem vypočítať
Otázka je ako to zjednodušiť aby som si nasledne nemusel kontrolovať ktorá hodnota (B, B1,B2, ..:Bx) je v rozmedzi od 8.5 do 12.5???


Odeslal: hanc.mat
Datum odeslání: 15.říj.2018 v 10:02
takze som zistil že v danom rozmedzi sa to vie zacyklit lebo dana hodnota pri danych vstupoch nieje vzdy dosiahnutelna
Dakujem za ochotu a snahu o pomoc


Odeslal: hanc.mat
Datum odeslání: 16.říj.2018 v 13:41
Ak by niekoho zaujímalo riešenie mojeho problému tak:
IF 8.5> B Then
Do While 8.5 > B
     Pocet_dier = (((DV / (A * 2))) - 1)
     B = ( dlžka_valca - ( (Pocet_dier-1) * A * 2 ul ) ) / 2 ul
Loop
End If



Vytisknout stránku | Zavřít okno