Zobrazit plnou verzi příspěvku: Kótování s excelem

Jarek
11.07.2005, 09:16
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.

Augur
13.07.2005, 18:00
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.

Jarek
18.07.2005, 06:05
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.



Jarek
19.07.2005, 07:18
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

Jarek
19.07.2005, 10:12
Už chápu. Dík moc :)

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

Jarek
20.07.2005, 13:10
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 "

Jarek
21.07.2005, 13:36
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.