Zobrazit plnou verzi příspěvku: makro

prasopal666
22.03.2007, 10:30
dobrý den,
lze udělat nějaké !makro" které by nahradilo text ve výkresu blokem, kde v atributu by byl právě nahrazovaný text?

Vladimír Michl
22.03.2007, 10:35
Šlo, ale je to trochu nestandardní požadavek - co je konečným účelem?
 
Měla by být pro každý text zvláštní definice bloku? (respektující parametry textu) Nebo všechny texty vypadají podobně a lze pro ně použít jediný blok s atributem?
 
Víceřádkové texty budou takto fungovat je v AutoCADu 2008.

prasopal666
22.03.2007, 10:52
texty jsou podobné, je to textový řetězec o 13 místech. Atribut bloku by byl stejný.

Seiner
22.03.2007, 10:59
V principu:
1. Vytvořte blok s jediným atributem a zapište ho do souboru na prohledávací cestě. Nazvěte ho třeba AUTODEF
(setq dz (entget (setq m(car(entsel)))))(setq cislo (cdr(assoc 1 dz))      bod (cdr(assoc 10 dz)))(command "_ERASE" m "")(setvar "ATTDIA" 0)(command "_-INSERT" "AUTODEF" bod "1" "1" "0" cislo)(setvat "ATTDIA" 1)

prasopal666
27.03.2007, 11:08
ještě k tomu makru, vůbec nevím jak se spouští, můžete mi prosíl polopatě poradit?

Ferdinand
27.03.2007, 11:31
Poněvadž jsem rejpal vyššího stupně (RVT), nedá mi to: pane prasopal666, Makro je hypermarket...(Prosím ostatní, aby mi to prominuli.)Myslím, že jako "Zasloužilý člen" byste to snad už měl vědět...(RVT): Načtení aplikace do výkresu se děje příkazem _appload

Seiner
27.03.2007, 11:40
Polopatě:
1. Zaslané uložte do souboru s příponou lsp. Nejlépe na prohledávací cestě.
2. Na příkazovou řádku napište (load "neco.lsp")
 
 Kód je sice funkce schopný, ale pokud by měl být opakovaně používán, bylo by vhodné:
- ošetřit lépe vypínání/zapínání ATTDIA (uložit stávající nastavení a na konci vrátit,
- upravit na definici příkazu (defun ...), ošetřit automatické načítání a strčit na nějaké tlačítko.

prasopal666
27.03.2007, 12:58
[QUOTE=Ferdinand]Poněvadž jsem rejpal vyššího stupně (RVT), nedá mi to: pane prasopal666, Makro je hypermarket...(Prosím ostatní, aby mi to prominuli.)Myslím, že jako "Zasloužilý člen" byste to snad už měl vědět...(RVT): Načtení aplikace do výkresu se děje příkazem _appload[/QUOTE]
a co je makro v příkazu makro?
 
ještě me napadá co bylo dříf Makro nebo makro?prasopal6662007-03-27 12:59:40

Seiner
27.03.2007, 13:02
příkaz MAKRO neznám :-(
Vysvětlete, prosím.

prasopal666
27.03.2007, 13:14
[QUOTE=Seiner]příkaz MAKRO neznám :-(
Vysvětlete, prosím.[/QUOTE]
nástroje->makro->makra
 
makro:
množina instrukcí spouštěná zadáním jediného povelu

prasopal666
27.03.2007, 13:17
[QUOTE=Seiner]
 
 Kód je sice funkce schopný, ale pokud by měl být opakovaně používán, bylo by vhodné:
- ošetřit lépe vypínání/zapínání ATTDIA (uložit stávající nastavení a na konci vrátit,
- upravit na definici příkazu (defun ...), ošetřit automatické načítání a strčit na nějaké tlačítko.[/QUOTE]
 
bohužel mi to MAKRO mi nějak nefunguje, když ho spustim, kliknu na text který chi převést do bloku, text zmyzí a v příkazové řádce se objeví "vyberte objekt"  zde končím respektive nevím jak vybrat objekt když tam žádný není?
 

Seiner
27.03.2007, 13:22
Zkuste mi poslat výpis textové obrazovky.
Mně to píše:
Vyberte objekty:Příkaz: _-INSERT Zadejte jméno bloku nebo [?]: AUTODEFJednotky: Bez jednotek   Převod:      1.00Určete bod vložení nebo [Refbod/Měřítko/X/Y/Z/Otoč]:Zadejte měřítko v ose X, zadejte protější roh nebo [Obdélník/XYZ] <1>: 1 Zadejte měřítko Y <použijte měřítko X>: 1Určete úhel otočení <0.0000>: 0Zadejte hodnoty atributůU: fffffPříkaz: 1

prasopal666
27.03.2007, 13:24
Příkaz: _apploadmakro.lsp byl úspěšně načtený.makro.lsp byl úspěšně načtený.
Příkaz:Vyberte objekt:
"AUTODEF.dwg": Nemohu najít soubor ve vyhledávací cestě:  C:\CADWorx Plant 2006\ (aktuální adresář)  C:\cadworx plant 2006\support\  C:\program files\autodesk architectural desktop 2005\support\  C:\program files\autodesk architectural desktop 2005\fonts\  C:\program files\autodesk architectural desktop 2005\help\  C:\program files\autodesk architectural desktop 2005\support\color\  C:\documents and settings\ales.ruzicka\data aplikací\autodesk\adt 2005\csy\support\  C:\program files\graitec\advancesteel\profiledesigner\support\images\  C:\Program Files\Autodesk Architectural Desktop 2005\*Neplatné*
 
Funkce přerušenaPříkaz:Příkaz:

Seiner
27.03.2007, 13:28
Pravda - na VBA makra jsem zapomněl. Co je to makro, tak trochu tuším.
Bohužel terminologie v CZ AutoCADu je malinko neustálená, (makra v příkazovém řádku, programy v lispu, makra ve VBA, script soubory - dema)
 
šlo mi o spojení "příkaz makro". Příkaz je pro mne něco jiného, než volba z nabídky nebo název tlačítka.
 
Ale to už dost dlouho buším do prázdné slámy. Pojďme se radši věnovat rozchozeníá toho makra :-)

prasopal666
27.03.2007, 13:32
makro už sem spustil, ale neměl jsem vytvořen ten blok AUTODEF, takže se omlouvám
 
leč sem narazil na další problém, když kliknu na text který chci převést do atributu bloku, tak mi to nepřevedeprasopal6662007-03-27 13:49:44

Seiner
27.03.2007, 13:33
A to pro vás není dost návodné? Psal jsem přece, abyste si nejprve vytvořil ten blok s jedním atributem, nazval ho AUTODEF a uložil ho na prohledávací cestě. Samozřejmě ho také můžete vytvořit přímo ve výkrese.
 

Ferdinand
27.03.2007, 13:43
Makro je něco jako "proveď následující úkoly" (? - neznám, neumím...) a má tvar např.Sub EditAttribPrompts()    Dim obj As Object...    On Error Resume Next    ThisDrawing.Utility.GetEntity obj, pt, "Vyberte blok: "    If Err <> 0 Then        Exit Sub    End If    Set ent = obj    If StrComp(ent.ObjectName, "AcDbBlockReference", vbTextCompare) <> 0 Then        MsgBox "Vybraná entita není blok !"        Exit Sub    End If    Set blkref = ent    If blkref Is Nothing Then        MsgBox "Nelze získat blok !"        Exit Sub...lisp je uživatelsky definovaná "nová" funkce (trošičku něco málo z toho znám...) která provede více než 1 operaci a má tvar např....(defun C:DIMARC ( / pt1 pt2 cen a1 a2 D1 D2 D i p r oldOs oldCmde) (setq oldCmde (getvar "CMDECHO")) (setq oldOs (getvar "OSMODE")) (setvar "CMDECHO" 0) (prompt "Pick 2 points on an arc - ") (setvar "OSMODE" 512) (while (not cen)  (setq    pt1 (getpoint "1st pt: ")    cen (osnap pt1 "_CEN")  )  (if (not cen) (alert "Doesn't lay on an arc, retry")        (setq pt2 (getpoint cen " 2nd pt: ")))...Mám za to, že v podstatě je to totéž ale napsaný jinou formou...(případně mne prosím opravte)

Seiner
27.03.2007, 13:49
NIKDO se neptal, co je to makro. JA jsem se ptal na PŘÍKAZ MAKRO.
 
Program v lispu NEMUSÍ definovat nový příkaz - je to jen jedna z možností použití.

prasopal666
27.03.2007, 13:52
[QUOTE=Seiner]
A to pro vás není dost návodné? Psal jsem přece, abyste si nejprve vytvořil ten blok s jedním atributem, nazval ho AUTODEF a uložil ho na prohledávací cestě. Samozřejmě ho také můžete vytvořit přímo ve výkrese.
 [/QUOTE]
 
omlouvám se , nevytvořil jsem blok AUTODEF
 
leč pořád mi to nepřevádí text do atributu bloku jak sem si přál

Seiner
27.03.2007, 14:01
Jasně - stihnul jsem to napsat dřív, než jste odpověděl.
 
A co vám to píše tedy teď?

prasopal666
27.03.2007, 14:05
problém je asi s nadefinováním atributu bloku, nevím jakou volbu v režimu zaškrtnout aby se text převáděl na hodotu atributu

Seiner
27.03.2007, 14:05
uploads/20070327_140445_AUTODEF.DWG


zkuste můj blok

prasopal666
27.03.2007, 14:09
sorry ale danej výkres neobsahuje žádný blok

Seiner
27.03.2007, 14:15

Ježkovy voči!!! TEN VÝKRES JE BLOK !!!!
Zkuste si ho dát na vyhledávací cestu a v (prázdném) výkrese dejte příkaz VLOŽ AUTODEF
 

prasopal666
27.03.2007, 14:29
Vám to funguje?
 
např. tento text SHK125H456 vám vloží do blou AUTODEF do atributu KKS?

prasopal666
27.03.2007, 14:32
už to funguje
 
děkuji

Seiner
27.03.2007, 14:35
Opět jste byl rychlejší.
Není zač :-)

Seiner
27.03.2007, 14:38
Ten blok si samozřejmě upravte podle svých potřeb - štítek a výzvu atributu, formátování textu, případně další objekty (značky).
Já jsem použil blok, který mám pro stařičký program převádějící schéma rámové konstrukce nakreslené v AutoCADu do výpočetního programu.
(Dnes už to nikdo nepoužívá, ale mně je líto to zahodit - takové práce to tehdy dalo...)