Zobrazit plnou verzi příspěvku: Kótování s excelem
Kótuji (asi 6 kót propočítaných v excelu) stále stejné výkresy a nesmím použít tabulkové kótování. Asi rozložím kóty a pomocí OLE to propojím jako text. Nic lepšího mě nenapadá. Nemáte někdo lepší nápad? Používám LT2006.
Ja osobne by som to robil atributmi. Rozlozil by som koty, text by som definoval ako atribut bloku a potom pomocou exportu a inportu by som menil hodnotu koty. Asi je zlozity sposob, ale ine mna nenapada.
SlepyJack
15.07.2005, 13:51
Ono by to šlo hadam aj tak že z excelu to priamo vytvori scr subor ktory sa potom v AutoCADe LT spusti ako demo a vsetko vykresli tak ako treba.
Dík oběma, ale s tím scr bych to potřeboval vysvětlit podrobněji.
Jan Pajerchin
18.07.2005, 06:49
Skript je textový súbor s jednym príkazom na každom riadku.
Napríklad pre nakreslenie štvorca s absolútnymi súradnicami bude súbor s príponou *.scr obsahovať:
; Začiatok
_line 0,0
0,100
100,100
100,0
_c
"prázdny riadok"
; koniec
Z toho vyplýva že ak chcete z Excelu vygenerovať *.scr súbor, ktorý sa
potom v AutoCADe (aj v LT) spustí príkazom "demo", a vykreslí všetko čo
treba - je potrebné do súboru z Excelu zapisovať všetky hodnoty v
podstate s globálnymi súradnicami spolu s príslušnými hodnotami
kót, ktoré majú byť z Excelu .
Ak sa jedná o rovnaký výkres len s rozdielnymi hodnotami kót - mohlo by
to byť celkom dobré riešenie. Najviac práce však bude vytvoriť celú
"kostru" príkazov s hodnotami.
To Vám môže uľahčiť len jedna vec - Ak nakreslíte jednu variantu Vášho
výkresu so zapnutou voľbou - vytváranie protokolového súboru. T.j.
súboru kde sa ukladajú všetky vykonávané príkazy až do chvíle kým sa
neukončí AutoCAD. Ukladajú sa síce bez hodnôt - ale ako kostra to
stačí. Hodnoty doplníte a máte syntax pre Váš *.scr súbor.
Vypadá to zajímavě, ale nevíte kde bych nějaké příklady stáhnul, abych mohl podle nich postupovat?
Jan Pajerchin
19.07.2005, 07:49
Hádam príklady ani nie sú veľmi potrebné.
Vyzsie uvedený príklad sa môže napísať aj takto:
_line 0,0 0,100 100,100 100,0 _c
Kde medzera vlastne predtavuje enter.
Takze stačí si to vyskúšať. Vytvorte si súbor napr: priklad.scr a do
neho vložte uvedený riadok: _line 0,0 0,100 100,100 100,0 _c
(na konci je medzera)
do AutoCADu ho nacitate prikazom demo. a vykresli to stvorec.
Alebo mate na mysli VisualBasic a Excel ?
Jan Pajerchin38552.3273148148
Jan Pajerchin
20.07.2005, 09:33
Ale lepšia voľba je to priamo vykresliť z Excelu do AutoCADu LT cez DDE kanálpripájam príklad myslím že na LT 2002 by to malo fungovať LT2000 určite a hádam aj na LT2004-6
Popis zdrojového kódu na vykreslenie tabuľky z Excelu do AutoCADu LT
------------------------Public Sub Umiestni() AppActivate ("AutoCAD LT") Urobí aktívnym okno AutoCADu LT chanelNumber = Application.DDEInitiate("AutoCAD LT.DDE", "System") Umožní AutoCADu LT prijímať príkazy cez prostredie Windowsu (otvorí DDE kanál) Application.DDEExecute chanelNumber, " _line 0,0 0,100 100,100 100,0 _c " Spustí príkazy inej aplikácie cez nastavený kanál DDE Application.DDETerminate chanelNumber Zatvorí otvorený kanál DDE na inú aplikáciuEnd Sub------------------------Procedúru umiestni však môžeme napísať aj inak:------------------------Public Sub Umiestni() AppActivate ("AutoCAD LT") Urobí aktívnym okno AutoCADu LT SendKeys "_line{ENTER}0,0{ENTER}0,100{ENTER}100,100{ENTER}100,0{ENTER}_c{ENTER}", True pošle znaky na príkazový riadok AutoCADu LTEnd Sub------------------------viď: http://www.techsoft.sk/SkoleniaAutoCADInternetOld.php?idLekc ia=02&idDoplnok=A
Tak to je dost dobre! Dal jsem to do makra a funguje to. Mohl by jste mi ještě napsat, jak zaměním hodnotu 100,100 hodnotou z buňky - třeba A1? Předem děkuji.
Jan Pajerchin
20.07.2005, 14:13
Application.DDEExecute chanelNumber, " _line 0,0 0,100 " + Worksheets(1).Cells (1,1 ).Value + " 100,0 _c "
kde Worksheets(1) - je list č.1 a Cells (1,1 ) je adresa prvej bunky v prvom stĺpci - teda A1
de Forbes
20.07.2005, 14:33
Možná by bylo dobré napsat příkaz trochu čitelněji :
Application.DDEExecute chanelNumber, " _line 0,0 0,100 " + Sheets(1).Range(A1 ) + " 100,0 _c "
Sheets(1) je první list kolekce Sheet a Range(A1) znamená adresu buňky. Máte-li list excelu pojmenovaný například Vypocet, pak by měl řádek vypadat asi tak :
Application.DDEExecute chanelNumber, " _line 0,0 0,100 " + Sheets("Vypocet").Range ("A1" ) + " 100,0 _c "
Máte-li pojmenovanou přímo buňku například názvem Kota1, pak napište :
Application.DDEExecute chanelNumber, " _line 0,0 0,100 " + Range("Kota1") + " 100,0 _c "
Teď už si poradím. Dík J.
de Forbes
21.07.2005, 13:50
Já bych snad ještě něco dodal. Jestli potřebujete jenom jednoduché malé výkresy, pak je skoro lepší udělat je přímo v Excelu. Vytvoříte si mustr, kdy technický výkres je vpodstatě naformátovaná tabulka, na kterou připojíte bez problémů veškeré výpočty. My tento způsob používáme celkem úspěšně v naší firmě skoro čtyři roky.