Kótování s excelem
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=1084
Datum vytištění: 13.kvě.2026 v 09:16
Téma: Kótování s excelem
Odeslal: Jarek
Předmět: Kótování s excelem
Datum odeslání: 11.čvc.2005 v 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.
|
Odpovědi:
Odeslal: Augur
Datum odeslání: 13.čvc.2005 v 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.
|
Odeslal: SlepyJack
Datum odeslání: 15.čvc.2005 v 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.
|
Odeslal: Jarek
Datum odeslání: 18.čvc.2005 v 06:05
|
Dík oběma, ale s tím scr bych to potřeboval vysvětlit podrobněji .
|
Odeslal: Jan Pajerchin
Datum odeslání: 18.čvc.2005 v 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.
|
Odeslal: Jarek
Datum odeslání: 19.čvc.2005 v 07:18
|
Vypadá to zajímavě, ale nevíte kde bych nějaké příklady stáhnul, abych mohl podle nich postupovat?
|
Odeslal: Jan Pajerchin
Datum odeslání: 19.čvc.2005 v 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 ?
|
Odeslal: Jarek
Datum odeslání: 19.čvc.2005 v 10:12
Odeslal: Jan Pajerchin
Datum odeslání: 20.čvc.2005 v 09:33
Ale lepšia voľba je to priamo vykresliť z Excelu do AutoCADu LT cez DDE kanál
pripá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áciu
End 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 LT
End Sub ------------------------
viď: http://www.techsoft.sk/SkoleniaAutoCADInternetOld.php?idLekcia=02&idDoplnok=A - http://www.techsoft.sk/SkoleniaAutoCADInternetOld.php?idLekc ia=02&idDoplnok=A
|
Odeslal: Jarek
Datum odeslání: 20.čvc.2005 v 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.
|
Odeslal: Jan Pajerchin
Datum odeslání: 20.čvc.2005 v 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
|
Odeslal: de Forbes
Datum odeslání: 20.čvc.2005 v 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 "
|
Odeslal: Jarek
Datum odeslání: 21.čvc.2005 v 13:36
|
Teď už si poradím. Dík J.
|
Odeslal: de Forbes
Datum odeslání: 21.čvc.2005 v 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.
|
|