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

Náhodnosť u makra?

UživatelPříspěvek
Kamil

Poslat zprávu | Profil
Datum: 20.7. 2010 | Zobrazeno: 10559x
Konfigurace CATIA:

Text dotazu:
Ak si vytvorím už v otvorenom parte jednoduché makro ktoré mi iba vytvorím novú "PLANE" (určenú Angle/Normal to plane). Bude to vypadať iba takto? P.S.: Makrám vôbec nerozumiem.

Spustím Start Recording zvolím Language CATscript a nechám názov Macro1.
Urobím tvorbu Plane.
A zastavím nahrávanie makra.
Ale keď potom spustím toto makro tak mi to nejde.

Ing Jan Cinert

Poslat zprávu | Profil
[#877] | Publikováno: 20.07. 2010 - 09:09
Pokud potřebujete poradit s makry, je vždy lepší poslat zdrojový kód, resp. část kde je problém. (ale zase neposílat odněkud stažený 1000 řádkový kód, to nikdo luštit nebude).
Makro které vytvoříte někdy bude fungovat jen v tom modelu, kde bylo vytvořeno a do té doby, než smažete nebo přejmenujete elementy, se kterými se pracovalo. Pokud jej vytváříte v jednom modelu a zkoušíte v jiném, je velká pravděpodobnosz že fungovat nebude.
Pošlete zdroják, kouknu se.
Kamil

Poslat zprávu | Profil
[#884] | Publikováno: 20.07. 2010 - 10:24
Tak ten zdrojový kód, je úplne primitívny, ale aj tak mi to makro nejde spustiť:

Přiložené soubory:
novy_textovy_dokument.zip

Josef Kočí

Poslat zprávu | Profil
[#885] | Publikováno: 20.07. 2010 - 11:34
Takto by to melo jet. Musi existovat geom. set.

Sub CATMain()


Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim originElements1 As OriginElements
Set originElements1 = part1.OriginElements

Dim hybridShapePlaneExplicit1 As AnyObject
Set hybridShapePlaneExplicit1 = originElements1.PlaneXY

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(hybridShapePlaneExplicit1)

Dim Hbody As HybridBodies
Set Hbody = part1.HybridBodies

Dim GS1 As HybridBody
Set GS1 = Hbody.Item(1)

Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = GS1.HybridShapes

Dim hybridShapeFactory1 As Factory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim hybridShapeLineExplicit1 As HybridShape
Set hybridShapeLineExplicit1 = hybridShapeFactory1.AddNewDirectionByCoord(1#, 0#, 0#)

Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromObject(hybridShapeLineExplicit1)

Dim hybridShapePlaneAngle1 As HybridShapePlaneAngle
Set hybridShapePlaneAngle1 = hybridShapeFactory1.AddNewPlaneAngle(reference1, reference2, 45#, False)

hybridShapePlaneAngle1.ProjectionMode = False

GS1.AppendHybridShape hybridShapePlaneAngle1

part1.InWorkObject = hybridShapePlaneAngle1

part1.Update

End Sub


Kamil

Poslat zprávu | Profil
[#886] | Publikováno: 20.07. 2010 - 11:46
A ako a čo sa zmení aby mi urobilo určitý počet týchto PLANE, a to tak aby každú rotovalo vždy okolo náhodne vybranej osi (x,y,z) a o náhodne zvolený uhol v dopredu nastavenom rozmedzí, napr.: 30 až 80 stupňov?
Ing Jan Cinert

Poslat zprávu | Profil
[#887] | Publikováno: 20.07. 2010 - 12:17
Pravděpodobně máte zapnutý "Hybrid design", tzn. plochy a drátová geometrie se může vytvářet v Body. Doporučoval bych jej vypnout, kvůli tomu se vám myslím makro nahrálo nesprávně.
Nevím jaké jsou vaše zkušenosti s programováním obecně, ale to na co se ptáte, jsou naprosté základy. Rádi vám pomůžeme s určitým problémem, ale a to, abychom zde vysvětlovali Visual basic, už opravdu nezbývá čas. Zkuste si najít nějaký web, kde se o VB6 píše a něco si o něm přečíst.
Kamil

Poslat zprávu | Profil
[#888] | Publikováno: 20.07. 2010 - 12:43
No algoritmus mi problém nerobí len neviem čí mám postupovať tak že najskôr nahrám makro tvorby PLANE. A potom toto základné makro upravujem?
Ing Jan Cinert

Poslat zprávu | Profil
[#891] | Publikováno: 20.07. 2010 - 15:03
Já rekordér používám hlavně když potřebuju rychle nastavit potřebné instance a nepamatuju si jejich přesné názvy.
Kódy z rekordéru nejsou žádný zázrak a také rekordér nenahraje všechny úkony. Máte tedy dvě možnosti:
  • 1. Nahrát si nějaký základ rekordérem a ten pak upravit
  • 2. Začít psát všechno od začátku a čistě
A k algoritmu:
Jeden for cyklus s počtem rovin, které byste chtěl vytvořit. V cyklu bude kód, který vytvoří instanci roviny a vloží ji do setu. Dále se bude generovat náhodné číslo (0-2), ze kterého určíte osu rotace a druhé náhodné (30-80), které bude představovat úhel natočení. Vytvářené roviny si můžete pojmenovávat např X80, Z20 - podle osy a úhlu.

Josef Kočí

Poslat zprávu | Profil
[#905] | Publikováno: 20.07. 2010 - 19:10
K tomu co píše p. Cinert, jěště doporučuji začít nápovědou VB6. Je tam i dost příkladů, přímo řešené algoritmy.
Z napovědy po zadání klíčového slova "Random" cituji:

Sub RandGen()

Dim MyValue
Randomize ' Initialize random-number generator.
MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6.
End Sub


Nahrávání makra sebou přináší pěkný balast, někdy ani nemusí jít přehrát, viz příklad zakladatele příspěvku. Třeba v drawingu si s nahráváním ani něškrtnete.
Kamil

Poslat zprávu | Profil
[#906] | Publikováno: 20.07. 2010 - 19:13
Tak už som zohnal knihu Visual Basic 6 a idem skúsiť niečo napísať.
Kamil

Poslat zprávu | Profil
[#1008] | Publikováno: 07.08. 2010 - 17:06
Tak som si ten VB6 trocha naštudoval...
Zjednodušil som si svoj príklad...
Tvorím priamku definovanú dvoma bodmi...
Najskôr som si nahral makro tvorby tejto priamky... (CATScript)
Potom som skúšal editovať a podarilo sa mi to upraviť do tvaru aby mi koniec priamky umiestnilo vždy náhodne inam... (Začiatok som ponechal pevne v počiatku)
V príloha je video...
Potrebujem aby mi priamky lietali aj do mínusových hodnôt!
Musím si proste nejako programátorsky poradiť (viem ako)?
Alebo je nato tiež nejaká metóda?

Přiložené soubory:
nahodnost.zip

Ing Jan Cinert

Poslat zprávu | Profil
[#1009] | Publikováno: 07.08. 2010 - 19:01
Na generování náhodných přímek opravdu žádná metoda neexistuje. Všechno se musí napsat.
Kamil

Poslat zprávu | Profil
[#1010] | Publikováno: 07.08. 2010 - 19:55
Teraz ste ma nepochopil. (Potrebujem aby mi priamky lietali aj do mínusových hodnôt!)
Ing Jan Cinert

Poslat zprávu | Profil
[#1011] | Publikováno: 08.08. 2010 - 14:06
Pošlete, resp. napište sem část kódu, která vám dělá problém, ať vám můžu lépe poradit.


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.