Již 10.000+ CAD tipů.
Přes 118.000 registrovaných u nás, celkem 1.091.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.
Diskuzní fórum, poradna
?CAD diskuze, rady, výměna zkušeností

Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
|
Odpovědět ![]() |
archiv |
Autor | |
hanc.mat ![]() Diskutér ![]() Přihlášen: 08.říj.2018 Lokalita: Slovensko Používám: Inventor 2018 Stav: Offline Bodů: 11 |
![]() Zasláno: 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í. ![]() |
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21891 |
![]() |
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
|
|
![]() |
|
hanc.mat ![]() Diskutér ![]() Přihlášen: 08.říj.2018 Lokalita: Slovensko Používám: Inventor 2018 Stav: Offline Bodů: 11 |
![]() |
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č? |
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21891 |
![]() |
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)
|
|
![]() |
|
Navara ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
ARKANCE support ![]() ![]() Arkance Systems Přihlášen: 08.zář.2008 Lokalita: ČR (Pha) Používám: Inventor Stav: Offline Bodů: 1637 |
![]() |
Nevystačil byste si jenom s parametry? Zkuste se podívat na tohle vlákno:
Řeší se tam sice zábradlí, ale princip je stejný.
|
|
![]() |
|
hanc.mat ![]() Diskutér ![]() Přihlášen: 08.říj.2018 Lokalita: Slovensko Používám: Inventor 2018 Stav: Offline Bodů: 11 |
![]() |
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 ![]() 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 |
|
![]() |
|
hanc.mat ![]() Diskutér ![]() Přihlášen: 08.říj.2018 Lokalita: Slovensko Používám: Inventor 2018 Stav: Offline Bodů: 11 |
![]() |
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??? Upravil hanc.mat - 12.říj.2018 v 14:32 |
|
![]() |
|
hanc.mat ![]() Diskutér ![]() Přihlášen: 08.říj.2018 Lokalita: Slovensko Používám: Inventor 2018 Stav: Offline Bodů: 11 |
![]() |
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 |
|
![]() |
|
hanc.mat ![]() Diskutér ![]() Přihlášen: 08.říj.2018 Lokalita: Slovensko Používám: Inventor 2018 Stav: Offline Bodů: 11 |
![]() |
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 ![]() |
|
![]() |
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět ![]() |
|
Přejít na fórum | Oprávnění fóra ![]() Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru |
Stránka byla vygenerována za 0,379 sekund.