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

PowerCopy + cislovanie

Kompletní přehled příspěvků v tématu PowerCopy + cislovanie řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Peter Kovac

Poslat zprávu | Profil
Datum: 16.3. 2012 | Zobrazeno: 10418x
Konfigurace CATIA:

Text dotazu:
Zdravim

Otazka ohladne PowerCopy:

Mam spravene powercopy, funguje bez problemov. Spravi co ma, t.j vystupom je nejaka geometria a chcel by som spravit, aby mi urcitu cast, konkretne "Line" cislovalo klasickym sposobom a nie, ako mam nazvanu -> cize ak pouzijem powercopy pri zapnutej funkcii repeat, tak features ostanu pod nazvom, akym som si zvolil, ale ciaru by som potreboval, aby klasicky cislovalo, tzn. Line.1, Line.2, Line.3 atd. a nie sposobom, ze mi vzdy ostane len nazov Line.1. Dovodom je, ze chcem tuto ciaru dalej vyuzit pre makro, ktore by sa opakovalo na zaklade poctu tychto ciar, resp. Line.x. Je to mozne?

Dakujem

Ing Jan Cinert

Poslat zprávu | Profil
[#2702] | Publikováno: 16.03. 2012 - 13:30
Nevím jestli to půjde, ale zkusil bych v definici parametrů najít atribut s názvem oné Line a publikovat ho. Pak by bylo možné při vkládání instancí zadat i název Line. Pokud tohle nepůjde, můžou se všechny Line jmenovat shodně, např. Line_for_makro, a makro si je nejprve najde a postupně přečísluje na Line_for_makro.1 až x. To by neměl být žádný problém.

Další možností by mohlo být použít knowledgeware template, kde by také mohl jít vybrat název line jako vstupní atribut.
Peter Kovac

Poslat zprávu | Profil
[#2703] | Publikováno: 16.03. 2012 - 14:59
Publikacia mi nesla, knowledgeware template nepoznam, ale precislovanie pomocou makra je vlastne vynikajuci napad. Otazkou pre mna ostava, ako :)
Premenovat sa da, neviem vsak, ako spravit, aby postupne preslo celym partom, naslo vsetky ciary, resp. pocet s rovnakym nazvomm, ale predovsetkym ako ich postupne premenovat, kedze maju vsetky rovnaky nazov. Sice co to spravim, nie som ale zrovna moc zrucny v makre.
Predpokladam, ze najprv zistim pocet opakujucich sa ciar s rovnakym nazvom (neviem ako ma kod vyzerat) a potom algoritmom na zaklade poctu jednotlivo premenujem, neviem vsak, ako to spravit aby to postupne premenovavalo... Postupne sa tym nejako "prehryziem", urcite by mi vsak pomohla nejaka pomoc...
Ing Jan Cinert

Poslat zprávu | Profil
[#2704] | Publikováno: 17.03. 2012 - 09:15
Pro vyhledání Line bude asi nejlepsi klasické vyhledávání, tedy (pro CATScript)
Set oSelection = CATIA.ActiveDocument.Selection

oSelection.Search("Type='Line' & Name='Nazev_line_z_power_copy'; all")

tím se vyhledají všechny line, pro jejich přejmenování pak použijete cyklus For
For i = 1 To oSelection.Count

oSelection.Item(i).Value.Name = "Line." & i
Next

De facto můžete dovnitř cyklu napsat i Vámi zamýšlené makro, které bude s Line pracovat, takže by se ani nemusely přejmenovávat.
Peter Kovac

Poslat zprávu | Profil
[#2705] | Publikováno: 19.03. 2012 - 08:07
kod vyzera nasledovne:

Sub CATMain()


Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("PartBody")

Set oSelection = CATIA.ActiveDocument.Selection
oSelection.Search("Type='Line' & Name='xLineA'; all")
For i = 1 To oSelection.Count
oSelection.Item(i).Value.Name = "xAxis." & i
Next

part1.Update

End Sub


sice makro nehlasi chybu, ale ani nic nespravi, resp. ako keby nenasiel ziadny vyber a nema co premenovat...
Ing Jan Cinert

Poslat zprávu | Profil
[#2706] | Publikováno: 19.03. 2012 - 11:28
Zkuste místo Type='Line' napsat Type='.Line'. Pro kontrolu si můžete nechat vypsat počet nalezených feature - MsgBox(oSelection.Count).
Peter Kovac

Poslat zprávu | Profil
[#2707] | Publikováno: 19.03. 2012 - 12:10
format
Type='.Line'
hlasi ako chybny. Pocet najdenych dava 0. Skusil som tiez len podla nazvu, snad sa da takto zapisat:

oSelection.Search("Name='xLineA'; all")

Ale tiez pocet najdenych 0.

Netreba nejako definovat, kde ma hladat? Teda v akom geometrickom set atd., ci toto hlada v celom parte?
Ing Jan Cinert

Poslat zprávu | Profil
[#2709] | Publikováno: 20.03. 2012 - 08:48
Ano, pokud byste to definoval jen názvem, je to správně. Kde hledat se určuje výrazem za středníkem, all - celý dokument, in - aktuálně vybraný element (např. set), scr - viditelné na monitoru atd.

Syntaxi si můžete ověřit ještě pomocí funkce Search v menu Edit. Vyberte typ elementu a zadejte atribut (Name = ) a kliknětě na search. Ve spodní části se pak objeví správně část syntaxe před středníkem, které je shodná s makrem.

Některé příklady na Search jsou i zde - http://www.catia-forum.cz/articles/?article_id=43
Peter Kovac

Poslat zprávu | Profil
[#2712] | Publikováno: 20.03. 2012 - 13:19
tak konecne, za pomoci toho spominaneho Search v menu Edit (je to pekne prehladne spravene) funguje takato syntax:
oSelection.Search("Type='Line' & Name=xLineA,all")


dakujem
Peter Kovac

Poslat zprávu | Profil
[#2713] | Publikováno: 20.03. 2012 - 14:45
no a narazil som opat na problem. Chcel som si spravit troska interaktivne prepisovanie a kod vyzera nasledovne:

Sub CATMain()

Dim Nazov1, Nazov2, Text, answer, answer2 As string

Nazov1="xLineB"
Nazov2="xAxisB."

Do

Nazov1=inputbox("Zadaj nazov, ktory ma byt premenovany","Napis nazov", Nazov1)
If Nazov1=False Then Exit sub
Nazov2=inputbox("Zadaj novy nazov","Napis nazov", Nazov2)
If Nazov2=False Then Exit sub

Set oSelection = CATIA.ActiveDocument.Selection
oSelection.Search("Name=Nazov1,all")

Text="Pocet najdenych elementov s nazvom '" & Nazov1 & "' je rovny: "& oSelection.Count &". Premenovat najdene elementy na '" & Nazov2 & "'?"
answer=msgbox(text, vbQuestion + vbYesNo, "Info")

'----
If answer=vbNo then
Exit sub
End if

'-----
If answer=vbyes then
For i = 1 To oSelection.Count
oSelection.Item(i).Value.Name = Nazov2 & i
Next
End if

answer2=msgbox("Premenovat dalsie elementy?", vbQuestion + vbYesNo, "Info")

Loop Until answer2=vbNo

End Sub


problem vsak nastal v tomto bode:
oSelection.Search("Name=Nazov1,all")


nemozem tam dostat jednoducho tu premennu, teda Nazov1, stale mi ho berie ako text a nie ako string s urcitym obsahom. Ide len o syntax, ale uz som skusil vsetko mozne a nie a nie to tam dostat...
Ing Jan Cinert

Poslat zprávu | Profil
[#2714] | Publikováno: 20.03. 2012 - 15:10
Search query také string, takže to musí být "Name=" & Nazov1 & ", all"
Peter Kovac

Poslat zprávu | Profil
[#2723] | Publikováno: 22.03. 2012 - 10:00
dakujem, funguje ;)

otazka dalsia, uz je to sice off topic, ale nadvazuje na predchadzajuce.

pri zadani do hladaneho nazvu, napr. toho xLineB zadam napr. *xLine*, najde vsetky elementy obsahujuce zadanu cast xLine. To chcem, len rad by som dosiahol to, ze prave oznacenu cast zo vsetkych najdenych elementov premenujem na novy nazov a zvysok nazvu ostane. Cize ako premenujem len cast nazvu.
Ing Jan Cinert

Poslat zprávu | Profil
[#2724] | Publikováno: 22.03. 2012 - 10:51
To je potom otázka metod objektu string, které se mohou lišit podle vývojového prostředí.

Takže např. Replace(string,find,replacewith[,start[,count[,compare]]]).


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.