Vytisknout stránku | Zavřít okno

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
Už chápu. Dík moc :)


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.



Vytisknout stránku | Zavřít okno