Diskuzní fórum, poradna
?CAD diskuze, rady, výměna zkušeností

|
Odpovědět ![]() |
Stránka 12> archiv |
Autor | |
martiner33 ![]() Nováček ![]() Přihlášen: 03.led.2010 Lokalita: Slovensko Používám: AUTOCAD2009 Stav: Offline Bodů: 9 |
![]() Zasláno: 03.led.2010 v 18:20 |
Mam zhruba 3000 vykresov. Na kazdom potrebujem zmenit verziu revizie, nazov vykresu a este par poloziek v titulnom bloku.
Je mozne napisat urcity program ktory mi zmeni tento titulny blok podla urciteho vstupneho suboru? Moja predstava je taka ze mam v tabulkovom editore stlpce, kde kazdy stlpec zodpoveda urcitemu polu v titulnom bloku a kazdy riadok zodpoveda jednemu vykresu. Pretoze praca typu otvorit kazdy vykres a prepisat to manualne sa mi zda zdlhava. Co vsetko potrebujem? Mam AUTOCAD2009 full version. Dik Upravil martiner33 - 03.led.2010 v 18:22 |
|
![]() |
|
alfred ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
TOP uživatel ![]() Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
![]() |
nejsnazsi se mi zda napsat si programek v LISPu, ktery zmeni pozadovane veci v jednom vykresu. Pak pouzijte skript s nazvem SCRIPTMAKER.LSP, ktery vytvari se Vas zepta na seznam souboru, nazev prikazu, ktery se ma provest a pak vytvori skript *.SCR, ktery pak z prazdneho souboru spustite.
Seznam souboru musi byt v textovem souboru - LISP bohuzel neumi otevrit vice souboru najednou. Ale to je jen drobnost. Dle seznamu se jednotlive soubory otevrou, nacte se LISP, ktery jste si vytvoril, soubor se ulozi a zavre. A pak dalsi... To prave dela ten vytvoreny skript. |
|
![]() |
|
alfred ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
TOP uživatel ![]() Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
![]() |
![]() |
|
martiner33 ![]() Nováček ![]() Přihlášen: 03.led.2010 Lokalita: Slovensko Používám: AUTOCAD2009 Stav: Offline Bodů: 9 |
![]() |
Dik za super radu. V LISPe som este nerobil. Bude stacit AutoLISP alebo tu aplikaciu mam spravit vo VisualLISPe? Ako som spominal do peciatky bude treba vlozit par veci, aj obrazok. Otvaram teda nejaky manual a idem studovat ;)
|
|
![]() |
|
Vladimír Michl ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor ![]() ![]() Arkance Systems Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 21899 |
![]() |
Nebude to úplně triviální (pokud s LISPem začínáte). AutoLISP a VisualLISP je dnes už prakticky totéž.
Vedle následné dávkové úpravy atributů rovněž zvažte možnost napojení titleblocku přímo na externí na databází (např. Excel).
|
|
![]() |
|
alfred ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
TOP uživatel ![]() Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
![]() |
AutoLisp a VisulalLIs je prakticky totez. Spustte prikaz
VLIDE (_VLIDE) a uvidite.
S tim scriptmakerem si to predtim zkuste. Napriklad si cvicne ulozte par prazdnych souboru a jako funkci pouzijte treba nakresleni primky z bodu 0,0 do bodu 1,1. (defun c:kratka_usecka () (command "_line" "0,0" "1,1" "") (princ) ) Jinak, pokud v LISPu vubec neumite delat tak preji hodne stesti... Kouknete sem: http://www.cadforum.cz/cadforum/Vyvojove-prostredky-AutoCADu/ Pokud potrebujete pouze zamenit texty (treba datum zakazky, apod. ) tak to jsem jednou resil. |
|
![]() |
|
martiner33 ![]() Nováček ![]() Přihlášen: 03.led.2010 Lokalita: Slovensko Používám: AUTOCAD2009 Stav: Offline Bodů: 9 |
![]() |
No tak ten manual Vyvojove prostredky AutoCADu je genialny, citam to od vcera vecera ;)
Mojim planom je konkretne zmenit v peciatke par udajov, teoreticky je jedno kolko. Tie udaje by som nacital z externeho suboru. Co som sa dozvedel z mojich studii - ako mam postupovat: 1..Vymazat text na urcitych suradniciach - kazda suradnica(X,Y,Z) bude predstavovat jednu polozku v titulnom bloku 2. Vymazat obrazok na urcitej suradnici (vsetky budu dane rucne podla polohy obrazkov a textov) 3. Vlozit text na definovane suradnice .. kazdy jeden z urcitej casti EXCEL/TXT suboru 4. Vlozit obrazok na definovane suradnice Co sa tyka toho scriptmakera. Postupoval som nasledovne: 1.nacital som aplikaciu kratka_usecka uvedenu vo vyssom prispevku 2. nacital som aplikaciu Scriptmaker, nasledne som ju spustil 3. zadal som TXT subor so zoznamom dwg suborov, pricom jednotlive nazvy som dal pod seba .. skusal som aj iba jeden subor 4.vybral som subor LSP ktory obsahuje zdrojak kratka_usecka 5.zadal smo prikaz kratka_usecka 6.ulozil som suobr scr na disk problem je ze subor ma velkost 0B Kde je problem? |
|
![]() |
|
martiner33 ![]() Nováček ![]() Přihlášen: 03.led.2010 Lokalita: Slovensko Používám: AUTOCAD2009 Stav: Offline Bodů: 9 |
![]() |
Problem ze subor *.scr bol prazdny bol ten ze som nemal zadefinovanu kompletnu cestu k dwg suboru
Vysledok ._OPEN "D:\devices\autocad\scriptmakr-test\1.dwg" (setq LispFile (getstring)) "D:\devices\autocad\scriptmakr-test\usecka_test.LSP" (load LispFile ) KRATKA_USECKA ._QSAVE ._CLOSE teraz uz len prist na to ako to spustit ;) idem surfovat Upravil martiner33 - 04.led.2010 v 12:09 |
|
![]() |
|
Martin Bielina ![]() Zasloužilý člen ![]() Přihlášen: 04.led.2007 Lokalita: ČR (Pha) Používám: AutoCAD True view 2016 Stav: Offline Bodů: 100 |
![]() |
Tak to je zcela správná úvaha. Ve scriptu, který Vám Alfred dal k dispozici se o vyhledávání souboru stará funkce (findfile).
(findfile filename) "The findfile function makes no assumption
about the file type or extension of filename. If filename does not specify a drive/directory prefix, findfile searches the AutoCAD library path. If a
drive/directory prefix is supplied, findfile
looks only in that directory." To znamená že musíte ve svém seznamu buď přidat celou cestu k souborům DWG nebo (když nejde Mohamed k hoře...) nakopírovat soubory DWG do adresáře, které funkce prohledává sama. Ta druhá možnost je ale spíš pro zasmání, to radši nedějte.
|
|
![]() |
|
Martin Bielina ![]() Zasloužilý člen ![]() Přihlášen: 04.led.2007 Lokalita: ČR (Pha) Používám: AutoCAD True view 2016 Stav: Offline Bodů: 100 |
![]() |
A abych Vám trochu zkrátil serfování. Seznam souborů ke zpracování získate snadno a rychle takto: Pak budete mít první část úkolu hotovou a zbývá jen napsat nebo najít vhodný LSP který udělá ten zbytek.
Upravil Martin Bielina - 04.led.2010 v 12:30 |
|
![]() |
|
alfred ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
TOP uživatel ![]() Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
![]() |
Prikaz pro spusteni SCR souboru je DEMO (_SCRIPT) |
|
![]() |
|
alfred ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
TOP uživatel ![]() Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
![]() |
Nevim, jak vypada razitko stavajici/nove. V prvnich prizpevcich jsem pochopil, ze chcete menit BLOK (tedy jsem predpokladal ze menite jeho atributy) ted pisete, ze chcete menit texty a obrazky. S tim Vam uz nikdo nepomuze, pokud to nepopisete podrobneji. AD obrazek - neni mozne jen zmenit obrazek - tedy pokud to je externe odkazovany rastr a ne OLE objekt. AD texty - neni mozne zamenit konkretni string jinym stringem? Je nutne nekde neco smazat a pak nove vytvaret? Jsou vykresy tvorene stejne? Tedy jako ze vsechny maji na 100% stejne umisteni entit v razitku. |
|
![]() |
|
martiner33 ![]() Nováček ![]() Přihlášen: 03.led.2010 Lokalita: Slovensko Používám: AUTOCAD2009 Stav: Offline Bodů: 9 |
![]() |
Takze finalne sa mi podarilo scr pekne spustit ako ste pisali prikazom DEMO. Do vsetkych troch pripravenych suborov mi to nadherne vkreslilo usecku.
Aby som este raz upresnil co xcem spravit: Mam cca 3000 vykresov. Tit.blok ostane povedny, zmenia sa v nom len dve textove polia TITLE a DATE, a jedna cast kde je vlozene BMP logo firmy. To xcem zmazat a vlozit tam nove - povodny obrazok je OLE objekt. Predpokladam ze postup bude obdobny ako zamena textov. Uvazujem spravit externy subor. Prvy stlpec TITLE a druhy DATE. Potom predpokladam bude mozne pridat XY stlpcov a riadkov. Jsou vykresy tvorene stejne? Tedy jako ze vsechny maji na 100% stejne umisteni entit v razitku. ANO MAJU VSETKY ROVNAKE UMIESTNENIE. Povodny titulny blok uzamknuty v hladine. Nasiel som ze vsetky sa daju odomknut prikazom layerp (Undoes the last change or set of changes made to layer settings). Tento prikaz ale funguje len v pripade z hladina bola menena od otvorenia suboru. Pouzit sa da teda neskor na konci na zamknutie hladiny. Existuje prikaz -layer ktory vsak pracuje s aktualnou hladinou. Takze dalsim orieskom je zmenit aktualnu hladinu na hladinu titulneho bloku. Program na zmazanie obrazku, chyba tam este odomknutie hladiny Drawing_title. (defun c:vymaz_ole () (command "layerp") (setq coordinate '(365.2295 91.875)) (command "_erase" coordinate) (initget 1) (princ) ) Upravil martiner33 - 04.led.2010 v 15:20 |
|
![]() |
|
alfred ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
TOP uživatel ![]() Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
![]() |
Nastaveni nejake hladiny jako aktualni: (setvar "clayer" "nazev_pozadova_aktualni_hladiny") Pro manipulaci s hladinami muzete take pouzit prikaz (command "_-layer" "prislusne prikazy ....... ") |
|
![]() |
|
alfred ![]() Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
TOP uživatel ![]() Přihlášen: 14.říj.2004 Lokalita: ČR (JČ) Používám: AutoCad MAP 2011 Stav: Offline Bodů: 1675 |
![]() |
Pokud by Vam stacilo textove pole najit a nahradit jinym textem, tak muzete pouzit utilitu SRXTEXT2.VLX od XANADU
Utilitu nactete: (LOAD "C:\\cesta......\\SRXTEXT2.VLX") a pouzijte prikaz (srxtext "Substring" "hledany text" "novy text" "spravna volba") vyzkousejte si to prikazem: srxtext Upravil alfred - 04.led.2010 v 15:31 |
|
![]() |
|
martiner33 ![]() Nováček ![]() Přihlášen: 03.led.2010 Lokalita: Slovensko Používám: AUTOCAD2009 Stav: Offline Bodů: 9 |
![]() |
Takze podarilo sa mi spravit program ktory odomkne hladinu Drawing_title a zmaze obrazok podla zadanych suradnic. Doriesit musim teraz ako na to iste miesto vlozit novy OLE objekt pomocou prikazov. Prikaz insertobj mi vsak otvori len win okno s moznostami.
(defun c:vymaz_ole () (setvar "clayer" "Drawing_title") (command "_-layer" "Odemkni" "Drawing_title" "") (initget 1) (setq coordinate '(365.2295 91.875)) (command "_erase" coordinate "") (princ) ) Co sa tyka tej utility od Xanadu .. celkom pekna srandicka akurat ze je obmedzena (first 2 pairs are processed). Takze bud mi niekto z vas posle full verziu alebo to budem musiet riesit podobne ako s tym obrazkom. Teda podla suradnic zmazem text a potom ho tam aj vlozim. Idem sa trapit teda dalej. Zatial sa mi LISP fest zapacil, zrejme sa mu zacnem venovat aktivnejsie. |
|
![]() |
|
Martin Bielina ![]() Zasloužilý člen ![]() Přihlášen: 04.led.2007 Lokalita: ČR (Pha) Používám: AutoCAD True view 2016 Stav: Offline Bodů: 100 |
![]() |
Dost pochybuji, že Vám kdokoliv z tohoto fóra v tomto smyslu vyhoví. Ne snad proto že by tu byli samí krkouni co se nechtějí s nikým a o nic rozdělit, ale předávat zdarma něco, co je majetkem firmy XANADU je přinejmenším NEETICKÉ i kdyby už neexistoval žádný jiný právní důvod (jako že existuje...) proč by jste to něměl dělat. Můžete se ptát, nějaká odpověď se vždycky najde. Přemýšlejte o tom co děláte. Zkoušejte práci druhých napodobit svými vlastními utilitkami. Dělám totéž a je to myslím jedna z nejlepších cest jak se něco naučit. Zmíněná funkce od XANADU nědělá přeci nic složitějšího než že nahrazuje části textových řetezců jinými řetězci. Stačí udělat je několik kroků:
K tomu si přidejte nějakou metodu načítání obsahu z externího souboru a jednoduše řečeno máte hotovo. Práci si můžete rozdělit do více LISPů a při troše snahy je jeden po druhém najdete na webu už hotové. Pak to jen celé vhodně spojíte buď pracovním postupem nebo jejich skutečnou kombinací v jednom LSP. |
|
![]() |
|
Sedláček ![]() TOP uživatel ![]() Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
![]() |
Možná by šlo vytvořit blok (_WBLOCK) s oním OLE obrázkem a do výkresů vkládat ten (_-INSERT)
|
|
![]() |
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět ![]() |
Stránka 12> archiv |
Přejít na fórum | Oprávnění fóra ![]() Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru |
Stránka byla vygenerována za 0,344 sekund.