Zobrazit plnou verzi příspěvku: Triedenie, migracia vykresov

pedroxxl
22.08.2012, 07:43
Zdravím, chcel by som sa spýtať či existuje riešenie samozrejme okrem manualneho či by sa dali davkovo konvertovať výkresy do samotných suborov pod určitým názvom súboru.Ide o to, že mám k dispozícií mnoho výkresov(súborov *.dwg), kde vo výkresovom priestore je mnoho výkresov.Naši bývalí kolegovia začínali v AutoCad 97 a všetko kreslili do jedneho suboru. Keď bol počet výkresov neunosny založil sa nový súbor. Chcel by som zistiť či existuje nejaká dávková konverzia, že by každý jeden výkres uložil do súboru pod určitým menom. Nevýhoda je možno asi aj to, že rámčeky a rohové razítka nie sú urobene z blokov, ale všetko je geometricky nakreslené.Tak čo myslíte dalo by sa s tým niečo robiť?Za odpovede vopred ďakujem.

Vladimír Michl
22.08.2012, 07:53
Pokud tomu dobře rozumím, pomůže vám utilita Layouts2Dwgs - viz
http://www.cadforum.cz/cadforum/qaID.asp?tip=5868
popř. pro jednotlivé spouštění příkaz [CMD]EXPORTROZVRŽENÍ[/CMD] - viz
http://www.cadforum.cz/cadforum/qaID.asp?tip=5675
 

pedroxxl
22.08.2012, 10:22
Pozeral som tipy čo ste pridali, ale utilita L2D vytvára z automatických rozvržení nové subory, ale to ja nemám. Pripájam obrázok, ako napr. vyzerá súbor s výkresmi. Výkresy sú v modelovom priestore. Teraz by som chcel každý jeden uložiť do jedného súboru. Ako by ste postupovali pri tomto? Dá sa to? Samozrejme okrem manuálneho kopírovania do nového súboru po jednom.

Seiner
22.08.2012, 10:43
To je opravdu mazec :-) takovýto přístup jsem viděl tak v T602 a u některých zarvrzelých ještě ve wordu.
  Neumím si představit, jak zautomatizovat vyhledávání jednotlivých výkresů (snad kdyby byl rámeček vždy nějaký známý blok, tak prohledat lispem databázi a podle vkládacího bodu a měřítka spočítat okno - mně by se to teda dělat nechtělo.)
Asi bych si udělal tlačítko na -PIŠBLOK s vhodnými volbami a posadil k tomu brigádníka.

pedroxxl
22.08.2012, 11:07
Ja viem je to proste jednoznačný bordel ,  ktorý som zdedil a tápam v tom ako to najefektívnejšie poprerábať... v niektorých prípadoch sa jedná doslova o výkresy(maľby), ktoré ako keby boli kreslené v skicári, bez blokov, všetky objekty rozložené, tabulky kreslené:(no katastrofa....

Vladimír Michl
22.08.2012, 12:12
V původním příspěvku píšete, že jsou výkresy ve výkresovém prostoru.
 
Pokud jsou tedy jako pole naopak v modelovém prostoru, pak pomůže jiná naše utilita, PlotDWGarr - viz:
http://www.cadforum.cz/cadforum/vykresleni-serie-ramecku-kreseb-poskladanych-v-dwg-vykresu-tip7584
(umí z pole vytvořit sérii rozvržení a pak už pomůže postup popsaný výše)
 

pedroxxl
23.08.2012, 23:41
Zdravím tak utilita na vytvaranie sérií rozvržení funguje super. Ale mám problém pri vytváraní nových DWG z rozvržení. Použil som utilitu LayoutstoDWGs.lsp a pri vytvaraní mi vyhodí error a zatvorí autocad:(

Seiner
24.08.2012, 09:06
Pokud byste měl rámečky opavdu umístěné v poli, pak by jako námět mohlo posloužit třeba tohle:
 
(setq nula (getpoint "Levý dolní roh prvního rámečku:"))(setq PHR (getpoint nula "Velikost rámečku (PHR):") )(setq x (getdist nula "Další rámeček vpravo (LDR):") )(setq y (getdist nula "Další rámeček nahoru (LDR):") )(setq sloupcu (Getint "Počet sloupců"))(setq radku (getint "Počet řádků"))(setq sloupec 1 radek 1)(setq x0 (CAR nula) y0 (CADR nula))(setq x1 (car PHR) y1 (CADR PHR))(setq dx (- x1 x0) dy (- y1 y0))(while (<= radek radku)(progn (while (<= sloupec sloupcu)(progn (setq xi (+ x0 (* (- sloupec 1) x))) (setq yi (+ y0 (* (- radek 1) y))) (setq ldri (list xi yi)) (setq phri (list (+ xi dx) (+ yi dy))) 
(setq nazev (strcat (getvar 'dwgprefix) "xx-" (itoa radek) "-" (itoa sloupec)))(command "_-WBLOCK" nazev "" ldri "_W" ldri phri "")
(setq sloupec (1+ sloupec)))); end while(setq radek (1+ radek))(setq sloupec 1)));end while

Seiner
24.08.2012, 09:10
IMHO by to fungovalo i v případě, že by výkresy nebyly rozmístěné přesně a nebyly stejně velké - jen by musely být v nějaké mřížce a té byste se pak chytal. Seiner2012-08-24 09:48:49

Vladimír Michl
24.08.2012, 09:20
[QUOTE=pedroxxl]Zdravím tak utilita na vytvaranie sérií rozvržení funguje super. Ale mám problém pri vytváraní nových DWG z rozvržení. Použil som utilitu LayoutstoDWGs.lsp a pri vytvaraní mi vyhodí error a zatvorí autocad:([/QUOTE]
To je divné, ta utilita je celkem jednoduchá a nic speciálního nepáchá. Jakou vám hlásí při spuštění verzi (rok)?

pedroxxl
24.08.2012, 09:35
1. Ale ak sú napr. výkresy "porozhadzované" (bez postupnosti)v modelovom priestore (viď obr. vyššie) ako sa najjednoduchšie dajú zoradiť do nejakeho poľa(mriežky) nieje na to vyhradená nejaká funkcia v AutoCade? Asi by bol problém s tým, že vykres nieje blok, však. Alebo?2. Potom z poľa premiestniť vykresy do rozvržení som použil tip http://www.cadforum.cz/cadforum/vykresleni-serie-ramecku-kreseb-poskladanych-v-dwg-vykresu-tip7584 to funguje super!! Za to ďakujem!!3. Ale ešte potrebujem všetky rozvržení uložiť do samotných DWG. To zabezpečuje utilitka Layoutstodwgs.lsp ale pri nej mi vždy zamrzne AutoCad a vypne sa... :(

Seiner
24.08.2012, 09:56
Jestliže potřebujete samostatná DWG, přijde mi převod přes rozvržení trochu krkolomný. Obávám se, že zarovnání do mžížky za vás nic neudělá. Zvlášť pokud nejsou dodržována nějaká rozumná pravidla.
  Jestliže musíte s každým výkresem šoupnout, tak už je skoro stejná práce použít makro s pišblokem, jak jsem psal výše.

pedroxxl
24.08.2012, 09:57

[QUOTE=Vladimír Michl][QUOTE=pedroxxl]Zdravím tak utilita na vytvaranie sérií rozvržení funguje super. Ale mám problém pri vytváraní nových DWG z rozvržení. Použil som utilitu LayoutstoDWGs.lsp a pri vytvaraní mi vyhodí error a zatvorí autocad:([/QUOTE]
To je divné, ta utilita je celkem jednoduchá a nic speciálního nepáchá. Jakou vám hlásí při spuštění verzi (rok)?[/QUOTE]
Po použití utility LayoutstoDwgs.lsp mi vyhodí hlášku ERROR HANDLER RE-ENTERED. EXITING NOW. Následne sa Autocad zavrie a chce poslať chybovú hlášku spoločnosti Autodesk.Mám verziu AutoCad mechanical 2006.Ale skúšali sme to aj na 2013 a tam to isté.utilitu mám z http://www.jtbworld.com/lisp/layoutstodwgs.htm

Seiner
24.08.2012, 10:11
Když si pustíte následující lispík, tak vyzobete za minutu výkresy. IMHO cesta nejmenšího odporu :-)
 
(setq i 1)(setq n1 (getstring "\nZákladní název:"))(While T(Setq LDR (getpoint "\nLDR:"))(setq PHR (getpoint LDR "\nPHR:"))(setq nazev (strcat (getvar 'dwgprefix) n1 "-" (itoa i)))(command "_-WBLOCK" nazev "" LDR "_W" ldr phr "")
(setq i (1+ i)))

Vladimír Michl
24.08.2012, 10:17
[QUOTE=pedroxxl]
utilitu mám z http://www.jtbworld.com/lisp/layoutstodwgs.htm[/QUOTE]
O této utilitě ale nebyla řeč. Je to jen shoda jmen, naše utilita odkazovaná z onoho tipu takovéto problémy nemá.

pedroxxl
24.08.2012, 10:59
Seiner ďakujem za lipsik, ale skusim ho spojiť ešte s jedným lipsikom aby som nemusel zobať tie vykresy ručne, ale až to vyberá z poľa výkresov. Dúfam, že to pobeží. Som úplný začiatočník v tom tak za nejaký čas dám vedieť či to vyšlo alebo či potrebujem pomoc :)

Seiner
24.08.2012, 11:47
No vždyť to je to, co jsem vám poslal předtím. Jenže podmínka funkce je, že výkresy jsou v nějakém pravoúhlém rastru. A než rovnat výkresy do rastru, přijde mi jednosušší je vyzobat. (Jeden výkres=2 kliknutí). Je to ve smyčce, takže opravdu jen klikáte. -WBLOCK entity smaže, takže vidíte, co jste už vyexportoval - jen nakonec nesmíte uložit :-)

pedroxxl
24.08.2012, 12:03

[QUOTE=Seiner]No vždyť to je to, co jsem vám poslal předtím. Jenže podmínka funkce je, že výkresy jsou v nějakém pravoúhlém rastru. A než rovnat výkresy do rastru, přijde mi jednosušší je vyzobat. (Jeden výkres=2 kliknutí). Je to ve smyčce, takže opravdu jen klikáte. -WBLOCK entity smaže, takže vidíte, co jste už vyexportoval - jen nakonec nesmíte uložit :-)[/QUOTE]No len ja mám asi 300 suborov možno aj viac kde v každom je po 100 vykresov cca, takže ako ste napísali je to mazec

Seiner
24.08.2012, 12:09
To já chápu a nezávidím Vám to. Jenže pokud chcete použít nějakou utilitu, která bude zpracovávat výkresy podle jejich umístění v rastru, tak stejně musíte každý soubor otevřít a přerovnat v něm výkresy. Žádný automat na to asi není, takže POSUN - okno - základní bod - nové umístění. A napřed si tam musíte nakreslit asi nějaký rastr, do kterého to budete umísťovat. Pak teprve spustíte lisp a tomu řeknete jak je velká buňka a kolik je řádků a sloupců. Tou malou utilitkou byste to měl už dávno hotové.

pedroxxl
24.08.2012, 12:50
No zrovnávať výkresy do rastru budem asi manualne teda nič iné som zatiaľ ešte nenašiel :) potom chcem použiť tú vašu utilitu spolu s tým automatickým ukladaním z poľa kde mu zadám počet stlpcov a riadkov a ešte chcem aby z určitého miesta(rohového razítka na tom výkrese (v každom je fixné) bral číslo výkresu a dával ho ako meno súboru. 

Seiner
24.08.2012, 13:06
Tak naposledy: za tu dobu, co budete ručně rovnat výkresy, byste tou poslení utilitkou je měl podle mého vyexportované. Rovnání je daleko pracnější.
Ale dělejte si to jak chcete.

Seiner
24.08.2012, 13:09
Teď jsem si ještě všimnul toho čísla výkresu - to by také šlo v rámci té utilitky. Máte okno, v něm dáte vybrat blok razítka a přečtete si atribut a ten použijete jako název souboru. (Já jsem tam dal jen pořadové číslo). Ale s tím se teď nemůžu zabývat.

pedroxxl
24.08.2012, 13:26

[QUOTE=Seiner]Teď jsem si ještě všimnul toho čísla výkresu - to by také šlo v rámci té utilitky. Máte okno, v něm dáte vybrat blok razítka a přečtete si atribut a ten použijete jako název souboru. (Já jsem tam dal jen pořadové číslo). Ale s tím se teď nemůžu zabývat.[/QUOTE]
No akurát sa o to snažím, ale razítka sú kreslene normalne čiarami a je tam vloženy len text takže žiadne bloky... A hľadám príkazy lebo ja som taký začiatočník v tom. Viete mi poradiť ako z obrazovky prečítam text ak poznám súradnice?

Seiner
24.08.2012, 13:38
Pokud byste dokázal s jistotou vybrat ten text (a tomu moc nevěřím), pak se dostanete na data entity a pomoci ASSOC si text přečtete.
 
Nemám čas - tak ukázka práce s textem:
 
(defun C:prepistext(/ PRVNI DRUHY TXT USPECH)(setq uspech 0)(while (= uspech 0)(prompt "\n Vyber kopírovaný text  ")(command "_SELECT" "_SINGLE" pause) (setq prvni(ssname(setq v(ssget "P"))0))(if (= "TEXT" (cdr(assoc 0(entget prvni))))(setq uspech 1)))(setq TXT (cdr(assoc 1(entget prvni))))
(setq uspech 0)(while (= uspech 0)(prompt "\n Vyber přepisovaný text  ")(command "_SELECT" "_SINGLE" pause) (setq druhy(ssname(setq v(ssget "P"))0))(if (= "TEXT" (cdr(assoc 0(entget druhy))))(setq uspech 1)))
(entmod  (subst (cons '1 TXT)(assoc '1 (entget Druhy))(entget druhy)))
)

Seiner
24.08.2012, 13:39
leda, že by to byl třetí klik té utility - LDR, PHR, ČV

pedroxxl
13.09.2012, 08:28
Chcel by som sa Vás spýtať ešte pán Seiner, ten lispík čo ste tu dali na ten pišblok (viď nižšie) či by sa dal ukladať ten blok do súboru so šablónou? Alebo by to už cez ten blok nešlo, ale inou cestou.(setq i 1)(setq n1 (getstring "\nZákladní název:"))(While T(Setq LDR (getpoint "\nLDR:"))(setq PHR (getpoint LDR "\nPHR:"))(setq nazev (strcat (getvar 'dwgprefix) n1 "-" (itoa i)))(command "_-WBLOCK" nazev "" LDR "_W" ldr phr "")(setq i (1+ i)))

Seiner
13.09.2012, 09:23
A co tím chcete dosáhnout? Jestli potřebujete nějaké definice, hladiny apod., pak by mělo podle mého stačit do toho mega-výkresu napřed vložit šablonu.
Wblok nic takového, pokud vím, neumí. Programátorsky by to byla jiná liga. (Založit nový výkres a vložit do něj blok.)

Seiner
13.09.2012, 09:25
Další možnost by pak měla být, napřed vytvořit dy dílčí výkresy a pak si udělat script, který by do všech vložil potřebné věci. Generátor dávky není problém.

pedroxxl
13.09.2012, 09:46
keď som mal čas tak som sa s tým hral a doplnil som tam ukladanie výkresu pod číslom a menom, ktorý načíta z výkresu a ešte som ich popresúval pred uložením do začiatku SS(X0Y0). Mám vytvorenu šablonu hlavne pre publikovanie(nastavenie strany), preto som chcel aby mal každý výkres rovnaké vlastnosti stránky. V budúcnosti napr. pre hromadne vytvaranie PDF.

Seiner
13.09.2012, 09:52
Mám odzkoušeno, že třeba definice hladin, písem, kótovacích stylů apod. jde dostat do výkresu prostým vložením šablony jako bloku. Nevím teď, jestli to funguje i pro nastavení strany (nepoužívám - hromadný tisk/publikování řešíme pomocí vlastní aplikace). Pokud ano, mělo by stačit vložit tu šablonu do výkresu před "rozebíráním" nebo do jednotlivých výkresů následně.

pedroxxl
27.09.2012, 15:34
Zdravím tak sa opäť vraciam k tomu mojmu problému. Mal som trochu čas tak som experimentoval a narazil som na problém, ktorému nechápem. Predkladám lispík, ktorý v jednoduchosti označí A4 výkres presunie ho do SS 0,0 vyčíta z daných pozíci číslo a nazov a uloží ho pod týmto číslom a názvom.Mám,ale problém, že ak počas vydzobávania výkresov z modeloveho priestoru sa napr. presuniem resp zoomujem priestor tak, že nieje vidno pozíciu 0,0 tak mi vyskočí chyba "Nesprávny typ argumentu lselsetp nil" a lisp sa ukončí:(( neviem prečo...Ak je vo viditelnej "zone" pozícia 0,0 tak všetko funguje normálne.(While T(setq bod1 (getpoint "\nZadaj LDR"))(setq X2 (+ (nth 0 bod1) 210.0))(setq Y2 (+ (nth 1 bod1) 297.0))(setq bod2 (list X2 Y2))  (setq v(ssget "_C" bod1 bod2))(command "_move" v "" bod1 '(0 0))(setq X0(list 0 0))(Setq X1(list 210 297))(setq PozNum1(list 178 16))(setq PozNum2(list 111 15))(setq PozText1(list 95 16))(setq PozText2(list 22 15))  (command "_RECTANGLE" X0 X1)  (setq prvni (ssname (setq v (ssget "_C" PozNum1 PozNum2)) 0))(setq Cislo (cdr (assoc 1 (entget prvni))))  (setq druhy (ssname (setq v (ssget "_C" PozText1 PozText2)) 0))(setq TXT (cdr (assoc 1 (entget druhy))))(setq nazev (strcat "X:/Drawings/" Cislo" - "TXT".dwg"))(command "_-WBLOCK" nazev "" X0 "_W" X0 X1 "")    )