FastFiber

Excel datagegevens door CAD laten tekenen

Gestart door dicamillo, do 09 03 2006, 21:28:08

Vorige topic - Volgende topic

dicamillo

Hey iedereen,

Ik ben ind ingenieur bouwkunde in opleiding en heb een probleempje waar vast en zeker een oplossing voor bestaat.  Ik heb in Excel 1 kolom met getallen die op de x-as moeten komen, en 1 kolom met getallen die op de y-as moeten komen.  Bestaat er enige oplossing om die gegevens automatisch door CAD te laten tekenen in een grafiek (in lijn vorm, want ik moet de oppervlakte onder die grafiek bepalen)?  Heb al geprobeerd met Cadtool maar wil niet lukken.

Alvast enorm bedankt !!!!!!!

HofCAD

#1
Citaat van: dicamillo op do 09 03 2006, 21:28:08
Hey iedereen,

Ik ben ind ingenieur bouwkunde in opleiding en heb een probleempje waar vast en zeker een oplossing voor bestaat.  Ik heb in Excel 1 kolom met getallen die op de x-as moeten komen, en 1 kolom met getallen die op de y-as moeten komen.  Bestaat er enige oplossing om die gegevens automatisch door CAD te laten tekenen in een grafiek (in lijn vorm, want ik moet de oppervlakte onder die grafiek bepalen)?  Heb al geprobeerd met Cadtool maar wil niet lukken.

Alvast enorm bedankt !!!!!!!

Beste Dicamillo,

In de dikke pillen van ir. R. Boeklagen van het CAD College TEC in
Nijmegen stond vroeger 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 het boek voor AutoCAD 2006 staat het hoofdstuk over ActiveX in Visual LISP
voor  "Koppeling met Office" er niet meer in.

In het genoemde  hoofdstuk wordt gedemonstreerd de koppeling met office  aan
de hand van 'Het geheim van de Smid'
Het programma wordt dan zoiets als onderstaand.
(Dat hij daarbij voor elk lijnsegment het startpunt expliciet aangeeft, is waarschijnlijk
een didactische keuze) 


Kijk ook eens op:  http://www.atablex.com/htmls/excel-bible.htm

Groetjes HofCAD CSI.

Maak in Excel het bestand C:\temp\smid.xls met
daarin op Tabblad   'Blad1' de onderstaande waarden:


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  "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")
  )
(mapcar 'setvar
    '("CMDECHO" "OSMODE" "LIMMIN" "LIMMAX" "LIMCHECK")
    '(0 0 (0 0) (420 297) 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.") )
  )
(mapcar 'setvar
    '("CMDECHO" "OSMODE") (list ~cmd ~osm))
  (princ)
)

ACADcadabra