Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy CAD Studio [www.cadforum.cz]
Česky Slovensky English Deutsch
Přihlášení:
▶ Registrace

 právě nás čte: 3126 
RSS tipy RSS kanál - CAD tipy
RSS diskuze RSS kanál - CAD 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 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

Dosiahnutie rozmedzia požadovanej hodnoty

 Odpovědět Odpovědět archiv
Autor
hanc.mat Zobrazit panel
Nováček
Nováček

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 7
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace hanc.mat Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Téma: Dosiahnutie rozmedzia požadovanej hodnoty
    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í.
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
CAD Studio a.s.

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Online
Bodů: 17582
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Vladimír Michl Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 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)
CAD Studio a.s. - www.cadstudio.cz
(podporu najdete na helpdesk.cadstudio.cz)
Zpět nahoru
hanc.mat Zobrazit panel
Nováček
Nováček

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 7
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace hanc.mat Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 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č?
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
CAD Studio a.s.

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Online
Bodů: 17582
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Vladimír Michl Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 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)
CAD Studio a.s. - www.cadstudio.cz
(podporu najdete na helpdesk.cadstudio.cz)
Zpět nahoru
Navara Zobrazit panel
CAD Studio support
CAD Studio support
Avatar
CAD Studio a.s.

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1035
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace Navara Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 12.říj.2018 v 13:49
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ý.
Zpět nahoru
hanc.mat Zobrazit panel
Nováček
Nováček

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 7
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace hanc.mat Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 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
Zpět nahoru
hanc.mat Zobrazit panel
Nováček
Nováček

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 7
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace hanc.mat Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 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???


Upravil hanc.mat - 12.říj.2018 v 14:32
Zpět nahoru
hanc.mat Zobrazit panel
Nováček
Nováček

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 7
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace hanc.mat Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 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
Zpět nahoru
hanc.mat Zobrazit panel
Nováček
Nováček

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 7
Možnosti příspěvku Možnosti příspěvku   Poděkování (0) Poděkování0   Citace hanc.mat Citace  OdpovědětOdpověď Přímý odkaz na tuto zprávu Zasláno: 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
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 7970:VIPChybná hodnota kóty v přerušeném pohledu.
Tip 7083:VIPJak přepsat kótu Revitu numerickou hodnotou?
Tip 6935:VIPMakro pro získání měřítka strojařského rámečku.
Tip 7269:VIPDynamické pole z částí hodnot vlastností výkresu (Název, Předmět, Autor, Uživatelské)
Tip 5338:VIPAutomatický atribut s hodnotou souřadnice přepočtenou koeficientem (aritmetický výraz v textovém poli).
Tip 1984:Jak vrátit text kóty na skutečnou (asociativní) hodnotu?


 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 0,359 sekund.