Zjednodušení CATVBA
Kompletní přehled příspěvků v tématu Zjednodušení CATVBA řazený podle data jejich publikace na fóru.
Uživatel | Příspěvek |
Pavel Krsek Poslat zprávu | Profil |
Datum:
28.6. 2012
| Zobrazeno:
12758x Konfigurace CATIA: Text dotazu: |
Ing Jan Cinert Poslat zprávu | Profil |
[#3063]
| Publikováno:
28.06. 2012 - 19:26 Jestli chcete opravdu konkrétně měnit jen výšku, tak si do formu dejte rozbalovací seznam a výšku vybírejte z něj. Mít na každou výšku tlačítko je dost nepraktické.
A ta "omáčka", které vám zjišťuje to či ono, se dá pohodlně napsat do funkcí, které pak zavoláte u každého skriptu v jednom řádku a nemusíte to psát pořád dokola. Napíšete si např funkce ZjistiTypDokumentu, která vám bude vracet řetězec podle toho co je otevřené (prázdný řetezec, když nebude otevřeno nic). Tato funkce může vracet i vrcholový objekt jako Part, Product, DrawingRoot atd. Já mám v .NET vytvořené vlastní knihovny, které si najdou co potřebují, a pak si jenom jednoduše sahám pro to, co potřebuju. V kódu to pak jsou dva řádky... |
Pavel Krsek Poslat zprávu | Profil |
[#3065]
| Publikováno:
28.06. 2012 - 20:57 Dekuji za odpoved.
S tou kostickou se zmenou vysky jsem to udaval jako priklad, takze s tou rozbalovaci nabidkou to asi nepude. Co se tyka te funkce, tak rozumim tomu dobre tak, ze: Ve MVB 6.0 napr. do Zalozky General zadam: Function dekla()
bla,bla,bla End Function
a pak u codu k tlacitku zadam: Private Sub Buttom_xxx_Click() a zde bude odkaz - pozadavek na spusteni nadefinovane funkce? Jak to bude vypadat? Diky za radu. |
Ing Jan Cinert Poslat zprávu | Profil |
[#3066]
| Publikováno:
29.06. 2012 - 08:41 Velmi zjednodušeně třeba takhle. V tomto případě nejde o funkci, ale o proceduru (funkce vrací hodnotu).
Dim oDoc As Document Dim sDocTyp As String Sub GetDoc() V hlavnim kodu potom bude: Sub K_Tlacitku_Click() Do funkci si ještě můžete dát různá ošetření atd. |
Pavel Krsek Poslat zprávu | Profil |
[#3069]
| Publikováno:
29.06. 2012 - 14:25 Diky za pomoc.
Jakmile po dane uprave viz. Vas prispevek spustim makro, tak v hlavnim kodu u radku: GetDoc() dostanu chybu - "Compile error: Syntax error" |
Ing Jan Cinert Poslat zprávu | Profil |
[#3070]
| Publikováno:
29.06. 2012 - 15:29 Aha, závorky pryč, v CATVBA se u volání funkce neuvádí... To je zvyk z VB.NET. |
Pavel Krsek Poslat zprávu | Profil |
[#3071]
| Publikováno:
29.06. 2012 - 16:13 Diky.
Bez zavorek to jiz funguje, tj. makro vykona proceduru, ale problem je v tom, ze po vraceni do hlavniho kodu nezna promenne z procedury. Priklad: když do vaseho makra doplnim MsgBox Sub GetDoc()................... tak, dostanu nazev partu. Ale když stejny MsgBox zaradím do hlavniho kodu za "Getdoc", tak dostanu hlasku "....424:Object required" s odkazem chyby na radek MsgBox v hlavnim kodu. |
Ing Jan Cinert Poslat zprávu | Profil |
[#3072]
| Publikováno:
30.06. 2012 - 12:23 Říká Vám něco globální a lokální proměnná? Pokud máte proměnnou deklarovanou uvnitř procedury, hlavní kód ji nezná - platí jen lokálně uvnitř procedury, proto ta chyba. Proměnná oDoc musí být deklarovaná v hlavním kódu.
Ve skutečnosti je to ještě ještě o něco složitější, deklarace může mít různý zápis. Výraz Dim pouze rezervuje místo v paměti pro proměnnou. Pak jsou ještě další výrazy, např. Private, Public, kterými určujeme přístupnost proměnné pro ostatní části projektu. |
Pavel Krsek Poslat zprávu | Profil |
[#3073]
| Publikováno:
02.07. 2012 - 06:46 Co se tyka globalnich a lokalnich promennych, tak to mi opravdu moc nerika. Snad se to doucim pozdeji.
Muzu pro pochopeni poprosit o priklad. Napr. kdyz mam: Sub Alfa() a chci aby po zavolani procedury se mi v boxu ukazalo jmeno aktivniho partu: Private Sub CommandButton1_Click() Dekuji moc. |
Ing Jan Cinert Poslat zprávu | Profil |
[#3074]
| Publikováno:
02.07. 2012 - 08:33 Takhle by to mělo být OK. Proměnná partDocument1 je deklarovaná globálně, proto je viditelná ve všude, tj. i v sub Alfa. Pokud by to bylo obráceně, tedy proměnná by byla deklarovaná uvnitř Alfa, nebyla by viditelná v hlavním programu. |
Pavel Krsek Poslat zprávu | Profil |
[#3075]
| Publikováno:
02.07. 2012 - 08:40 Problem je ale v tom, ze takhle to nefununguje a po spusteni dostanu hlasku 424(viz.nahore) s chybou na radku MsgBox. |
Ing Jan Cinert Poslat zprávu | Profil |
[#3076]
| Publikováno:
02.07. 2012 - 11:06 Já jsem si toho všimnul až teď, deklaraci proměnné musíte mít úplně na začátku, vy ji máte zase uvnitř CommandButton1_Click, tj. opět jen jako lokální pro tento Sub. globální proměnné musejí být úplně na začátku.
Příklad: ' zacatek kodu Tohle patří spíš do obecných základů programování, bez toho budete občas narážet :-) |
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.