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

Mazanie Publikácii

UživatelPříspěvek
agaragar

Poslat zprávu | Profil
Datum: 16.8. 2012 | Zobrazeno: 9992x
Konfigurace CATIA:

Text dotazu:
Zdravím všetkých,

neviete mi poradiť, prečo tento kód nefunguje na mazanie publikacii prílušného pártu?


Sub CATMain()

Dim a As PartDocument
Set a = CATIA.ActiveDocument

Dim publ As Publications
Set publ = a.Product.Publications

Dim i As Integer

For i = 1 To publ.Count

publ.Remove (i)

Next

End Sub


Vďaka za každú radu.

Majte sa

Ing Jan Cinert

Poslat zprávu | Profil
[#3183] | Publikováno: 16.08. 2012 - 18:29
Tohle funguje:


Sub CATMain()


Set oPubs = CATIA.ActiveDocument.Product.Publications

Do While oPubs.Count >= 1

For i = 1 To oPubs.Count

On Error Resume Next
oPubs.Remove(oPubs.Item(i).Name)

Next

Loop

End Sub


Pravděpodobně je chyba v API, jakmile je víc než jedna publikace, u metody Item to hodí chybu. Takže to pustím víckrát a testuju počet publikací. Ještě by to chtělo doošetřit zacyklení nějakou podmínkou s max. počtem cyklů.
agaragar

Poslat zprávu | Profil
[#3185] | Publikováno: 16.08. 2012 - 18:55
Vďaka, ja som dával do remove číslo a v tvojom makre sa tam uvádza meno a to mi pomohlo.

Rozmýšlal som nad tým došetriť zacyklenie a v tom mi napadlo toto:
Myslím, že on ak má napr. 5 publikácii
a vymaže sa prvá je ich už len 4 a každým
cyklom sa zmenšuje tento počet, ale i nadobudne
až číslo 5 a ono to tam už nie je,
preto vypíše chybu, takto mi to funguje, ak mažem všetky publikácie.
Mažem vždy prvú a postupne ubúdajú...

Toto je upravený kód od teba:

Sub CATMain()

Set oPubs = CATIA.ActiveDocument.Product.Publications

For i = 1 To oPubs.Count

oPubs.Remove (oPubs.Item(1).Name)

Next

End Sub

Vďaka ešte raz.
Ing Jan Cinert

Poslat zprávu | Profil
[#3186] | Publikováno: 17.08. 2012 - 14:14
V tom případě by to stačilo i otočit, tedy

For i = oPubs.Count To 1


oPubs.Remove (oPubs.Item(i).Name)

Next


Mě to ještě trochu zlobilo, ve stromu publikace zdánlivě zůstávaly i po smázání, ale přitom už neexistovaly (zmizely až když jsem otevřel dialog s pro jejich editaci a zavřel ho).
agaragar

Poslat zprávu | Profil
[#3187] | Publikováno: 17.08. 2012 - 17:15
Veru chcel som sa spýtať, že pročo sú tam stále zobrazené keď už neexistujú, ale myslel som si, že to iba na V5R19 SP2 to robí a že inak to bude fungovať korektne, v strome ale skúšal som to čo píšeš, že zmiznú iba ak sa otvoria publikácie a zavrú.
Skúšal som, ak sa to uloží, zavte a znova otvori, tak zmiznú samé, ale nie je to moc praktické.

Ani part.update to nezregeneruje, tak aby sa refres-li tie publikácie.

A inak s tým FOR je to dobrý nápad, takto obrátene som to ešte nikdy nedefinoval vďaka za TIP.
Ing Jan Cinert

Poslat zprávu | Profil
[#3188] | Publikováno: 17.08. 2012 - 23:14
Já to dělám na R19 SP9 HF19 a taky s chybou, to bude všude.

A ten obrácený FOR je jen programování...


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.