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
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Mrtvola z bodu

UživatelPříspěvek
Peter Kovac

Poslat zprávu | Profil
Datum: 24.4. 2012 | Zobrazeno: 10468x
Konfigurace CATIA:

Text dotazu:
zdravim

potrebujem spravit mrtvolu z bodu - intersection. Zobral som si priklad z clanku na vysivanie stehu, kde je uvedene:

 Set oRefDatum = oPart.CreateReferenceFromObject(oJoin)

Set oDatum = oHSF.AddNewSurfaceDatum(oRefDatum)
oHB.AppendHybridShape(oDatum)
oHSF.DeleteObjectForDatum(oRefDatum)
ked to vsak aplikujem na moj kod, nefunguje

' Vytvorenie intersection bodu medzi plochou a axisom

' ---------------------------------------------------------
Set hybridShapeFactory1 = oPart.HybridShapeFactory
Dim hybridShapeIntersection1 As HybridShapeIntersection
Set hybridShapeIntersection1 = hybridShapeFactory1.AddNewIntersection(reference1,oCiara)
hybridShapeIntersection1.PointType = 0
hybridShapeIntersection1.ExtendMode = 3
hybridBody1.AppendHybridShape hybridShapeIntersection1

' Vytvorenie mrtvoly
' ---------------------------------------------------------

Set oRefDatum = oPart.CreateReferenceFromObject(hybridShapeIntersection1)
Set oDatum = hybridShapeFactory1.AddNewPoinDatum(oRefDatum)
HybridBody1.AppendHybridShape(oDatum)
hybridShapeFactory1.DeleteObjectForDatum(oRefDatum)


chybu mi vyhadzuje pri:

 Set oDatum = hybridShapeFactory1.AddNewPoinDatum(oRefDatum)


nemozem najst chybu... Aj ked som makro nahraval a pozrel, je to v podstate to iste...

Ing Jan Cinert

Poslat zprávu | Profil
[#2883] | Publikováno: 24.04. 2012 - 16:42
Opravte si AddNewPoinDatum na AddNewPointDatum :-)
Peter Kovac

Poslat zprávu | Profil
[#2886] | Publikováno: 25.04. 2012 - 09:38
...to bola teda chyba :-) ale aj tak mi to nefunguje :-o
Peter Kovac

Poslat zprávu | Profil
[#2889] | Publikováno: 25.04. 2012 - 11:13
alebo inak, ten bod potrebujem pre referenciu na dieru. Lenze, pri nahravani makra da bod ako referenciu len v pripade, ak sa jedna o bod, alebo mrtvolu - nie intersection (nemozem vybrat zo stromu, len klik na plochu, cim vznika konkretna referencia nepouzitelna pre makro). To iste je v pripade, ak chcem pre dieru pouzit axis a plochu (plane), kde namiesto referencie na axis hodi suradnice, co bude asi intersection medzi axisom a plane. Pre nazornu ukazku, ako vyzera makro pre dieru pri pouziti axisu a plane (obidve som vyberal zo stromu):

Set hole1 = shapeFactory1.AddNewHoleFromPoint(2102.819714, 973.344627, 35.222706, reference1, 6.000000)


da sa to nejako obist, alebo je moznost len vytvorit mrtvolu z intersection?
Ing Jan Cinert

Poslat zprávu | Profil
[#2890] | Publikováno: 25.04. 2012 - 11:18
A opravdu vám vzniká průsečík jako bod? Pokud by se vytvářela křivka, mohl by to být problém.

Můžete zkusit i další způsob - zkopírovat do schránky a vložit pomocí PasteSpecial. Výsledek je stejný.
Ing Jan Cinert

Poslat zprávu | Profil
[#2891] | Publikováno: 25.04. 2012 - 11:22
Uživatel odpovídá na příspěvek #2889:
Tak si ten bod vytvořte a jako referenci pro něj použijte ten průsečík nebo to co potřebujete.
Peter Kovac

Poslat zprávu | Profil
[#2892] | Publikováno: 25.04. 2012 - 12:13
Tak si ten bod vytvořte a jako referenci pro něj použijte ten průsečík nebo to co potřebujete

no zas tam nechcem mat plane, intersection a bod a este aj povodny axis. Vzniklo by zbytocne vela elementov a vlastne nemozem vytvorit ani referenciu na intersection pre ten bod, pretoze sa nan neda kliknut zo stromu, ale iba z plochy.

Jedina moznost bude asi ozaj len to copy/pastespecial.

Mimochodom, rad pouzivam "vnorene funkcie" (neviem ako to inak nazvat, tusim sa to volalo stack), tzn. ze ak vytvaram plane, potrebujem napr. bod k tomu plane, tak ten bod si vytvorim v menu plane (pravy klik a create), cize vytvori sa mi len jeden plane v strome v ktorom je vytvoreny aj bod. Avsak ak to nahravam ako makro, tak toto makro vytvori samostatne bod a samostatne plane. Nejde to nejak spravit?
Ing Jan Cinert

Poslat zprávu | Profil
[#2893] | Publikováno: 25.04. 2012 - 13:04
Já to moc nepoužívám ani normálně kvůli přehlednosti, ale určitě to jde udělat i v makru. Zkusil bych použít AppendHybridShape až u posledního objektu v prvním levelu stromu, ostatní použité by se měly vnořit pod něj.

A jinak ještě k té díře. Pro referenční bod díry potřebujete opravdu fyzický bod, a je jedno jestli to je Point nebo Intersection. Vy ale zřejmě mluvíte o intersection něčeho se skicovací rovinou při definici pozicované skici, to je něco jiného. Pokud před výběrem roviny vyberete bod, střed díry se sváže s tímto bodem nezávisle na počátku souřadného systému skici. Při použití pozicované skici se počátek jejího souřadného systému posune do vybraného bodu.

Souřadnice středu díry, které zaznamenalo makro jsou právě hodnoty vzdáleností nakliknutého bodu na gemetrii od počátku skici, kterým je promítnutí bodu 0,0,0 do skicovací roviny. Stačí použít sliding skicu, ale ak se pro správně napolohování musí použít point.
Peter Kovac

Poslat zprávu | Profil
[#2894] | Publikováno: 25.04. 2012 - 14:13
nie som si isty, ci som porozumel, ale nepouzival som nikde poziciovanu skicu. Skusim to takto vysvetlit:
Mam plochu (nejaky surface), a tento surface mi pretina ciara. Vsetko, co som spravil je, ze som vytvoril intersect medzi plochou a ciarou. Danym intersectom som spravil aj plane tangentny ku ploche. Ak chcem teraz definovat dieru, potrebujem plane a bod. Plane je bezproblemov, bod (intersect) vsak nejde vybrat zo stromu, ale len z pracovnej plochy, cize v makre nemozem pouzit referenciu. Pre priklad si spravte plane a na plane 2 body. Jeden klasicky "point" a jeden intersect ako bolo vysie uvedene. Pri definicii diery ide "point" vybrat zo stromu, intersect ide iba z plochy a to je ten problem. Ak intersect izolujem, uz ho mozem definovat aj zo stromu.
Ing Jan Cinert

Poslat zprávu | Profil
[#2895] | Publikováno: 25.04. 2012 - 18:44
Ten Intersect nepůjde zřejmě proto, že výsledkem může být i křivka nebo vícenásobná entita - díra by pak měla neplatnou referenci. Takže opravdu nezbývá než vytvořit i ten bod jako Point. Pokud chcete šetřit místem, bod dělat jako mrtvolu a zbytek smazat, ztratíte asociativitu a v případě modifikace budete muset dělat díry znovu.
Peter Kovac

Poslat zprávu | Profil
[#2898] | Publikováno: 26.04. 2012 - 09:21
len na doplnenie, to vytvorenie mrtvoly uz mi ide normalnym sposobom, chcelo ten len doplnit update partu pred tou funkciou...
Peter Kovac

Poslat zprávu | Profil
[#2899] | Publikováno: 26.04. 2012 - 09:31
este pomimo, je mozne v catscripte spravit aj funkciu na stisk klavesy? cize ak stalcim napr. "Q", vyhodi mi msgbox a ako spravim nasilne ukoncenie. Tzn. ak spravim cyklus, a nehcem, aby to dokoncilo, tak stlacim nejaku klavesu a ukonci makro.
Ing Jan Cinert

Poslat zprávu | Profil
[#2900] | Publikováno: 26.04. 2012 - 11:12
V CATScriptu asi neuspějete, myslím že nedokáže zachytávat klávesnici. Určitým způsobem jde nasimulovat stisk určité klávesy, ale obráceně ne. Musel byste přejít na jinou platformu.


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.