Εμφάνιση αναρτήσεων με ετικέτα προγραμματισμός. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα προγραμματισμός. Εμφάνιση όλων των αναρτήσεων

Δευτέρα 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) , διαστάσεις κ.λ.π.

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

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

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