Vb net Hole
Uživatel | Příspěvek |
Pavel Krsek Poslat zprávu | Profil |
Datum:
16.12. 2015
| Zobrazeno:
10583x Konfigurace CATIA: Text dotazu: oHole.BottomType = catVHoleBottom Otvor script udělá, ale s rovným dnem tj. daný řádek ignoruje. Nevíte někdo jak na to? Je v pořádku, že musím danou hodnotu deklarovat tj.: Dim catVHoleBottom
Děkuji za radu. |
Ing Jan Cinert Poslat zprávu | Profil |
[#5543]
| Publikováno:
16.12. 2015 - 12:01 Typy děr a podobné jiné vlastnosti jsou tzv. enumerace. Ve VBA to stačí uvádět jen takhle jednoduše, v .NET se jen použije enumerace s daným typem. Mělo by ji to i napovědět, tj. po napsání názvu enmurace se za tečkou rozbalí jednotlivé typy.
V .NET je to pak takto: oHole.BottomType = CatHoleBottomType.catVHoleBottom |
Pavel Krsek Poslat zprávu | Profil |
[#5544]
| Publikováno:
16.12. 2015 - 12:26 Děkuji moc.
Už to chodí. |
Pavel Krsek Poslat zprávu | Profil |
[#5556]
| Publikováno:
06.01. 2016 - 09:53 Dobrý den,
ještě mám prosím problém s přiřazením reference k ButtomLimit - catUpToPlaneLimit. Ve VBA to chodilo přes příkaz: oBottomLimit.LimitingElement = LimitFace. Ve vb.net mám script, kde vyskočí chyba na posledním řádku (nevím také, zda-li musím vytvářet referenci LimitFaceRef - ve VBA stačilo jen LimitFace): Status = oSelection.SelectElement2(InputObjectType, "Select limit face", True) Děkuji moc za radu. |
Ing Jan Cinert Poslat zprávu | Profil |
[#5557]
| Publikováno:
06.01. 2016 - 10:43 Tady bývá většinou problém s vytvořením reference přes CreateReferenceFromBrepName. Pokud nevybíráte plochy z jiného partu (v rámci sestavy), dá se použít přímo z výběru reference - místo Selection.Item().Value se použie ...Item().Reference . Pak to vrací přímo objekt reference.
Vytváření referencí přes funkce CreateReference... používán jen případě, že přitom nepoužívám výběr, tj. např. při použití existujících známých publikací apod. Pokud geometrii vybírá uživatel, lze použít výše uvedené. V každém případě je dobré dopsat kousek kódu, kde si ověříte, že vytvořená reference je skutečně ta, kterou chcete. Ona se totiž často vytvoří bez chyby, ale nejde použít, resp. CATIA ji nezkousne. |
Pavel Krsek Poslat zprávu | Profil |
[#5558]
| Publikováno:
06.01. 2016 - 10:49 Děkuji za radu.
Zkusil jsem změnit na: Dim LimitFace = oSelection.Item(1).Reference ............ ale u posledního řádku dostanu hlášku viz. příloha. |
Ing Jan Cinert Poslat zprávu | Profil |
[#5559]
| Publikováno:
06.01. 2016 - 11:54 V jakém jste kontextu? Jen v Partu nebo v sestavě? V partu by to mělo být OK....
Zkuste referenci použít s jinou funkcí, např. Offset. Když nebude fungovat, je špatně vytvořená. Jinak podle API je očekáván typ Reference. |
Pavel Krsek Poslat zprávu | Profil |
[#5561]
| Publikováno:
06.01. 2016 - 12:25 Jsem v part designu - part v samostatnem oknu. Reference je asi v pořádku. Zkusil jsem:
Dim Thickness = oShapeFactory.AddNewThickSurface(LimitFace, 1, 5, 5)
a thickness se provedl korektně. K té referenci - já jsem něvěděl, že jde použít u oSelection.Item(1) hodnota Reference, tak jsem to složitě nahrazoval přes CreateReferenceFromBRepName. |
Ing Jan Cinert Poslat zprávu | Profil |
[#5563]
| Publikováno:
06.01. 2016 - 12:33 Zkuste změnit typ limitu na CATUpToSurfaceLimit. Když ani to nepomůže, zkuste si to manuálně a nahrát rekordérem a pak se do toho podívejte, třeba je tam nějaký zádrhel.
Jinak CreateReferenceFromBRepName se musí použít jen v sestavě, tam jiná možnost není. |
Pavel Krsek Poslat zprávu | Profil |
[#5564]
| Publikováno:
06.01. 2016 - 13:29 CATUpToSurfaceLimit take nefunguje - viz. stejná hláška Member not found.
Recorder jsem zkusil a hodnoty mám stejné - skoro stejný script, když pustím ve VBA, tak jde OK, ale tady ve vb.net to za nic neprojde? Je jedno, zda-li se napíše: oLimit.LimitingElement = LimitFace nebo oLimit.LimitingElement(LimitFace) ? |
Pavel Krsek Poslat zprávu | Profil |
[#5565]
| Publikováno:
06.01. 2016 - 13:39 Zkusil jsem místo k ploše jako limit použít rovinu XY, viz.:
Dim originElements1 = oPart.OriginElements ale pořád stejná hláška. Ach, jo. |
Ing Jan Cinert Poslat zprávu | Profil |
[#5568]
| Publikováno:
07.01. 2016 - 08:13 K předchozímu příspěvku:
oLimit.LimitingElement(LimitFace) je špatně, LimitingElement není metoda, ale vlastnost, proto vždy musí být přiřazení oLimit.LimitingElement = LimitFace |
Ing Jan Cinert Poslat zprávu | Profil |
[#5569]
| Publikováno:
07.01. 2016 - 08:18 Chyba byla v typu Limitu. V API je sice napsáno, že je vyžadovaná reference, ale ne jako typ, pouze jako vstup. Takže poprvé jste měl chybu v syntaxi - volal jste neexistující metodu, a podruhé jste už přiřazoval správně, ale špatný typ.
Takhle to funguje: oDoc = CATIA.ActiveDocument |
Pavel Krsek Poslat zprávu | Profil |
[#5571]
| Publikováno:
07.01. 2016 - 09:23 Děkuji.
Zatím mi to pořád nejde. Zkusil jsem udělat úplně nový projekt s vaším scriptem, ale mám problém s deklarací oLimit. Viz. hláška. Jaké musím mít naiportované knihovny? Já mám nyní: Imports INFITF |
Ing Jan Cinert Poslat zprávu | Profil |
[#5572]
| Publikováno:
07.01. 2016 - 11:49 Klidně dejte oLimit jako Object , to půjde taky. Jinak typ HybridShape je jakýkoliv plocha nebo wireframe element, je v knihovne HybridShapeTypeLib, která je ale od R24 v seznamu COM referencí pod názvem začínajícím CATGsm... |
Pavel Krsek Poslat zprávu | Profil |
[#5573]
| Publikováno:
07.01. 2016 - 12:18 Pořád jsme bohužel na tom stejně. Typ je tedy object. Ve space je jeden part (v příloze) - pad ve kterém je Hole-Blind(neprůchozí) - spustím script (označím hole a pak označenou plochu jako limitu) a zase stejná hláška viz. začátek (na řádku ....=oLimit)(Member not found). Celý script v Console Aplication:
Imports INFITF |
Ing Jan Cinert Poslat zprávu | Profil |
[#5575]
| Publikováno:
07.01. 2016 - 13:56 Proč jste změnil LimitMode na catUpToPlane? Já tam měl catUpToSurface...
Jestli vybíráte plochu, tak je jasné, že to nemůže fungovat. A zkuste oHole nadeklarovat jako typ Hole. Takhle si jen přebírá strukturu z objektu oSelection a to může být také problém. Podle chyby to vypadá, že daná vlastnost v objektu není - Member not found. Všiml jsem si že nikde u deklarací neuvádíte typy a to je špatně. Takže Dim oHole As Hole = ... |
Pavel Krsek Poslat zprávu | Profil |
[#5576]
| Publikováno:
08.01. 2016 - 06:19 Tak konečně. Problem byl opravdu jen v tom, že Hole neměl deklaraci.
Jinak LimitMode funguje jak s catUpToPlaneLimit tak s catUpToSurfaceLimit. Ve VBA ta tak taky bylo. Mockrát děkuji. |
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.