FastFiber

Koppeling met excel

Gestart door Gijs, wo 09 02 2005, 09:01:30

Vorige topic - Volgende topic

Gijs

Bestaat er een mogelijkheid om een koppeling te maken met een excel bestand om dan vandaaruit weer een tek aan te sturen.
De mogelijkheid bestaat wel om attributes te exporteren naar een excel bestand, maar naar mijn inziens geeft dit alleen een weerzien van getallen reeks.
Wie  :? oh wie  8) weet hier een antwoord op ?

bart

e.a is te doen zij veel voorbeelden van te vinden op het net waarbij een database wordt gekoppeld aan een tekening(meestal niet gratis).

Zelf heb ik nooit de moeite genomen om uit te zoeken hoe rechtstreeks koppelen precies werkt.
(heb ook haast gen werk waarop ik dat zinvol zou kunnen toepassen)

ik gebruik een tussenstapje door het excel bestand te exporteren als comma gescheiden tekst bestand.
Deze zijn middels een lisp uitstekend te benaderen. (*.csv)
je kan daarmee een alles tekenen wat je wilt.
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Gijs

Weer een stapje dichterbij.
Heb hiernaar gekeken, maar als ik het bestand open en een paar getallen wijzigd, kan ik het bestand niet opslaan (read only).
Je heb het over het besturen middels een lisp (welke ??)
Ook ben ik erachter dat je de tekening met blokken moet opbouwen.

bart

http://new.cadalyst.com/code/tips/CodeSearch_Detail.cfm?ID=ALSP403

zie hier een voorbeeld voor het tekenen van een 3d polyline

De lisp (of vba) routine die in jouw geval nodig is zal je waarschijnlijk zelf moeten (laten) schrijven.
een pasklare oplossing bestaat over het algemeen niet
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Gijs

Bedankt bart, hier gaan we zeker mee verder stoeien. :D

HofCAD

#5
Citaat van: Michel HoogwerfBestaat er een mogelijkheid om een koppeling te maken met een excel bestand om dan vandaaruit weer een tek aan te sturen.
De mogelijkheid bestaat wel om attributes te exporteren naar een excel bestand, maar naar mijn inziens geeft dit alleen een weerzien van getallen reeks.
Wie  :? oh wie  8) weet hier een antwoord op ?

Beste Michel,

In de dikke pillen van ir. R. Boeklagen van het CAD College TEC in
Nijmegen zit een hoofdstuk over ActiveX in Visual LISP voor  "Koppeling met Office".

Zie ook http://www.cadcollege.nl/boeken/ voor:
AutoCAD 2002 Comuter ondersteund ontwerpen ISBN 90-72487-29-x
AutoCAD 2004 Comuter ondersteund ontwerpen ISBN 90-72487-37-0
AutoCAD 2005 Comuter ondersteund ontwerpen ISBN 90-72487-41-9.


In deze boeken geeft hij een uitgewerkt voorbeeld: hoe je vanuit een Excelbestand met  coordinaten,
je automatisch binnen AutoCAD "het geheim van de Smid" kan laten tekenen.
Indien je daarbij ook de DSX procedures neemt, die Joop mij eerder op
mijn vraag "Kan men met Visual LISP velden selecteren in EXCEL"
http://www.cadsite.be/smf/index.php/topic,194.msg811.html#msg811
in CADsite Forum Index » Autolisp heeft gestuurd, dan kun je zoals Joop
mij heeft verteld een heeeeel eind komen.
En dat is inderdaad ook zo.

Zie ook http://www.atablex.com/htmls/excel-bible.htm

Groetjes HofCAD CSI.
ACADcadabra

Gijs

Harstikke bedankt Hofstad CSI, hier ga ik zeker mee aan de slag. :D

Gijs

Sorry, HofCAD CSI, ben er nog niet helemaal bij op de vroege woensdag morgen om 07:25 uur.

Gijs

Citaat van: HofCAD
Citaat van: Michel HoogwerfBestaat er een mogelijkheid om een koppeling te maken met een excel bestand om dan vandaaruit weer een tek aan te sturen.
De mogelijkheid bestaat wel om attributes te exporteren naar een excel bestand, maar naar mijn inziens geeft dit alleen een weerzien van getallen reeks.
Wie  :? oh wie  8) weet hier een antwoord op ?

Beste Michel,

In de dikke pillen van ir. R. Boeklagen van het CAD College TEC in
Nijmegen zit een hoofdstuk over ActiveX in Visual LISP voor  "Koppeling met Office".

Zie ook http://www.cadcollege.nl/boeken/ voor:
AutoCAD 2002 Comuter ondersteund ontwerpen ISBN 90-72487-29-x
AutoCAD 2004 Comuter ondersteund ontwerpen ISBN 90-72487-37-0
AutoCAD 2005 Comuter ondersteund ontwerpen ISBN 90-72487-41-9.


In deze boeken geeft hij een uitgewerkt voorbeeld: hoe je vanuit een Excelbestand met  coordinaten,
je automatisch binnen AutoCAD "het geheim van de Smid" kan laten tekenen.
Indien je daarbij ook de DSX procedures neemt, die Joop mij eerder op
mijn vraag "Kan men met Visual LISP velden selecteren in EXCEL"
in CADsite Forum Index » Autolisp heeft gestuurd, dan kun zoals Joop
mij heeft verteld een heeeeel eind komen.
En dat is inderdaad ook zo.

Groetjes HofCAD CSI.

Alvast bedankt, zie ook berichtgevingen hierboven.
Maar nu het volgende: de verwijzing die je op gegeven heb van JOOPheb ik binnen gehaald, kan er alleen niet veel mee, gaarne een korte uitleg?!?

Joop

Michel,

Als je de lisproutines en de erbij gegeven commentaar bestudeerd "kom je een heel eind".
Dit vraagt wel enige kennis van programmeren in LISP.
De basis is dat je nieuwe commandos ter beschikking hebt voor toegang en manipulatie van Exell vanuit AutoCAD.

:P
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

HofCAD

Citaat van: Michel Hoogwerf
Maar nu het volgende: de verwijzing die je op gegeven heb van JOOPheb ik binnen gehaald, kan er alleen niet veel mee, gaarne een korte uitleg?!?

Beste Michel,

Dit is deel 1 van een programma waarin ik laat zien, dat je vanuit
excel een LISP-programma van data kan voorzien.
Het getekende huisje staat bekend als 'Het geheim van de smid'.
Volgende week probeer ik je weer iets aan te reiken.

Groetjes HofCAD CSI.

Maak in Excel het bestand C:\temp\smid.xls met
daarin:


120   120   200   120
200   120   200   240
200   240   120   240
120   240   120   120
120   120   200   240
200   240   160   300
160   300   120   240
120   240   200   120


Maak in Notepad het bestand C:\temp\smid.lsp met
daarin:


(defun C:Smid()
 (defun ExcelKoppel ()
                                 ;Procedure voor het koppelen van Excel
   (if   (not (setq Excel (vlax-get-object "Excel.Application")))
     (setq Excel (vlax-create-object "Excel.Application"))
   )
   (vlax-put-property Excel 'Visible :vlax-true)
 )
 (defun ExcelOpen (Bestand / ExcelBestanden)
                                 ;Procedure voor het openen van een Excelbestand
   (setq ExcelBestanden (vlax-get-property Excel 'Workbooks))
   (setq ExcelBestand
      (vlax-invoke-method ExcelBestanden 'Open Bestand)
   )
 )
 (defun ExcelLees (Tabblad Rij Kolom / Bladen Blad Velden Veld Waarde)
                                 ;Procedure voor het lezen van een Celwaarde
   (setq Bladen (vlax-get-property ExcelBestand 'worksheets))
   (setq Blad (vlax-get-property Bladen 'item Tabblad))
   (setq Velden (vlax-get-property Blad 'Cells))
   (setq Veld (vlax-get-property Velden 'item Rij Kolom))
   (setq Waarde (vlax-variant-value Veld))
   (setq Waarde (vlax-get-property Waarde 'Value))
   (setq Waarde (vlax-variant-value Waarde))
 )
 (defun Excel_Lijnen (Space tabblad RijStart KolomStart regels / i)
               ;Procedure voor het tekenen van het huisje
   (setq i 1)
   (while (<= i regels)
     (TekLijn Space
                   (ExcelLees tabblad (+ RijStart i) (+ KolomStart 1))
        (ExcelLees tabblad (+ RijStart i) (+ KolomStart 2))
        (ExcelLees tabblad (+ RijStart i) (+ KolomStart 3))
        (ExcelLees tabblad (+ RijStart i) (+ KolomStart 4))
     )
     (setq i (+ i 1))
   )
 )
 (defun TekLijn (Space X1 Y1 X2 Y2 / Punt1 Punt2)
                                      ;Procedure voor het tekenen van een lijn
   (setq Punt1 (vlax-3d-point (list X1 Y1 0)))
   (setq Punt2 (vlax-3d-point (list X2 Y2 0)))
   (vla-AddLine Space Punt1 Punt2)
 )
;;;******Begin van het programma**********************************
 (setq   Tabblad      "Blad1"
       Bestandsnaam "smid"
   Bestand      (strcat bestandsnaam ".xls")
   DirBestand (strcat (vl-filename-directory (vl-filename-mktemp)) "\\")
   ;; Of bijvoorbeeld DirBestand  "c:\\temp\\"
   DirEXCEL   "c:\\progra~1\\micros~1\\office\\"
   ;; Of bijvoorbeeld DirEXCEL  "c:\\Microsoft Office\\Office\\"
 )

 (if (car (atoms-family 1 '("vl-load-com")))
   (vl-load-com)
 )
 (setq AutoCAD (vlax-get-acad-object))
 (setq Pref (vla-get-Preferences AutoCAD))
 (setq Screen (vla-get-Display Pref))
 (setq Doc (vla-get-ActiveDocument AutoCAD))
 (setq MS (vla-get-ModelSpace Doc))
 (setq   ~cmd (getvar "CMDECHO")
   ~osm (getvar "OSMODE")
 )
 (setvar "CMDECHO" 0)
 (setvar "OSMODE" 0)
 (setvar "LIMMIN" '(0 0))
 (setvar "LIMMAX" '(420 297))
 (setvar "LIMCHECK" 0)
 (vla-ZoomAll AutoCAD)
 (if (findfile (strcat DirBestand Bestand))
   (progn
     (ExcelKoppel)
     (ExcelOpen (strcat DirBestand Bestand))
     (princ
     (strcat "\nTekening in AutoCAD is klaar.\n"
     "Verander in Excel de waarden en run het programma opnieuw"))
     (Excel_Lijnen MS tabblad 0  0  8     )
)
    (princ (strcat DirBestand Bestand " niet gevonden.") )
 )
 (setvar "CMDECHO" ~cmd)
 (setvar "OSMODE" ~osm)
 (princ)
)
ACADcadabra

cadkoppie

Ik vind het heel tof die koppeling met excel maar ik heb nu nog een probleem :roll:
Elk klepje en pomp in mijn tekening bestaat uit een block met daar aan attributes (Tagnummers, omschrijving, grootte etc) Nu wil ik graag een excel koppeling maken, m.a.w. elk symbool (block) dat in de tekening staat (meerdere tekeningen samenvoegen tot 1 bestand moet mogelijk zijn) daarvan de attributes weergeven in een excel lijst. Maar dan zodanig dat wanneer ik een waarde wijzig in excel deze ook wordt doorgevoerd in Acad. Ook wanneer ik in excel enkele kolommen toevoeg (opmerkingen die niet in de attributes terug komen) en daarna in autocad een symbool toevoeg moeten de opemerkingen achter de juiste regel staan (er wordt dus een regel tussengevoegd).
Met de autocad attribute extractor is het wel mogelijk om de attributes in een lijst te zetten en deze te kopieeren naar excel, maar op deze manier is er geen link tussen de 2.
De vraag is nu: Wie heeft ervaring op dit gebied en kan me helpen?

FastFiber