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

Aktuální datum a jméno designera do výkresu

UživatelPříspěvek
LIbor Šoupal

Poslat zprávu | Profil
Datum: 19.7. 2017 | Zobrazeno: 9128x
Konfigurace CATIA: V5R24

Text dotazu:
Dobrý den,
Rád bych se zeptal, zda existuje nějaká finta, jak do vzorového výkresu (šabloby) vložit automaticky aktuální datum a jméno designera (dle přihlášeného uživatele). Makro by to asi zvládlo, ale s tím nemám dost zkušeností.
Díky za radu
Libor

Přiložené obrázky:

Břeťa Doležal

Poslat zprávu | Profil
[#6259] | Publikováno: 20.07. 2017 - 13:27
Někdy pomůže GetEnvVariableValue() z řetězcových operací.

V mém případě např.: GetEnvVariableValue("USER_HOME") dá cestu do dokumentů, pokud bývá stejná, tak by se dal uživatel z cesty dostat.

Ale spíš bych řešil přes makro než takto krkolomně, abych případně vepisoval i vícero informací najednou.

Většinou se toto řeší přes PLM systémy (spojení parametrů-attributů v PLM s parametry v CATII). Pro menší firmy bez PLM je asi nej použít makro. Makro by byl vstupní formulář s nějakými vstupními textboxy, comboboxy a tlačítko na nasypání dat do Catie a případné další vychytávku (tisk *.pdf po schálení, apod...)

Přiložené obrázky:

Ing Jan Cinert

Poslat zprávu | Profil
[#6260] | Publikováno: 20.07. 2017 - 13:47
Dobrý den,

tohle je jednoznačně úkol pro makro. Pokud máte PDM/PLM, bývá toto většinou součástí integrace do CATIA, ale lze i pomocí makra. Jak píše kolega Doležal, informace většinou bývají uložené v parametrech (výkresu nebo partu/sestavy) a jde jen o to, dostat je to textů v razítku.

Pro představu ukázka již hotové řešení (na obrázku), kde se dá nakonfigurovat přenos atributů do razítka (kromě přenosu to zvládne i změnu formátu výkresu). Výhoda tohoto je, že se dá použít na již existující razítko a parametry.




Přiložené obrázky:

LIbor Šoupal

Poslat zprávu | Profil
[#6262] | Publikováno: 20.07. 2017 - 14:27
Uživatel odpovídá na příspěvek #6260:

Dobrý den,
děkuji za Vaši promptní reakci, tohle makro je krásná věc, ale když si představím, že ho budu muset obhajovat a počítat úspory pro nákup, tak to radši budu dělat ručně :-) . Obzvlášť když ostatní parametry již máme vyřešené. Umístily jsme je do vlastnosti partu a od tamo je natahujeme do výkresu.
Potřeboval bych tedy jednoduché makro, které po spuštění načte do textových polí výkresu USERNAME a DATE
Bylo by něco takového možné?
děkuji
Břeťa Doležal

Poslat zprávu | Profil
[#6263] | Publikováno: 21.07. 2017 - 07:12
Napsat makro na vyplnění USERNAME a DATE je otázkou několika desítek minut, pokud nebudete řešit všechny detaily toho co může nastat - spuštění makra mimo CATDrawing, více sheetů, verze Catie, apod......
Pokud budete chtít i stabilitu od makra a třeba i postihnout více listů a více druhů rámečků, apod... tak musíte řešit šiřší kontext a zde už to bude spíše několik hodin, protože je třeba si i minimálně vyjasnit zadání s tím, co všechno očekáváte od makra.
Pokud se do toho budete chtít dát sám, tak to není zas až tak složité a za pomoci tohoto fóra byste to asi dal i dohromady. Zásadní jsou asi tyto věci

'uživatel:
Set wshNet = CreateObject("WScript.Network")
strUzivatel = wshNet.UserName
'datum pomocí funkce
mujdatum = Date
'a už jde jen o to nasypat údaje Do CATIE:
drwAutor, drwDate As DrawingText
drwAutor.Text = strUzivatel
drwDate.Text = mujdatum


Myslím si, že ukecat vedoucí, vzít si do firmy na týden brigádníka co umí VBA by nemuselo být tak těžké. Ev. si zaplatit makro od externisty (DPP) a následně si jej už jen samostatně udržovat. Pokud je makro již hotové, tak jej pochopit a obstarávat už není zas tak těžké. Většinou jde jen o to poupravit Reference při změnách Releasu Catie a změnách šablony výkresu. Ev. se poptejte, kolik by za to vedoucí byli ochotni dát a třeba Vám někdo tady na fóru makro do nějaké částky udělá. Za mě dostat jedním tlačítkem jméno uživatele a datum do výkresu je úspora cca 20sec. To je údaj, který se dá přepočíst na roční úsporu.
Ing Jan Cinert

Poslat zprávu | Profil
[#6264] | Publikováno: 21.07. 2017 - 09:10
V tomto jednoznačně souhlas, úspora je v tomto konkrétním případě do minuty.

Jen se ještě zeptám, jak řešíte přenos parametrů z Partu. Předpokládám, že přes Attribute link, ale tady je jedno velké riziko, že při změně v Partu se parametr při normálním update nepřepíše. Musí se použít Force update, který už si změněný parametr natáhne a v textu přepíše.
LIbor Šoupal

Poslat zprávu | Profil
[#6265] | Publikováno: 21.07. 2017 - 11:00
Uživatel odpovídá na příspěvek #6264:


Ano, přesně tak jak píšete. Ale k makru. Pustil jsem se do toho. Nadefinoval jsem jméno textového pole na drwAutor viz příloha. Opsal kód, viz víše do makra a zakončilo to chybou



Language="VBSCRIPT"

Sub CATMain()
'uživatel:
Set wshNet = CreateObject("WScript.Network")
strUzivatel = wshNet.UserName
'datum pomocí funkce
mujdatum = Date
'a už jde jen o to nasypat údaje Do CATIE:
drwAutor As DrawingText
drwDate As DrawingText
drwAutor.Text = strUzivatel
drwDate.Text = mujdatum
End Sub

Přiložené obrázky:

Břeťa Doležal

Poslat zprávu | Profil
[#6266] | Publikováno: 21.07. 2017 - 13:05
Zas tak jednoduché to programování není :-) Z čeho by pak programátoři byli živi? :-) Zkus to postupně. Nejprve si makro nahraj a potom jej zkus dopsat, tak aby něco dělalo automaticky opakovaně.
drwAutor As DrawingText
je pouze deklarace proměnné, následně je ještě nutno spojit s objektem v Catii. Jinak stejně jako uváděl Jan C. doporučuji importovat přes parametry a následně až attribute link. Psal jsem přímou možnost cesty (né celý program) a přes parametry je to jinak.
Ing Jan Cinert

Poslat zprávu | Profil
[#6267] | Publikováno: 21.07. 2017 - 13:15
Samozřejmě, takhle snadno to nelze. Kód je jen ilustrativní...

K objektu textu se musíte nejprve nějak dostat. Vidím, že jste úplný začátečník :-)

Adresování testu vypadá nějak takhle:

oDrwRoot = CATIA.ActiveDocument.DrawingRoot ' root vykresu

oSheet = oDrwRoot.Sheets.Item("nazev listu" / poradi v kolekci) ' objekt listu
oView= oSheet.Views.Item("nazev pohledu" / poradi v kolekci) ' objekt pohledu
oText = oView.Texts.Item("nazev pohledu" / poradi v kolekci) ' objekt textu
oText.Text = "pozadovana hodnota" ' a konecne vlastni prirazeni hodnoty

Jde to i jinak, ale pokud nemáte zkušenosti OOP, bude chvíli trvat než na to přijdete a hlavně tápat v objektech, protože ten idi.otský integrovaný editor nemá nic jako zvýrazňování syntaxe, kontrolu chyb, intelisense....zkrátka to, co nabízí třeba VisualStudio.

PS: Upřímně nechápu to obhajování nákladů na pořízení makra, když se pak někdo, kdo tomu moc nerozumí, snaží něco vytvořit sám. Proti snaze se nedá nic říct, ale když se nad tím stráví třeba týden (a to vám garantuju, že za den to neuděláte a pak to stejně budete x-krát dolaďovat, až začne lidem díky neošetřeným chybám padat Catie), jsou náklady na zakoupení často stejné, ne-li nižší než vlastní vývoj (týden práce konstruktéra je pro firmu nákladově +/- 15-18tisíc).
LIbor Šoupal

Poslat zprávu | Profil
[#6276] | Publikováno: 02.08. 2017 - 10:08
Dobrý den
dalo mi to chvilku zabrat, ale naučil jsme se něco nového.

děkuji za radu
Jakub Švejda

Poslat zprávu | Profil
[#6361] | Publikováno: 05.11. 2017 - 08:54
Dobrý den,
mám dotaz k tématu aktuálního data na na výkres pomocí makra.

Potřebuji datum ve formátu yyyy-mm-dd, použil jsem:

Dim Datum

Sub ZjisteniDatumu()
Datum = Format(Today, "yyyy-mm-dd")
End Sub

Bohužel do razítka se dostane jen 2017-00-05, nevíte proč se mi nechce vypsat měsíc? Pokud použiji Datum = Today, vypsání proběhne správně: 05.11.2017, jenže potřebuji výše uvedený formát.

Ve VBA jsem úplný začátečník, nejspíš mi uniká jen nějaká banalita, mohl by mě prosím někdo popostrčit ke správnému výsledku.

Děkuji
Ing Jan Cinert

Poslat zprávu | Profil
[#6362] | Publikováno: 05.11. 2017 - 20:05
Dobrý den,

na první pohled chybu nevidím. Zkuste možné nejprve do proměnné Datum přiřadit hodnotu Today a formátovat datum až při zápisu do razítka.

Já dělám více v .NET a tam jsou někdy mírné nyance .. sem tam je něco jinak.

Google určitě poradí, na StackOverflow je toho o VBA mraky.
Jakub Švejda

Poslat zprávu | Profil
[#6365] | Publikováno: 06.11. 2017 - 08:24
Děkuji za reakci, zkusil jsem, snad jsem pochopil správně, ale výsledek je stále stejný. (Viz. orázek v příloze)

    Dim Datum

Sub ZjisteniDatumu()
Datum = Today
End Sub

Zapsání do razítka:
        'Pole zmen - DatumVytvoreniA

myTextDatumVytvoreniA = MyDrawingViews.ActiveView.Texts.Add(Format(Datum, "yyyy-mm-dd"), 368.5, 36)
myTextDatumVytvoreniA.SetFontSize(0, 0, 1.5)
myTextDatumVytvoreniA.Name = "TextDatumVytvoreniA"

'Pole zmen - DatumOvereniA
myTextDatumOvereniA = MyDrawingViews.ActiveView.Texts.Add(Format(Datum, "yyyy-mm-dd"), 383, 36)
myTextDatumOvereniA.SetFontSize(0, 0, 1.5)
myTextDatumOvereniA.Name = "TextDatumOvereniA"

'Pole zmen - DatumSchvaleniA
myTextDatumSchvaleniA = MyDrawingViews.ActiveView.Texts.Add(Format(Datum, "yyyy-mm-dd"), 397.5, 36)
myTextDatumSchvaleniA.SetFontSize(0, 0, 1.5)
myTextDatumSchvaleniA.Name = "TextDatumSchvaleni"


Google zatím neporadil, nejspíše se špatně ptám. Zkusil jsem to tady, zda se tím někdo nesetkal.

Přiložené obrázky:

Ing Jan Cinert

Poslat zprávu | Profil
[#6368] | Publikováno: 06.11. 2017 - 10:54
Zkuste tohle:

Private Sub CommandButton1_Click()

Dim Datum As Date
Datum = Date
MsgBox Format(Datum, "dd-mm-yyyy")
End Sub


Přiložené obrázky:

Břeťa Doležal

Poslat zprávu | Profil
[#6380] | Publikováno: 23.11. 2017 - 11:56
Pokud se nepodaří pomocí funkce Format, tak je možno si složit řetezec bez funkce. Myslím, že jde použít:


Dim Datum As DateTime
Dim rok, mesic, den As Integer

rok = Datum.Year
mesic = Datum.Month
den = DateTime.Day

vyslednystring = rok.ToString & "-" & mesic.ToString & "-" & den.ToString

ale fci Format běžně používám bez problémů

msgText = msgText & Format(DateTime.Now, "dd MMMM yyyy")


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.