Εμφάνιση αναρτήσεων με ετικέτα σύνδεση με GStarCad. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα σύνδεση με GStarCad. Εμφάνιση όλων των αναρτήσεων

Κυριακή 11 Δεκεμβρίου 2016

Μεθοδολογία σύνδεσης Excel με εφαρμογές τύπου Cad - Μέρος 3ο


Στο τρίτο αυτό μέρος του αφιερώματος σχετικά με την σύνδεση Excel - Cad και ειδικώτερα με την "αποστολή" γεωμετρικών δεδομένων από κελλιά που βρίσκονται στο Excel , κατευθείαν στο σχεδιαστικό περιβάλλον του GStarCad . Πατώντας απλά στο κουμπί με ένδειξη "Draw Data inside GStarCad" , η σύνδεση Excel - GStarCad γίνεται ταχύτατα και τα δεδομένα εμφανίζονται στη σχεδιαστική πινακίδια του GStarCad με την χρήση της εντολής Zoom Extends .

Στο Excel , θα πρέπει να ενεργοποιηθούν οι μακροεντολές για να "δουλέψει" η όλη διαδικασία μεταφοράς των δεδομένων.



Το παράδειγμα αυτό είναι πιο ολοκληρωμένο σε σχέση με τα προηγούμενα . Πραγματεύεται τον αυτόματο σχεδιασμό όψεων κτιρίων (απλή προέκδοση και όχι τελικό πρόγραμμα) με βάση γεωμετρικά στοιχεία που βρίσκονται σε συγκεκριμένα κελλιά στο Excel . Τα δεδομένα είναι οργανωμένα ανά στήλη και τελικά τοποθετούνται σε συγκεκριμένα επίπεδα στο σχέδιο .

Βέβαια , επειδή ο κώδικας της Visual Basic του Excel είναι "ανοικτός" , μπορεί κάποιος να πειραματιστεί , να προσθέσει δυνατότητες όπως π.χ. η συνολική επιφάνεια κάθε όψης κ.λ.π.

Πιστεύω το τρίτο αυτό μέρος του αφιερώματος να έλυσε κάποιες ακόμη απορίες πάνω στην σύνδεση Excel - GStarCad και στην διαδικασία αυτόματης μεταφοράς δεδομένων . Η διαδικασία είναι αντίστοιχη αν θέλουμε να συνδέσουμε το Excel με το Autocad

Αρκεί να γίνουν κάποιες τροποποιήσεις στην υπορουτίνα σύνδεσης των εφαρμογών μεταξύ τους .







Sub AcadConnect()

On Error Resume Next

Set AcadApp = GetObject(, "GStarCad.Application")
If Err Then
    Err.Clear
    Set AcadApp = CreateObject("GStarCad.Application")
    AcadApp.Visible = True
    If Err Then
        MsgBox Err.Description
        Exit Sub
    End If
End If

End Sub

Αρκεί , εκεί που γράφει GStarCad.Application , να γραφτεί Autocad.Application και τα δεδομένα θα σταλούν στο Autocad που θα πρέπει να είναι ανοιχτό σε ένα άδειο σχέδιο .

Τόσο απλή η διαδικασία ώστε τα δεδομένα να "πάνε" στο Autocad , με μια μικρή αλλαγή ...

Πειραματιστείτε και αν υπάρξουν απορίες , θα επανέλθουμε με συστάσεις για την επίλυσή τους.

Κατεβάστε από εδώ το παράδειγμα σε περίπτωση που θέλετε να πειραματιστείτε.


Δευτέρα 28 Νοεμβρίου 2016

Μεθοδολογία σύνδεσης Excel με εφαρμογές τύπου Cad - Μέρος 2ο

Επανερχόμαστε στο θέμα επικοινωνίας του Excel με εφαρμογές τύπου Cad και συγκεκριμένα το GStarCad. Όπως αναλύθηκε στο 1ο μέρος του αφιερώματος , η διασύνδεση είναι σχετικά απλή υπόθεση . 

Απαιτούνται όπως αναλύθηκε κάποια υποπρογράμματα το καθένα από τα οποία αναλαμβάνουν συγκεκριμένη "εργασία" έτσι ώστε να αποστέλλονται στο GStarCad συγκεκριμένου τύπου αντικείμενα με απλό και κατανοητό τρόπο . Κάποιο υποπρόγραμμα δηλαδή "αποστέλλει" κείμενο , κάποιο αποστέλλει απλές γραμμές , κάποιο κύκλους (θα το δούμε σε επόμενο αφιέρωμα) , κάποιο διαστάσεις κ.λ.π.


Μετά την σύνδεση με το GStarCad , η διαδικασία σχεδίασης υλοποιείται με "αποστολή" βασικών σχημάτων (γραμμές και κείμενο) , σε συγκεκριμένες θέσεις στο σχέδιο .



Sub CreateShapes()

 Dim xmin As Double, xmax As Double
 Dim ymin As Double, ymax As Double
 Dim orgx As Double, orgy As Double
 Dim Lx As Double, Ly As Double
 Dim Sxolia As String
 Dim dl As Double, dx As Double, dy As Double
 
 ' Σημείο εκκίνησης σχεδίασης του παραλληλογράμμου
 orgx = Cells(11, 2)
 orgy = Cells(11, 3)
 
 ' Διαστάσεις ΠΛΑΤΟΣ , ΥΨΟΣ του παραλληλογράμμου
 dx = Cells(16, 2)
 dy = Cells(16, 3)
 
 'Σύνδεση με το Autocad μέσω OLE
 
 AcadConnect
 
 ' Καθορισμός επιπέδων σχεδίασης
 
 AcadNewLayer "Perigramma", 1
 AcadNewLayer "Keimeno", 3
 
 Worksheets("DataSheet").Activate
 
 
 
 AcadLine orgx, orgy, orgx + dx, orgy, "Perigramma"
 AcadLine orgx + dx, orgy, orgx + dx, orgy + dy, "Perigramma"
 AcadLine orgx + dx, orgy + dy, orgx, orgy + dy, "Perigramma"
 AcadLine orgx, orgy + dy, orgx, orgy, "Perigramma"
 
 sx = orgx + dx + 1
 sy = orgy + dy
 
 
 platos = "ΠΛΑΤΟΣ : " & Str$(dx)
 ypsos = "ΥΨΟΣ : " & Str$(dy)
 embado = "ΕΜΒΑΔΟ : " & Str$(dx * dy)
 perimetros = "ΠΕΡΙΜΕΤΡΟΣ : " & Str$(2 * dx + 2 * dy)
 
 AcadText sx, sy, 0.15, 0, "Keimeno", platos
 AcadText sx, sy - 0.3, 0.15, 0, "Keimeno", ypsos
 AcadText sx, sy - 0.6, 0.15, 0, "Keimeno", embado
 AcadText sx, sy - 0.9, 0.15, 0, "Keimeno", perimetros
 
 
 AcadClose
    
End Sub


Ουσιαστικά , από συγκεκριμένα κελλιά στο φύλλο εργασίας που το ονομάσαμε "DataSheet" , διαβάζεται το σημείο εκκίνησης του σχήματος και οι διαστάσεις του παραλληλογράμμου που "στέλνουμε" στο Cad . Επίσης στο σχέδιο γράφεται και κάποιο κείμενο σχετικά με τις διαστάσεις , το εμβαδό και την περίμετρο του παραλληλογράμμου που "στείλαμε" από το Excel στο Cad.

Το σχετικό Excel αρχείο μπορείτε να το κατεβάσετε από εδώ .

Μόλις ζητήσετε να ανοίξει , θα ερωτηθείτε σχετικά με το αν επιθυμείτε να ενεργοποιηθούν οι μακροεντολές . Θα απαντήσετε θετικά κάνοντας κλίκ στο Ok και στη συνέχεια , θα εμφανιστεί το φύλλο εργασίας 

Αλλάζουμε τις παραμέτρους που επιθυμούμε σχετικά με τις διαστάσεις του παραλληλογράμμου που θα σχεδιαστεί και ακολούθως , απλά "πατάμε" πάνω στο κουμπί που βρίσκεται στο κάτω αριστερά τμήμα του φύλλου εργασίας και έχει ένδειξη "ΣΧΕΔΙΑΣΕ ΤΟ ΠΑΡΑΛΛΗΛΟΓΡΑΜΜΟ ... "

Αν το GStarCad δεν είναι ήδη ανοικτό , ανοίγει τη στιγμή εκείνη και με την εντολή ZOOM Extends βλέπουμε το σχέδιο στην οθόνη .

Το απλό αυτό σχέδιο το οποίο ουσιαστικά είναι και η πρώτη ολοκληρωμένη μας απόπειρα "αποστολής" απλών σχεδιαστικών αντικειμένων από το Excel στο Autocad .

Μελετήστε το , κάντε πειραματισμούς και θα επανέλθουμε με άλλο ένα αφιέρωμα το οποίο θα εξηγείται ένα πιο σύνθετο παράδειγμα στο οποίο θα "αποστέλλονται" στο Cad πιο σύνθετα σχεδιαστικά αντικείμενα.

Τρίτη 22 Νοεμβρίου 2016

Μεθοδολογία σύνδεσης Excel με εφαρμογές τύπου Cad - Μέρος 1ο

Το Excel , με σχετικά απλό τρόπο , επικοινωνεί με προγράμματα σαν το Autocad , το GStarCad, το BricsCad το zwCad και λοιπά αντίστοιχα προγράμματα . Αυτό συμβαίνει γιατί υποστηρίζουν ίδιου ή αντίστοιχου τύπου αντικείμενα τα οποία το Excel τα "βλέπει" με τον ίδιο τρόπο.

Ουσιαστικά , αρκεί μια ενασχόληση και μικρή εμπειρία σε προγραμματισμό σε Visual Basic - VBA for Excel προκειμένου να μπορέσουμε να "μιλήσουμε" με προγράμματα τύπου Cad προκειμένου να σχεδιάσουν αυτόματα αντικείμενα στο περιβάλλον του Cad χωρίς να μας ενδιαφέρει το πρόγραμμα Cad στο οποίο αναφερόμαστε . Βέβαια , για να μιλάμε επί συγκεκριμένης βάσης , το παράδειγμα που θα δούμε θα αφορά το GStarCad αλλά θα δούμε το σημείο που θα πρέπει να επέμβει κάποιος για να μπορεί να αξιοποιήσει και άλλα Cad προγράμματα .

1. Η σύνδεση Excel με το GStarCad

Αρχικά δηλώνουμε μεταβλητές που θα είναι ορατές σε όλο το πρόγραμμα και υλοποιούμε την σύνδεση .

Public AcadApp As Object
Public AcadDoc As Object
Public moSpace As Object
Public paSpace As Object
Public TextObj As Object
Public LineObj As Object
Public PLineObj As Object
Public CircleObj As Object
Public LayerObj As Object

Sub AcadConnect(id As Integer)

On Error Resume Next

id = 0
Set AcadApp = GetObject(, "GStarCad.Application")
If Err Then
      MsgBox "Activate GStarCad before you run this program", , "ERROR !!!"
      id = -100
    Exit Sub
End If

End Sub

Η διαδικασία της διασύνδεσης είναι απλή και εκείνο που μένει είναι να δημιουργήσουμε υποπρογράμματα - υπορουτίνες ώστε να "στείλουμε" στο Cad γραμμές , κύκλους , κείμενο κλπ . Ακολουθεί απλή υπορουτίνα για "αποστολή" μιας απλής γραμμής δύο διαστάσεων . 

Sub AcadLine(xs As Double, ys As Double, xe As Double, ye As Double, LayerName As String)
    Dim sp(0 To 2) As Double
    Dim ep(0 To 2) As Double
    
    sp(0) = xs
    sp(1) = ys
    sp(2) = 0#
    ep(0) = xe
    ep(1) = ye
    ep(2) = 0#
    
    Set LineObj = AcadApp.ActiveDocument.ModelSpace.AddLine(sp, ep)
    
    LineObj.Layer = LayerName
End Sub

Η διαδικασία "αποστολής" γεωμετρικών στοιχείων κύκλου είναι εξίσου απλή :

Sub AcadCircle(xc As Double, yc As Double, R As Double, LayerName)
    Dim cp(0 To 2) As Double
    
    cp(0) = xc: cp(1) = yc: cp(2) = 0#
    Radius# = R
    Set CircleObj = AcadApp.ActiveDocument.ModelSpace.AddCircle(cp, Radius#)
    CircleObj.Layer = LayerName
End Sub

Ουσιαστικά , γράφουμε υπορουτίνες για την αποστολή γεωμετρικών στοιχείων από τα οποία αποτελείται ένα συνθετότερο σχέδιο . Ακολουθεί παράδειγμα γραφής υπορουτίνας για γραφή απλού κειμένου .

Sub AcadText(xp, yp, h, Angle, LayerName, txt)
    Dim pp(0 To 2) As Double
    
    pp(0) = xp: pp(1) = yp: pp(2) = 0#
    Set TextObj = AcadApp.ActiveDocument.ModelSpace.AddText(txt, pp, h)
    TextObj.Rotation = Angle
    TextObj.Layer = LayerName
End Sub

Η σύνθεση όλων αυτών με βάση τιμές που διαβάζονται από συγκεκριμένα κελλιά του φύλλου εργασίας , σε συνδυασμό με τις κατάλληλες υπορουτίνες , παράγουν απλά και σύνθετα σχέδια , με πληροφορίες οργανωμένες σε επίπεδα (layers) , διαστάσεις κ.λ.π.

Στο πρώτο μέρος αυτού του αφιερώματος , μπορείτε να μελετήσετε τα μικρά αποσπάσματα προγράμματος που παρατέθηκαν . 

Στο αμέσως επόμενο θα αναλυθούν συνθετότερες υπορουτίνες και θα υπάρχει η δυνατότητα να "κατεβάσετε" ένα πιο ολοκληρωμένο παράδειγμα για να πειραματιστείτε .

Καλό διάβασμα και λίαν προσεχώς η συνέχεια .