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

selectelement2 - 3 - 4

UživatelPříspěvek
Peter Kovac

Poslat zprávu | Profil
Datum: 4.10. 2012 | Zobrazeno: 12142x
Konfigurace CATIA:

Text dotazu:
zdravim

chcem pri catvba interaktivny vyber, ale nejde mi to. V catscript s tym nebol problem. V pripade catvba mam tlacitko, na ktore ked kliknem chcem interaktivny vyber:

Dim Productdocument1 As ProductDocument

Set Productdocument1 = CATIA.ActiveDocument
Dim Product1 As Product
Set Product1 = Productdocument1.Product
Dim Selection As Selection
Set Selection = CATIA.ActiveDocument.Selection
Dim InputObjectType(0) As Variant
InputObjectType(0) = "Product"
Dim MySTATUS As String
Selection.Clear

MySTATUS = Selection.SelectElement2(InputObjectType, "Vyber produkt", False)

popripade ani ked zmenim, ako tu bolo v diskusii niekde pisane na:

MySTATUS = Selection.SelectElement3(InputObjectType, "Vyber produkt", True, CATMultiSelTriggWhenUserValidatesSelection, False)


ked uz som pri tom, aky je rozdiel medzi ponukanymi selectelement2, selectelement3 a selectelement4?

dakujem,

Michal

Poslat zprávu | Profil
[#3380] | Publikováno: 04.10. 2012 - 12:04
zkusil bych ještě
Dim vSelection as Variant
set vSelection = Selection 'nejsem si jistý jestli musí být na začátku set

a potom Váš kod
call vSelection.Clear
MySTATUS = vSelection.SelectElement2(InputObjectType, "Vyber produkt", False)

snad Vám to pomůže. Když tak zkuste připojit i chybovou hlášku...
Peter Kovac

Poslat zprávu | Profil
[#3381] | Publikováno: 04.10. 2012 - 12:57
niec je stale zle

pri mojom prvom zapise mi ako chybovu hlasku vypise:

"function or interface markde as restricted, or the function uses an Aotomation type not supported in Visual Basic"

ked tam dam to s vSelection, tak mi zamrzne Catia. Pritom ale vidim, ze v prikazovom riadku uz vypisuje "Vyber produkt", takze ten prikaz z casti funguje, len to zamrzne cele a neviem preco...
Peter Kovac

Poslat zprávu | Profil
[#3382] | Publikováno: 04.10. 2012 - 14:08
tak nepomaha zadeklarovat vselection ani ako variant a ani ako object, a dokonca ani ked necham len Dim vSelection.
Taktiez som skusal inputobject dat ako variant a aj ako string... Najhorsie je, ze catia zamrzne a musim restartnut! neviem, co s tym!
Michal

Poslat zprávu | Profil
[#3383] | Publikováno: 04.10. 2012 - 14:34
No tak to teda nevím. Zkusil jsem kód jak jste poslal + ten variant a u mě to funguje.

Sub main()

Dim Productdocument1 As ProductDocument
Set Productdocument1 = CATIA.ActiveDocument
Dim Product1 As Product
Set Product1 = Productdocument1.Product
Dim Selection As Selection
Set Selection = CATIA.ActiveDocument.Selection
Dim InputObjectType(0) As Variant
InputObjectType(0) = "Product"
Dim MySTATUS As String

Call Selection.Clear
Dim vSel As Variant
Set vSel = Selection

MySTATUS = vSel.SelectElement2(InputObjectType, "Vyber produkt", False)
End Sub


asi bych vytvořil nové makro a zkusil bych to znovu. Možná ještě zkontrolovat reference (tools\references) jestli máte zaškrtnutou referenci na InfInterfaces knihovnu. Ale tak to by mělo být.
Peter Kovac

Poslat zprávu | Profil
[#3384] | Publikováno: 04.10. 2012 - 15:13
tak ja neviem, ale nejde mi to... v pripade catscriptu alebo catvbs mi to ide, ale ked som priamo vo VBA editore (teda catvba) a dam to napr. do commandbuttonu, tak to zamrzne...:(

este k tym references, kde to presne najdem? tools/options/general/macros - external references, to je ono?
Ing Jan Cinert

Poslat zprávu | Profil
[#3385] | Publikováno: 04.10. 2012 - 15:42
Chyba je opravdu v deklaraci promenné Selection. Musí být deklarovaná jako Variant, je to známá chyba v API. V CATScriptu ani v .NET to nevadí, ale u VBA ano. Pokud by nefungoval Variant, zkusil bych ještě AnyObject. To samé u deklarace InputType.

Tedy

Dim oSelection As Variant '(nebo AnyObject)

Dim InputType() ' bez typu
Peter Kovac

Poslat zprávu | Profil
[#3386] | Publikováno: 04.10. 2012 - 16:03
takto vyzera kod:

Private Sub BuOK_Click()

Dim Productdocument1 As ProductDocument
Set Productdocument1 = CATIA.ActiveDocument
Dim Product1 As Product
Set Product1 = Productdocument1.Product
Dim Selection1 As Variant
Set Selection1 = CATIA.ActiveDocument.Selection
Dim InputObjectType(0)
InputObjectType(0) = "Product"
Dim MySTATUS As String

Call Selection1.Clear

MySTATUS = Selection1.SelectElement2(InputObjectType, "Vyber produkt", False)
End Sub

kde teda BuOK je sub pre command button. Kazdopadne mi to ale zamrzne a nic, musim restartnut... Neviem, ci je to bug alebo co. Na prerusenie nefunguje ani ctrl+break (ci to funguje iba v zacyklenych cykloch?).
Este sa chcem zaroven aj spytat, co sa tyka deklarovania premenych typu Productdocument atd. je mozne to spravit v spustacom "userform_initialize", alebo na zaciatku kodu v "option explicit"? Potrebujem to samozrejme ako globalne, resp. public, ale nefunguje mi to -> pyta opat zadeklarovanie, i ked tipujem, ze problem bude asi syntax, ale to len pomimo otazka...:)
Michal

Poslat zprávu | Profil
[#3387] | Publikováno: 05.10. 2012 - 12:14
Tak reference, které se makro odkazuje najdete v horním menu ve VBA prostředí menu Tools\Reference. Měla by fungovat zkratka Alt+T+R.
Nenapadá mě žádný důvod proč to nechce jet. Asi bych zkusil přeinstalovat VBA rozhraní v CATII.
Peter Kovac

Poslat zprávu | Profil
[#3388] | Publikováno: 05.10. 2012 - 12:35
vdaka za rady - uz to funguje, ten posledny kod je dobry (s tym variantom), len som musel prepnut moj form do showmodal=false.
Ing Jan Cinert

Poslat zprávu | Profil
[#3389] | Publikováno: 05.10. 2012 - 15:03
Já se k VBA dostanu už minimálně, ale jednou jsem se s tou deklarací neskutečně natrápil. Sice mě to nemrzlo, ale pořád hláška, že daná metoda není podporovaná.


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.