Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Programujeme: Pokročilý Bounding Box

Publikováno: 14. září 2010 | Zobrazeno: 2885x
Rád bych navázal na článek Asociativní Bounding Box, kde jsme si ukázali, jak se dá pomocí makra poměrně rychle vytvořit ohraničující obálka tělesa či plochy. U tohoto příkladu se jednalo o nejjednodušší ze tří způsobů, jakým lze BB vytvořit. Pojďme si tedy všechny tyto způsoby ukázat a nastínit možnosti jejich použití. V článku jsou nově kromě obrázků použity i videoukázky pro lepší názornost.
Pozn. Makro pro vytvoření BB bylo napsáno (a je nadále vyvíjeno) za účelem rychlého návrhu bloků pro formovací nástroje.

BB definovaný třemi směry


BB určený automaticky
Tento způsob jsme vám předvedli posledně. Směry definičního kvádru BB jsou určeny osovým křížem. Makro si z něho "vytáhne" příslušné vektory, spočítá extrémy a z nich pak vytvoří BB podle minule uvedeného postupu.
Takto vytvořený BB ale většinou není ten nejmenší (s nejmenším objemem), který lze vytvořit. Pokud bychom tedy například potřebovali zjistit, jak velký polotovar potřebujeme pro konkrétní obrobek, nemohli bychom z BB vycházet. Tuto možnost pro vytvoření BB je tedy možné použít pouze pokud máme přesně určené tři, resp. dva směry. Jako příklad mohu uvést polotovar pro lisovací formu, kde známe směr formování a orientaci výlisku vzhledem ke stranám formy.

Nejmenší možný BB


BB určený osovým křížem
U tohoto způsobu se vytvoří nejmenší možný BB. Při zadávání vstupů tedy stačí vybrat pouze objekt pro BB a nic víc, o ostatní už se postará sama Catia. Využívá k tomu objekt Inertia, ve kterém jsou mimo jiné dostupné informace o poloze těžiště, hlavních osách. Po získání těchto informací se vytvoří BB již podle stejného postupu jako v prvním případě.
Tento výsledek již můžeme použít pro definici polotovaru potřebného k obrábění. Stačí určit potřebné přídavky a můžeme objednávat materiál. Tím jsme tedy vyřešili nedostatek prvního příkladu - máme nejmenší možný BB - ale v některých případech to opět pro stanovení polotovaru nebude stačit.

Minimalizovaný BB definovaný jedním směrem


BB určený jedním směrem
U již zmíněné lisovací formy totiž musíme respektovat směr formování. Dostáváme tedy úlohu, kdy máme definovaný jeden směr pro BB a druhý (třetí je pak již určen) dopočítat tak, aby byl výsledný BB co možná nejmenší. Tuto potřebnou "optimalizaci" jsme vyřešili následovně. Nejprve si vytvoříme libovolný BB, který bude mít jeden směr definovaný nám známým směrem a druhý směrem náhodně zvoleným. Poté budeme takto vytvořeným BB otáčet podle osy prvního směru v předem nastavených krocích o 90°. Při každém pootočení změříme objem BB a ukládáme výsledek (Přesnost výpočtu (krok natáčení) je omezena na 1°, v praxi je ale postačující 10° a méně. S větší přesností se však zvyšuje čas výpočtu). Na konci natočíme BB do polohy, ve které byl vypočten nejmenší objem. Celý postup si můžete prohlédnout ve videoukázce.

Ve finále si můžeme prohlédnout a porovnat BB vytvořené všemi třemi způsoby. Barevné rozlišení je následující:

Tři různé BB podle způsobů vytvoření
  • Zelená - nejmenší BB
  • Žlutá - BB definovaný osovým křížem
  • Modrá - optimalizovaný BB definovaný jedním směrem
Na obrázku je jasně vidět, jak se jednotlivé výsledné BB liší, a na první pohled je patrné, že zelený a tedy automaticky vytvořený BB je skutečně menší než dva zbývající.

Makro dále nabízí na výběr některý z předdefinovaných názvů pro BB (např. BOUNDING BOX, BLOCK CONCEPT, SEMIPRODUCT atd.) nebo jej můžeme pojmenovat jakkoliv jinak. Za název již vytvořeného BB se navíc přidává popis způsobu, jakým byl BB vytvořen.

Celá utilita je napsána na platformě VB2008 a otestována na V5R19. Jako vstup lze použít Body nebo samostatnou plochu, vybíráme vždy jednu z Face na vstupním objektu, pro definici směrů lze vybrat AxisSystem nebo Line (optimalizovaný způsob). Rychlost výpočtu závisí na složitosti vstupního Body/Plochy.