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: 2760 
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

Téma uzavřenoDosiahnutie rozmedzia požadovanej hodnoty

 Odpovědět Odpovědět archiv
Autor
hanc.mat Zobrazit panel
Diskutér
Diskutér

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 11
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 s.r.o.

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Online
Bodů: 19357
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 s.r.o. - www.cadstudio.cz
(podporu najdete na helpdesk.cadstudio.cz)
Zpět nahoru
hanc.mat Zobrazit panel
Diskutér
Diskutér

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 11
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 s.r.o.

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Online
Bodů: 19357
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 s.r.o. - www.cadstudio.cz
(podporu najdete na helpdesk.cadstudio.cz)
Zpět nahoru
Navara Zobrazit panel
CAD Studio support
CAD Studio support
Avatar
CAD Studio s.r.o.

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1418
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
Diskutér
Diskutér

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 11
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
Diskutér
Diskutér

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 11
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
Diskutér
Diskutér

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 11
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
Diskutér
Diskutér

Přihlášen: 08.říj.2018
Lokalita: Slovensko
Používám:
Inventor 2018
Stav: Offline
Bodů: 11
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 1984:Jak vrátit text kóty na skutečnou (asociativní) hodnotu?
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).


 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,223 sekund.