Vytisknout stránku | Zavřít okno

makro

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=4246
Datum vytištění: 13.kvě.2026 v 14:01


Téma: makro
Odeslal: prasopal666
Předmět: makro
Datum odeslání: 22.bře.2007 v 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?


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor



Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 22.bře.2007 v 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.


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz helpdesk.arkance-systems.cz)


Odeslal: prasopal666
Datum odeslání: 22.bře.2007 v 10:52
texty jsou podobné, je to textový řetězec o 13 místech. Atribut bloku by byl stejný.

-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: Seiner
Datum odeslání: 22.bře.2007 v 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)



-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 11:08
ještě k tomu makru, vůbec nevím jak se spouští, můžete mi prosíl polopatě poradit?

-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


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


-------------
-FerTh-


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 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.


-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 12:58

Původně odeslal(a) Ferdinand Ferdinand napsal(a):

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

a co je makro v příkazu makro?

 
ještě me napadá co bylo dříf Makro nebo makro?


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 13:02
příkaz MAKRO neznám :-(
Vysvětlete, prosím.


-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 13:14
Původně odeslal(a) Seiner Seiner napsal(a):

příkaz MAKRO neznám :-(
Vysvětlete, prosím.
nástroje->makro->makra
 
makro:
množina http://slovnik-cizich-slov.abz.cz/web.php/slovo/instrukce - instrukcí spouštěná zadáním jediného povelu


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 13:17
Původně odeslal(a) Seiner Seiner napsal(a):

 
 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.
 
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í?
 


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 13:22

Zkuste mi poslat výpis textové obrazovky.

Mně to píše:
Vyberte objekty:
Příkaz: _-INSERT Zadejte jméno bloku nebo [?]: AUTODEF
Jednotky: Bez jednotek   Převod:      1.00
Urč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>: 1
Určete úhel otočení <0.0000>: 0
Zadejte hodnoty atributů
U: fffff
Příkaz: 1


-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 13:24

Příkaz: _appload
makro.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šena
Příkaz:
Příkaz:



-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 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 :-)


-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 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řevede


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 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.

 



-------------
Vítězslav Seiner

Chrudim


Odeslal: Ferdinand
Datum odeslání: 27.bře.2007 v 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)


-------------
-FerTh-


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 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í.


-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 13:52
Původně odeslal(a) Seiner Seiner napsal(a):

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.

 

 
omlouvám se , nevytvořil jsem blok AUTODEF Sleepy
 
leč pořád mi to nepřevádí text do atributu bloku jak sem si přál


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


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


-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 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


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 14:05
http://www.cadforum.cz/forum/uploads/20070327_140445_AUTODEF.DWG - uploads/20070327_140445_AUTODEF.DWG
zkuste můj blok

-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 14:09
sorry ale danej výkres neobsahuje žádný blok

-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 14:15

Cry

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

 



-------------
Vítězslav Seiner

Chrudim


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 14:29
Vám to funguje?
 
např. tento text SHK125H456 vám vloží do blou AUTODEF do atributu KKS?


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: prasopal666
Datum odeslání: 27.bře.2007 v 14:32
už to funguje
 
děkuji Clap


-------------
Autocad 13 - user, PC 386, 16MHZ, 1MB RAM, 14" VGA monitor


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 14:35
Opět jste byl rychlejší.
Není zač :-)


-------------
Vítězslav Seiner

Chrudim


Odeslal: Seiner
Datum odeslání: 27.bře.2007 v 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...)


-------------
Vítězslav Seiner

Chrudim



Vytisknout stránku | Zavřít okno