Rovnice souřadnic bodu v makru
Kompletní přehled příspěvků v tématu Rovnice souřadnic bodu v makru řazený podle data jejich publikace na fóru.
Uživatel | Příspěvek |
Michal Nytra Poslat zprávu | Profil |
Datum:
28.1. 2018
| Zobrazeno:
7335x Konfigurace CATIA: V5R20 Text dotazu: |
Ing Jan Cinert Poslat zprávu | Profil |
[#6408]
| Publikováno:
28.01. 2018 - 17:13 Dobrý den,
vytvoření formule rekordér nenahraje. Formule se vytváří vlastností Create formula objektu Relations .
Syntaxe je pak následující: oPart.Relations.CreateFormula("nazev", "komentář",rízeny_parametr,"tělo formule"). kde rizeny_parametr je parametr bodu, tedy jeho souřadnice.
"tělo formule" je textový zápis rovnice tak, jak byste jej zadával ve formula editoru (pozor na apostrofy a správnou syntaxi...) |
Michal Nytra Poslat zprávu | Profil |
[#6409]
| Publikováno:
28.01. 2018 - 17:49 Dobrý den,
a jak se prosím mohu odkázat na souřadnice vytvořeného bodu, abych mohl správně zadat řízený parametr? Rovnici jsem zvládl vytvořit např. pro velikost vysunutí, ale s bodem a souřadnicemi si nevím rady |
Michal Nytra Poslat zprávu | Profil |
[#6410]
| Publikováno:
28.01. 2018 - 18:08 Tak už jsem objevil způsob
A mohl se prosím ještě zeptat na způsob, jak do reference vložit osu souřadného systému, např. osu Z? Kód níže nefunguje
|
Ing Jan Cinert Poslat zprávu | Profil |
[#6411]
| Publikováno:
28.01. 2018 - 18:42 Tohle samozřejmě fungovat nebude - metoda GetZAxis vrací pole s vektory pro osu Z, podívejte se do dokumentace API než začnete zkoušet.
Jediný způsob, jak referenci vytvořit přímo z osy Z axis systému, je použití metody CreateReferenceFromBRepName. U této metody se ale musí poměrně složitě poskládat název BRep elementu (zkuste si rekordérem nahrát a podívat se, jak to vypadá). Kdysi jsem se o to pokoušel, ale nepřišel na přesná pravidla syntaxe - sice se mi reference vytvářely, ale často z jiné osy než jsem chtěl. Od té době jsem znovu nezkoušel. Dá se ještě použít metoda GetZAxisDirection, což vrací přímo refenci, která osu určuje (line, plane). Pokud ale není zadaná, je to opět nepoužitelné. Pak nezbývá než si zjistit vektor, vytvořit direction a podle něj tvořit dál. V tomto případě ale nebude vazba mezi Axis systémem a vytvářenou geometrií. |
Ing Jan Cinert Poslat zprávu | Profil |
[#6412]
| Publikováno:
28.01. 2018 - 19:11 Ještě přidávám příklad, můžete si to vyzkoušet sám. V modelu je vytvořený AxisSystem.1. Použiju syntaxi pro vytvoření reference z BRep názvu
oPart.CreateReferenceFromBRepName("REdge: (Edge: (Face: (Brp:(AxisSystem.1; XXX; None:(); Cf11:()); Face: (Brp: (AxisSystem.1; YYY); None:();Cf11:()); None:(Limits1:(); Limits2:()); Cf11:()); WithPermanentBody; WithoutBuildError; WithSelectingFeatureSupport; MFBRepVersion_CXR15)", axisSystem1) .
Když za XXX a YYY dosadíte čísla od 1 do 3, dostanete podle kombinace následující: 1 - 3 : osa X 2 - 1 : osa Y 3 - 2 : osa Z Když čísla prohodíte, otočí se směr reference. Já narazil na to, že i jiného Axisu už tohle pravidlo neplatilo, dal jsem kombinaci 1 - 3 a místo osy X mi to vrátilo osu Y apod. (Pozn. vytahoval jsem sice roviny, ale předpokládám, že u os můžebýt chování stejné). A pozor - na konci názvu někam zmizela tečka u axisSystem1!! Je zde velká řada neznámých a spolehlivost této metody proto nepovažuju za 100%. |
Michal Nytra Poslat zprávu | Profil |
[#6413]
| Publikováno:
29.01. 2018 - 06:42 Děkuji za odpověď. Rekordér píše právě Vámi výše zmíněný příkaz, jeho syntaxi jsem ale úplně nepochopil, takže jsem se to snažil nějak obejít.
GetZDirection funguje bez problémů, výsledkem je rovina xy. Bohužel, funkce Helix neumožňuje jako volbu směru šroubovice rovinu, resp. její normálu. |
Ing Jan Cinert Poslat zprávu | Profil |
[#6414]
| Publikováno:
29.01. 2018 - 07:50 Tak s tím už se dá něco dělat. Pokud máte rovinu, dá se jednoduše vytvořit line kolmá k této rovině a tu už můžete použít jako osu. Je to sice o krok navíc, a ale někdy to prostě jinak nejde. |
Uživatel nepřihlášen
Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.