http://www.spinellis.gr/pubs/conf/1993-EPY-Tekton/html/tekton.html
This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:
  • Diomidis Spinellis. Tekton: A program for the composition, design, and three-dimensional view of architectural subjects. In 4th Panhellenic Informatics Conference, volume I, pages 361–372. Greek Computer Society, December 1993. In Greek. Green Open Access

This document is also available in PDF format.

The document's metadata is available in BibTeX format.

Find the publication on Google Scholar

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

Το σύστημα σύνθεσης σχεδιασμού και τρισδιάστατης απεικόνισης αρχιτεκτονικών θεμάτων Τέκτων

Διομήδης Σπινέλλης
LH Λογισμική
Στουρνάρα 23
Αθήνα
dspin@leon.nrcps.ariadne-t.gr

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

Εισαγωγή

Η χρησιμοποίηση ηλεκτρονικών υπολογιστών σε αρχιτεκτονικές εφαρμογές μπορεί να προσφέρει πολλά πλεονεκτήματα [Ger77]. Στο άρθρο αυτό περιγράφουμε το πρόγραμμα σύνθεσης σχεδιασμού και τρισδιάστατης απεικόνισης αρχιτεκτονικών θεμάτων «Τέκτων». Στόχος μας είναι να παρουσιάσουμε το αποτέλεσμα μιας ελληνικής προσπάθειας στο χώρο της αρχιτεκτονικής σχεδίασης με βοήθεια υπολογιστή (CAAD — Computer Aided Architectural Design). Το σύστημα είναι ελληνικής μελέτης και υλοποίησης, αποτελείται από 67000 γραμμές πηγαίου κώδικα και η κατασκευή του απασχόλησε 12 άτομα σε διάστημα τριών ετών. Μέχρι σήμερα το χρησιμοποιούν πάνω από 600 αρχιτέκτονες και μηχανικοί στην Ελλάδα και την Κύπρο. Εκτός από μελέτες μικρών και μεγάλων κατοικιών, έχει χρησιμοποιηθεί και για την αποτύπωση όλων των χώρων διοίκησης της Εθνικής Τραπέζης (140000 τ.μ.), τη μελέτη συγκροτήματος σχολικών κτιρίων στη βόρεια Ελλάδα, σε πρόταση διαγωνισμού για την αναδιαμόρφωση πλατείας στην Ξάνθη και τη μελέτη μονάδας βιολογικού καθαρισμού στη Δεσφίνα. Έχει τιμηθεί με το «Βραβείο Τελειότητας» του ελληνικού περιοδικού RAM το 1991 (που παρουσιάστηκε και στο αμερικανικό Byte) και το βραβείο «Καλύτερο Software Εφαρμογών CAD» από τους αναγνώστες του περιοδικού Computer για όλους. Στις επόμενες ενότητες θα παρουσιάσουμε συνοπτικά άλλα σχετικά συστήματα, τα λειτουργικά χαρακτηριστικά του «Τέκτων», και τις πιο σημαντικές τεχνικές υλοποίησης που χρησιμοποιήθηκαν.

Άλλα σχετικά συστήματα

Ο τομέας του σχεδιασμού με τη χρήση ηλεκτρονικών υπολογιστών ξεκίνησε το 1962 με το πρωτοποριακό πρόγραμμα Sketchpad του Ivan Sutherland [Sut63]. Η εφαρμογή υπολογιστών στον αρχιτεκτονικό σχεδιασμό αναπτύσσεται από τους [Gre75], [Neg76] και [Ger77]. Στη βιβλιογραφία υπάρχουν περιγραφές συστημάτων όπως το ARK-2 [Lee77], το OXYSYS [HOS77], και το SMOOC [HD78]. Οι δυνατότητες ολοκληρωμένων εμπορικών συστημάτων τρισδιάστατου σχεδιασμού όπως το Applicon, το Auto-trol, το Calma, το Intergraph, και το McAuto περιγράφονται από τον [Sto84a σ. 181-193].

Στους προσωπικούς υπολογιστές γενικές μηχανολογικές σχεδιάσεις γίνονται συχνά με το πρόγραμμα AutoCAD της Autodesk, ενώ ειδικά για αρχιτεκτονικά σχέδια έχουν περιγραφεί συστήματα όπως το [Col83]. Άλλα ελληνικά συστήματα αρχιτεκτονικής σχεδίασης είναι το CADware και το Palace τα οποία όμως είναι υλοποιημένα πάνω στο σχεδιαστικό πρόγραμμα AutoCAD.

Λειτουργική περιγραφή

Στις επόμενες παραγράφους θα περιγράψουμε ορισμένα βασικά λειτουργικά χαρακτηριστικά του «Τέκτων» που το διαφοροποιούν από άλλα σχετικά συστήματα.

Επικοινωνία με τον χρήστη

Οι εντολές του χρήστη δίδονται επιλέγοντας με το ποντίκι τη σχετική εντολή από τρεις διαφορετικές περιοχές της οθόνης όπως φαίνεται στην εικόνα 1. Στην πάνω περιοχή ο χρήστης επιλέγει το αντικείμενο ασχολίας του (π.χ. τοίχος, άνοιγμα, διαστασιολόγιση, τρισδιάστατη απεικόνιση). Έχοντας επιλέξει αυτό το αντικείμενο και καθορίσει τις σχετικές παραμέτρους του από το μενού επιλογών, στην αριστερή πλευρά της οθόνης εμφανίζεται μια σειρά επιλογών που έχουν σχέση με το συγκεκριμένο αντικείμενο (π.χ. προσθήκη τοίχου, καθορισμός παραμέτρων ανοίγματος, κατασκευή μιας πρόσοψης). Τέλος, με επιλογές από το κάτω μέρος της οθόνης ο χρήστης μπορεί να εκτελέσει μια σειρά από ενέργειες ανεξάρτητες από τη συγκεκριμένη εργασία όπως τη μέτρηση μιας αποστάσεως, τον προσδιορισμό της έλξης διαφόρων τμημάτων και τη μεγέθυνση τμημάτων του σχεδίου. Οι επιλογές από τα τρία τμήματα της οθόνης είναι προσιτές σε όλα τα στάδια του προγράμματος (modeless interface) απλουστεύοντας έτσι την εκμάθυνση και χρήση του συστήματος.


Εικόνα 1: Το περιβάλλον λειτουργίας του «Τέκτων».

Ο προσδιορισμός των συντεταγμένων μπορεί να γίνει με το ποντίκι ή με το πληκτρολόγιο με την άμεση πληκτρολόγηση του σχετικού αριθμού. Οι εκφράσεις των συντεταγμένων καθώς και όλων των άλλων μεγεθών που δίδονται στο πρόγραμμα μπορεί να είναι τυχαίες αριθμητικές συναρτήσεις. Για τη διευκόλυνση προσδιορισμού συντεταγμένων σχετικών με αντικείμενα που έχουν ήδη εισαχθεί, το σύστημα υποστηρίζει σημεία έλξης (snap points). Έτσι, όταν ο δρομέας οριζόμενος από το ποντίκι βρεθεί κοντά σε ένα «ενδιαφέρον» σημείο (λ.χ. γωνία τοίχου, άκρη γραμμής, κέντρο τόξου, σημείο του καννάβου), οι συντεταγμένες ορίζονται ως ακριβώς το σημείο εκείνο στο οποίο έχει πλησιάσει ο δρομέας. Ένας μηχανισμός οριοθετημένης ευαισθησίας αλλάζει το συντελεστή έλξης ανάλογα με την κλίμακα παρουσιάσεως του κτηρίου, έτσι ώστε η ευαισθησία να αλλάζει ανάλογα μεν με την κλίμακα, αλλά να αποφεύγεται η επιλογή άσχετων σημείων σε μικρές κλίμακες, και να μη δυσχεραίνεται υπερβολικά η επιλογή τους στις μεγάλες κλίμακες. Η μέθοδος αυτή αποτελεί μια στατική προσέγγιση της δυναμικής διασύνδεσης των τμημάτων ενός κτιρίου που περιγράφεται από την [Bit91].

Όλες οι επιλογές ανάμεσα σε διαφορετικά αντικείμενα (είδη ανοιγμάτων, χρώματα, γραμμοσκιάσεις, τύποι γραφής), γίνονται με την παρουσίαση στην οθόνη σχετικών εικονιδίων που παριστάνουν τις αντίστοιχες επιλογές. Ειδικά για την επιλογή των αρχείων, ο χρήστης έχει τη δυνατότητα να επιλέξει το αρχείο που επιθυμεί μέσα από επιλογές διαλόγου (dialog boxes) που υλοποιούν με εποπτικό και εύκολο τρόπο τα wildcard που υπάρχουν σε διάφορα λειτουργικά συστήματα. Συγκεκριμένα ο χρήστης μπορεί να προσδιορίσει τμήματα του ονόματος του αρχείου με συγκεκριμένο τρόπο ή με wildcard βλέποντας κάθε στιγμή την τομή των περιορισμών (constraints) που επέβαλε (λ.χ. ποιοι είναι οι σχεδιασμένοι όροφοι της τομής Α του κτιρίου KOS3).

Αρχιτεκτονικές οντότητες


Εικόνα 2: Παραδείγματα των αρχιτεκτονικών οντοτήτων του «Τέκτων».

Ένα κτίριο σχεδιασμένο με το «Τέκτων» είναι ένα σύνολο από οντότητες ορισμένες από το χρήστη. Κάθε οντότητα έχει ορισμένα χαρακτηριστικά όπως είδος (π.χ. τοίχος, άνοιγμα, στέγη), μέγεθος, θέση, χρώμα, και χαρακτηριστικά ειδικά για τη συγκεκριμένη οντότητα (π.χ. πλάτος τοίχου). Οι ιδιότητες αυτές ορίζονται στις κάθετες επιλογές, αλλά μπορούν και να ληφθούν από μια οντότητα (με την εντολή πάρε παραμέτρους) ή να δοθούν σε μια οντότητα (με την αντίστοιχη εντολή δώσε παραμέτρους). Ορισμένες οντότητες συνδέονται με άλλες με το σχεσιακό τύπο «ανήκει» (π.χ. ένα άνοιγμα «ανήκει» σε ένα συγκεκριμένο τοίχο). Με αυτόν τον τρόπο διατηρούνται σταθερές οι ιδιότητες των συνδεδεμένων οντοτήτων [CFV88]. Παρακάτω περιγράφουμε συνοπτικά τις οντότητες που απαρτίζουν ένα σχέδιο. Οι περισσότερες οντότητες απεικονίζονται και στην εικόνα 2 και παράδειγμα της σύνθεσής τους για το σχεδιασμό μιας κατόψεως στην εικόνα 3.

Κάνναβος
Ο κάνναβος είναι ένα ιδεατό στοιχείο χωρίς πραγματική υλική υπόσταση. Είναι συγκεκριμένα ένα σύνολο από ευθείες που συνήθως αντιστοιχούν με τις «περασιές» του κτηρίου. Τα σημεία τομής των ευθειών αυτών ορίζουν σημεία έλξης, τα οποία διευκολύνουν σημαντικά την σωστή τοποθέτηση των υπολοίπων στοιχείων. Στην εισαγωγή του καννάβου παρέχονται ευκολίες για την κατασκευή γεωμετρικών στοιχείων από παράλληλες και κάθετες ευθείες πάνω στις οποίες θα βασιστεί η τελική σύνθεση.
Τοίχοι
Οι τοίχοι είναι ορθογώνια παραλληλεπίπεδα με ορισμένο πλάτος και ύψος. Αποτελούν το βασικό στοιχείο του κτηρίου, και γι αυτό μπορούν να οριστούν με πολλούς διαφορετικούς τρόπους, όπως με απόσταση από την άκρη κάποιου άλλου τοίχου, παράλληλα με κάποιον άλλο τοίχο, σε κυκλική διάταξη κ.λπ. Κατά τη σχεδίαση των τοίχων, οι τομές τους ενώνονται, έτσι ώστε να σχηματίζεται ένα κλειστό μη κυρτό πολύγωνο. Ειδικές μορφές τοίχων που μπορούν να οριστούν, είναι και τα υποστυλώματα, ορθογώνια και κυκλικά.
Ανοίγματα
Τα ανοίγματα ορίζουν περιοχές των τοίχων στις οποίες τοποθετούνται πόρτες και παράθυρα. Κάθε άνοιγμα συμβολίζεται με ένα επιλεγόμενο εικονίδιο στην κάτοψη, και το αντίστοιχο στην όψη.
Σκιάσεις
Οι σκιάσεις είναι κλειστά πολύγωνα που περιέχουν ένα συνεχές επαναλαμβανόμενο σχήμα (hatch). Χρησιμοποιούνται για την απεικόνιση στοιχείων όπως πλακάκια, παρκέ, σκυρόδεμα, γρασίδι κ.λπ. Επιπλέον μία σκίαση μπορεί να χρησιμοποιηθεί και για συμπαγή χρωματισμό.


Εικόνα 3: Κάτοψη σχεδιασμένη με το «Τέκτων»

Αντικείμενα
Τα αντικείμενα είναι τυχαία γραμμικά σχήματα που περιλαμβάνονται στο πρόγραμμα με τη μορφή μιας βιβλιοθήκης, τοποθετημένα με ορισμένη τη θέση τους, το μέγεθός του, και τον προσανατολισμό τους. Η βιβλιοθήκη των αντικειμένων περιλαμβάνει έπιπλα υπνοδωματίου, σαλονιού, κουζίνας, μπάνιου, γραφείου, και εξωτερικών χώρων. Παραπάνω αντικείμενα μπορούν να οριστούν από το χρήστη, μέσα από το πρόγραμμα «Τέκτων».
Διαστάσεις και πληροφορίες
Οι διαστάσεις και οι πληροφορίες είναι οντότητες που βοηθούν στη δημιουργία του τελικού σχεδίου. Μια διάσταση ορίζεται από ένα ευθύγραμμο τμήμα. Πάνω του καταγράφονται αυτόματα τα μήκη των τομών του με άλλα στοιχεία του κτηρίου (π.χ. τοίχους). Η τελική απεικόνιση της διαστασιολόγισης μπορεί να γίνει και σε απόσταση από τα σημεία τομών, όπως συνηθίζεται στα αρχιτεκτονικά σχέδια. Αντίστοιχα, οι πληροφορίες είναι μικρά ορθογώνια πλαίσια που περιέχουν στοιχεία σχετικά με τα ανοίγματα (ύψος, εμβαδόν), και τις σκιάσεις (εμβαδόν).
Κείμενο
Η χρήστης έχει τη δυνατότητα ορισμού σειρών κειμένου με οποιοδήποτε μέγεθος και προσανατολισμό, διαλέγοντας από 21 διαφορετικές διανυσματικές γραμματοσειρές. Οι γραμματοσειρές είναι ορισμένες από ευθύγραμμα τμήματα για να σχεδιάζονται και από σχεδιογράφους πέννας.
Επίπεδα
Τα «επίπεδα» ορίζονται από ένα κλειστό πολύγωνο; προαιρετικά με ορισμένο πάχος. Χρησιμοποιούνται για τον ορισμό περίπλοκων σχημάτων στο χώρο όπως οι τρούλοι, οι σκάλες, τα μπαλκόνια και ο περιβάλλων χώρος (εικόνα 4).
Στέγες
Οι στέγες ορίζονται από ένα κλειστό πολύγωνο (τη γραμμή απορροής της στέγης), και τις γωνίες των επιπέδων που καταλήγουν στη γραμμή απορροής (ίσες μεταξύ τους στην περίπτωση των ισοκλινών στεγών). Από τα στοιχεία αυτά κατασκευάζονται αλγοριθμικά με αναδρομική επίλυση συστήματος εξισώσεων τα επίπεδα που απαρτίζουν τη στέγη. Στην κάτοψη απεικονίζεται η προβολή των κορφιάδων στο επίπεδο, ενώ στην τρισδιάστατη απεικόνιση οι στέγες αποκτούν το πραγματικό τους σχήμα (εικόνα 4).


Εικόνα 4: Τρισδιάστατη απεικόνιση εξοχικής κατοικίας.

Σκάλες
Οι σκάλες ορίζονται με βάση τη γραμμή ανάβασης η οποία αποτελείται από μια τυχούσα σειρά τόξων και ευθυγράμμων τμημάτων. Στη συνέχεια κατασκευάζονται αυτόματα με βάση είτε το ύψος ή το πλάτος των βαθμίδων. Στην κατασκευή ο χρήστης μπορεί να ορίσει αν θα περιληφθούν τα επιμέρους στοιχεία της σκάλας (όπως τα πάτημα, το ρίχτι, η βάση, οι βραχίονες, οι χειρολισθήρες και τα κιγκλιδώματα) καθώς και τα στοιχεία τους (πλάτος και μήκος).
Γραμμές και τόξα
Οι γραμμές και τα τόξα χρησιμοποιούνται για το σχεδιασμό συμπληρώσεων οι οποίες δεν έχουν αλλιώς προβλεφθεί από το πρόγραμμα (π.χ. λεπτομέρειες κουφωμάτων, σημεία τομής). Και τα δύο στοιχεία μπορούν να οριστούν με πολλούς διαφορετικούς τρόπους όπως τόξα με κέντρο και δύο σημεία, εφαπτόμενα σε γραμμή κ.λπ.

Λειτουργικές ευκολίες

Εκτός από τις λειτουργίες που αφορούν συγκεκριμένες οντότητες, το «Τέκτων» περιλαμβάνει άλλες λειτουργίες που αφορούν στο σύνολο του σχεδίου. Οι κυριότερες από αυτές είναι:
Αλλαγές
Με την επιλογή αλλαγές ο χρήστης μπορεί να ορίσει ένα σύνολο από τυχούσες οντότητες προσθετικά (όλες οι οντότητες που περιλαμβάνονται σε ένα ορθογώνιο) ή αφαιρετικά (εκτός από ορισμένες). Στη συνέχεια πάνω στο επιλεγμένο σύνολο μπορούν να εκτελεστούν λειτουργίες, όπως η μετατόπιση, η περιστροφή, η διαστολή, η αλλαγή υψομέτρου κ.λπ. [Dry91 σ. 67–70]. Οι λειτουργίες αυτές μπορούν να επαναληφθούν αυτόματα ορισμένες φορές δημιουργώντας αντίγραφα των επιλεγμένων οντοτήτων. Με αυτό τον τρόπο μπορούν εύκολα να οριστούν συγκροτήματα κατοικιών, ουρανοξύστες, και στερεά εκ περιστροφής.
Διαφανή
Με την επιλογή των διαφανών ο χρήστης μπορεί να επικεντρώσει την προσοχή του σε ένα συγκεκριμένο τμήμα του σχεδίου, χωρίς να ενοχλείται από άλλα άσχετα στοιχεία. Αυτό γίνεται προσδιορίζοντας ποια στοιχεία (π.χ. τοίχοι, ανοίγματα, στέγες) είναι ενεργά κάθε στιγμή, και ποια όχι.
Τρισδιάστατη απεικόνιση
Η τρισδιάστατη απεικόνιση επιτρέπει την προοπτική ή αξονομετρική θέα του κτιρίου σε τρεις διαστάσεις και την περιστροφή του σε συνθήκες ταχείας αλληλεπίδρασης με το χρήστη. Η ταχύτητα της λειτουργίας αυτής (ένα με δύο δευτερόλεπτα για απεικόνιση μέσων κτηρίων με κρυμμένες επιφάνειες) βοηθά τον αρχιτέκτονα να σχηματίσει μια εικόνα του κτηρίου όπως αυτό θα είναι στην πραγματικότητα (εικόνα 4). Επιπλέον από την ίδια λειτουργία μπορούν να σχηματιστούν οι όψεις και οι τομές του κτηρίου. Παράδειγμα όψης σχεδιασμένης με το «Τέκτων» απεικονίζεται στην εικόνα 5.


Εικόνα 5: Πρόσοψη του κεντρικού κτηρίου της Εθνικής Τραπέζης.

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

Συνεργασία με άλλα συστήματα

Το «Τέκτων» μπορεί να συνεργαστεί με το πρόγραμμα ανάλυσης χωρικών φορέων FESPA 2002 καθώς και με συστήματα που υποστηρίζουν αρχεία τύπου DXF όπως λ.χ. το AutoCAD. Η επικοινωνία με το FESPA αφορά τους δοκούς, τους στύλους και τον κάνναβο, στοιχεία που έχουν άμεση σχέση με τη στατική μελέτη του κτιρίου. Αντίθετα στο αρχείο τύπου DXF φυλάσσονται όλα τα στοιχεία του σχεδίου.

Τεχνικές υλοποίησης

Διαχωρισμός και περιγραφή των τμημάτων

Το πρόγραμμα έχει αναπτυχθεί ακολουθώντας μια δομημένη αρχιτεκτονική βασισμένη στις διαφορετικές αρχιτεκτονικές οντότητες. Το γενικό διάγραμμα ροής δεδομένων (data flow diagram) όλου του συστήματος παριστάνεται στην εικόνα 6. Το σύστημα επικοινωνίας με το χρήστη μετατρέπει τις εντολές σε κλήσεις προς τις ανάλογες ενότητες του προγράμματος. Όλα τα δεδομένα σχετικά με το κτήριο φυλάσσονται σε μια βάση δεδομένων η οποία αλλάζει με τις δοσοληψίες που δημιουργούνται από τις εντολές του χρήστη. Ένα σύνολο από ξεχωριστές ενότητες αναλαμβάνει την απεικόνιση σε δύο ή τρεις διαστάσεις, την διαχείριση των πόρων του συστήματος, καθώς και την υποστήριξη δομών δεδομένων και γενικά χρήσιμων μαθηματικών συναρτήσεων.


Εικόνα 6: Διάγραμμα ροής δεδομένων του συστήματος.

Γλώσσα και περιβάλλον υλοποίησης

Το «Τέκτων» είναι υλοποιημένο κατά 95% στη γλώσσα προγραμματισμού ANSI C [ANSIC]. Ο κύριος λόγος επιλογής της, ήταν η πλούσια και υψηλού επιπέδου υποστήριξή της στο περιβάλλον υλοποίησης (PC συμβατά) από διερμηνευτές και εργαλεία προγραμματισμού. Ο διερμηνευτής που αρχικά χρησιμοποιήθηκε ήταν ο Microsoft C 5.00. Αυτός αργότερα έγινε 5.1, 6.0 και τελικά έγινε η χρήση του διερμηνευτή Watcom C 386 6.0 και μετά 7.1 που επιτρέπει διευθυνσιοδότηση 32 δυαδικών ψηφίων και χρήση πλασματικής μνήμης. Στις εκδόσεις 16 δυαδικών ψηφίων που χρησιμοποιούσαν τον διερμηνευτή της Microsoft η διαχείριση των επιθεμάτων (overlays) έγινε με τη χρήση του διαχειριστή επιθεμάτων RTlink Plus 4.01 της Pocket Soft. Το λειτουργικό σύστημα στο οποίο υποστηρίζεται το «Τέκτων», το MS-DOS, παρέχει διευθυνσιοδότηση 16 μόνο δυαδικών ψηφίων. Το ρόλο μεσολάβησης ανάμεσα στον κώδικα 32 δυαδικών ψηφίων του «Τέκτων» που τρέχει στην προστατευμένη (protected) κατάσταση του επεξεργαστή και το λειτουργικό σύστημα που τρέχει στην πραγματική (real) κατάσταση του επεξεργαστή αναλαμβάνει ο επεκτατής (extender) DOS 4 GW της Rational Systems. Αυτός μεταφράζει τις παραμέτρους των κλήσεων προς το λειτουργικό σύστημα από 32 δυαδικά ψηφία σε 16 μεταφέροντας στην κατώτερη περιοχή της μνήμης τους ανάλογους ενταμιευτές. Μικρά τμήματα του προγράμματος που διαχειρίζονται τις μονάδες απεικόνισης της οθόνης είναι γραμμένα σε συμβολική γλώσσα iAPX386. Ο ενσωματωμένος υπολογιστής αριθμητικών εκφράσεων που επιτρέπει στο χρήστη να εισάγει εκφράσεις αντί για απλούς αριθμούς, είναι βασισμένος στα εργαλεία lex [LEX] για τη λεξική ανάλυση και yacc [YACC] για τη συντακτική. Για το συντονισμό της εργασίας από την ομάδα υλοποίησης αρχικά χρησιμοποιήθηκε ένα χειροκίνητο σύστημα βασισμένο σε έναν τοιχοκολλημένο πίνακα με όλες τις ενότητες του προγράμματος και τα ονόματα των ανθρώπων που δούλευαν κάθε στιγμή σε μια συγκεκριμένη ενότητα. Η χρήση του πρωτόγονου αυτού συστήματος επιβλήθηκε διότι οι μεγάλες απαιτήσεις μνήμης του προγράμματος και των εργαλείων ανάπτυξης δεν επέτρεπαν τη χρήση λογισμικού δικτύωσης των υπολογιστών. Με την χρήση των διερμηνευτών 32 δυαδικών ψηφίων μπορέσαμε να δικτυώσουμε τους υπολογιστές χωρίς πρόβλημα με το λογισμικό Novell και έτσι για το συντονισμό της ανάπτυξης χρησιμοποιούμε το σύστημα ελέγχου RCS [RCS] σε έκδοση για το MS-DOS.

Αντικειμενοστραφής αρχιτεκτονική

Αν και η γλώσσα υλοποίησης (C) του «Τέκτων» δεν υποστηρίζει άμεσα τον αντικειμενοστραφή προγραμματισμό η εσωτερική δομή του προγράμματος είναι αντικειμενοστραφής σε τρία διαφορετικά πεδία αντικειμένων. Οι «μέθοδοι» του αντικειμενοστραφούς προγραμματισμού ορίζονται ως ομοειδείς συναρτήσεις των οποίων τα διανύσματα διεκπεραίωσης (dispatch vectors) φυλάσσονται σε δομημένους πίνακες (arrays of structures). Τα τμήματα που έχουν υλοποιηθεί με τη μορφή αντικειμένων είναι τα εξής:
Οι αρχιτεκτονικές οντότητες:
Κάθε οντότητα (λ.χ. τοίχος, στέγη) έχει μεθόδους για την επιλογή της με βάση συντεταγμένες, το φόρτωμα και τη φύλαξη από το δίσκο, την αλλαγή θέσης, μεγέθους και προσανατολισμού, την επανασχεδίαση και τη διαγραφή. Οι λειτουργίες του «Τέκτων» που αναφέρονται σε όλες τις οντότητες (π.χ. φύλαξη του αρχείου στο δίσκο) εκτελούνται με την επανάληψη της λειτουργίας για όλες τις μεθόδους του διανύσματος διεκπεραίωσης.
Οι μονάδες εξόδου:
Κάθε μονάδα εξόδου (λ.χ. οθόνη, σχεδιογράφος) έχει μεθόδους για την αρχικοποίησή της, την ιχνογράφηση γεωμετρικών σχημάτων, και την επιστροφή των παραμέτρων για σχεδίαση υπό κλίμακα. Ο αντικειμενοστραφής ορισμός των μονάδων εξόδου επέτρεψε την εύκολη προσθήκη της αποθήκευσης μιας τρισδιάστατης θέας σε αρχείο του «Τέκτων» με την υλοποίηση των μεθόδων για μια πλασματική μονάδα εξόδου «αρχείο Τέκτων».
Οι πόροι:
Όλοι οι πόροι (χρώματα, γραμματοσειρές, αρχιτεκτονικά αντικείμενα) έχουν μεθόδους για φόρτωμά τους από το δίσκο, μετατροπή του κωδικού αριθμού τους σε δείκτη προς τα δεδομένα του πόρου, καθώς και το σημάδεμα τους και απελευθέρωσή της μνήμης τους για την αποκομιδή άχρηστων δεδομένων (marking garbage collection).

Διερμηνευτής διανυσμάτων επιλογών

Ο χρήστης του «Τέκτων» μπορεί να επιλέξει ανάμεσα σε 445 διαφορετικές λειτουργίες. Αυτές είναι κατανεμημένες στις 15 οριζόντιες επιλογές (menus) (215 εντολές) 16 ομάδες λειτουργιών που εμφανίζονται αριστερά στην οθόνη (185 εντολές) και τις 14 καθολικές (global) λειτουργίες που εμφανίζονται στο κάτω μέρος της οθόνης (εικόνα 1). Για τη διαχείριση όλων αυτών των επιλογών και λειτουργιών αναπτύχθηκε μια δηλωτική (declarative) γλώσσα ορισμού διανυσμάτων επιλογών (menu vector description language). Στον πηγαίο κώδικα της γλώσσας αυτής οι επιλογές ορίζονται με βάση το όνομα που παρουσιάζεται στην οθόνη, τη συνάρτηση που καλείται, πιθανές αρχικές τιμές, καθώς και τα ονόματα και τους τύπους των μεταβλητών που περιέχουν τις αντίστοιχες τιμές. Ο κώδικας αυτός μετασχηματίζεται από ένα διερμηνευτή γραμμένο στη γλώσσα Perl [WS90] — παρόμοιο με αυτούς που περιγράφονται στο [Spi93] — σε C και στη συνέχεια σε γλώσσα μηχανής. Ο διερμηνευτής καθορίζει αυτόματα τις θέσεις των επιλογών στην οθόνη, καθώς και συναρτήσεις για την εμφάνιση των επιλογών και το μετασχηματισμό των κινήσεων του ποντικιού σε εντολές του χρήστη. Παρόμοιο, αλλά διαλογικό σύστημα περιγράφεται και από τον [Mao89].

Διαχείριση μνήμης

Η διαχείριση της μνήμης βασίζεται στις συναρτήσεις που παρέχονται από τη γλώσσα C [παρ. 4.10.3.3 ANSIC]. Κάθε οντότητα που δημιουργείται παίρνει μνήμη από την κοινή πηγή και όταν διαγράφεται την επιστρέφει. Η στρατηγική αυτή δεν είναι δυνατόν να χρησιμοποιηθεί και για τους πόρους, μια και ένας πόρος μπορεί να χρησιμοποιείται από πολλές οντότητες (λ.χ. μια γραμματοσειρά από πολλά κείμενα). Για οικονομία στη μνήμη κάθε πόρος φορτώνεται μόνο μια φορά στη μνήμη και χρησιμοποιείται κοινά από όλες τις οντότητες (structure sharing) [BM72]. Η στρατηγική αυτή δημιουργεί την ανάγκη της αποκομιδής άχρηστων δεδομένων, αφού η διαγραφή μιας οντότητας που χρησιμοποιεί έναν πόρο δε συνεπάγεται και την αυτόματη απελευθέρωση του πόρου αυτού. Για λόγους ευκολίας και αξιοπιστίας επιλέξαμε η αποκομιδή να βασίζεται στο σημάδεμα (marking) των χρησιμοποιούμενων πόρων [Coh81] και όχι στο μέτρημα των αναφορών τους (reference counting). Έτσι όταν μια απαίτηση για μνήμη δε μπορεί να ικανοποιηθεί, όλοι οι πόροι σημαδεύονται ως μη χρησιμοποιούμενοι και κάθε οντότητα σημαδεύει τους πόρους που χρησιμοποιεί. Όσοι πόροι έχουν στο τέλος μείνει ασημάδευτοι, απελευθερώνονται.

Το μέλλον

Ένας σημαντικός αριθμός χρηστών έχει επιδείξει ενδιαφέρον για τον υπολογισμό προμετρήσεων με βάση το κτήριο που έχει εισαχθεί. Ο υπολογισμός αυτός μπορεί να ορισθεί σαν την ένωση (join) της βάσης δεδομένων του κτιρίου και της βάσης δεδομένων των υλικών της αγοράς. Έχει ήδη ολοκληρωθεί μια πειραματική υλοποίηση ενός μοντέλου προμετρήσεων και μελετάμε τρόπους για βελτιωμένη λειτουργικότητά τους, πιθανά με τη χρήση λογιστικών φύλων (spreadsheets). Αυξημένο πρακτικό, αλλά και επιστημονικό ενδιαφέρον (κυρίως λόγω του μεγάλου αριθμού των οντοτήτων που απαρτίζουν τις τυπικές συνθέσεις) έχει η φωτορεαλιστική απεικόνιση των θεμάτων. Η εγκαταστημένη βάση υλικού στην Ελλάδα επιβάλει την πολύ προσεκτική και βέλτιστη χρήση του επεξεργαστή για τον εξαιρετικά δαπανηρό (από πλευράς υπολογιστικής ισχύος) αυτό υπολογισμό. Έχουμε ολοκληρώσει τη συγκριτική μελέτη διαφόρων τεχνικών φωτορεαλιστικής παρουσίασης και εργαζόμαστε τώρα για την υλοποίηση μιας προσαρμογής του καλύτερου τρόπου. Μία άλλη κατεύθυνση την οποία εξετάζουμε είναι αυτή της χρήσεως σταθμών εργασίας κάτω από το σύστημα Unix [RT74] με X-Windows [X]. Αυτό θα επιτρέψει τη δικτυωμένη εργασία πολλών χρηστών, τη χρήση μηχανημάτων με ταχύτερους επεξεργαστές και καλύτερα υποσυστήματα γραφικής υποστήριξης, καθώς και την εύκολη υποστήριξη του συστήματος για πολλούς διαφορετικούς υπολογιστές. Τέλος με την ολοένα αυξανόμενη κυριαρχία του συστήματος Microsoft Windows στο χώρο των προσωπικών υπολογιστών, εξετάζουμε τη μεταφορά του συστήματος κάτω από το περιβάλλον αυτό. Έχουμε πραγματοποιήσει μια πειραματική υλοποίηση του συστήματος για να εκτιμήσουμε πώς οι απαιτήσεις και δυνατότητες του γραφικού περιβάλλοντος Windows θα επιδράσουν στην εξωτερική και εσωτερική δομή του συστήματος.

Ευχαριστίες

Το σύστημα «Τέκτων» είναι προϊόν ομαδικής εργασίας πολλών ανθρώπων. Στον προσδιορισμό της λειτουργικότητας του συστήματος βοήθησαν ο Σπύρος Λιβιεράτος και ο Δημήτρης Χαραμιδόπουλος. Στην υλοποίηση βοήθησαν ο Τάκης Θεοφανόπουλος, ο Ισίδωρος Κουβελάς, ο Αντρέας Μασούρας, και ο Άγγελος Χαρίτσης. Η τεκμηρίωση γράφτηκε από την Έρση Καρανάσου και την Ξανθή Σαράντζη. Ο έλεγχος της λειτουργίας του συστήματος, και η κατασκευή των βιβλιοθηκών έγιναν από το Χρήστο Γκολογιάννη, το Δημήτρη Τόλη, και το Μάριο Σαλτερή. Στη βιβλιογραφία υπάρχουν συχνά περιγραφές πειραματικών συστημάτων του ακαδημαϊκού και ερευνητικού χώρου και σπάνια άρθρα που περιγράφουν ολοκληρωμένα συστήματα εταιριών λογισμικού. Αυτό μπορεί εύκολα να εξηγηθεί από το φόβο των εταιριών λογισμικού για τη διαρροή και διάδοση των τεχνικών μυστικών τους. Θα ήθελα να ευχαριστήσω την «LH Λογισμική» για την κατανόηση που έδειξε, επιτρέποντας τη δημοσίευση αυτής της εργασίας.

Αναφορές

ANSIC
American National Standard for Information Systems — programming language — C: ANSI X3.159–1989. Published by the American National Standards Institute, 1430 Broadway, New York, New York 10018, December 1989. (Also ISO/IEC 9899:1990).
Bit91
Theodossia Bitzou. Labyrinth: A graphics editor with dependency propagation applied to building design. In Proceedings of the Second International Workshop on Computer Building Representation for Integration, Aix-les-Bains, France, June 1991.
BM72
R. S. Boyer and J. S. Moore. The sharing of structure in theorem-proving programs. In Bernard Meltzer and Donald Michie, editors, Machine Intelligence 7, chapter 6, pages 101–116. Edinburgh University Press, 1972.
Coh81
Jacques Cohen. Garbage collection of linked data structures. ACM Computing Surveys, 13(3):339–367, September 1981.
Col83
Donald W. Collins. An interactive design program for modular building elevations using an Apple II microcomputer. Computer-Aided Design, 15(1):25–31, January 1983.
CFV88
U. Cugini, F. Folini, and I. Vicini. A procedural system for the definition and storage of technical drawings in parametric form. In D. A. Duce and P. Jancene, editors, Eurographics '88: Proceedings of the European Conference and Exhibition, pages 183–196, Nice, France, September 1988. Eurographics Association, North-Holland.
Dry91
B. L. Davies, A. J. Robotham, and A. Yarwood. Computer-Aided Drawing and Design. Chapman & Hall, London, 1991.
Ger77
John S. Gero. Computer Applications in Architecture, chapter 1, pages 1–12. Applied Science Publishers, London, 1977.
Gre75
Donald P. Greenberg. Computer graphics in architecture. Scientific American, 230(5):98–106, 1975.
HD78
W. W. A. Hermens and P. J. M. Dinjens. SMOOC, an interactive graphic system for the generation and presentation of alternative dwelling floorplans. In Proceedings of the International Conference on Interactive Techniques in Computer Aided Design, pages 81–93, Bologna, Italy, September 1978. ACM, IEEE.
HOS77
Edward M. Hoskins. Computer Applications in Architecture, chapter 10, The OXYSYS System, pages 343–391. Applied Science Publishers, London, 1977.
YACC
Stephen C. Johnson. Yacc — yet another compiler-compiler. Computer Science Technical Report 32, Bell Laboratories, Murray Hill, NJ, USA, July 1975.
Lee77
Kaiman Lee. Computer Applications in Architecture, chapter 9, The ARK-2 System, pages 312–342. Applied Science Publishers, London, 1977.
LEX
M. E. Lesk. Lex — a lexical analyzer generator. Computer Science Technical Report 39, Bell Laboratories, Murray Hill, NJ, USA, October 1975.
Mao89
Q. Mao. Micro-UIDT: A user interface development tool. In W. Hansmann, F. R. A. Hopgood, and W. Strasser, editors, Eurographics '89: Proceedings of the European Conference and Exhibition, pages 3–14, Hamburg, Germany, September 1989. Eurographics Association, North-Holland.
Neg76
Nicholas Negreponte, editor. Computer Aids to Design and Architecture. Petrocelli/Charter, New York, 1976.
RT74
Dennis M. Ritchie and Ken Thompson. The UNIX time-sharing system. Communications of the ACM, 17(7):365–375, July 1974.
X
R. W. Scheifler and J. Gettys. The X window system. ACM Transactions on Graphics, 5(2):79–109, April 1986.
Spi93
Diomidis Spinellis. Implementing Haskell: Language implementation as a tool building exercise. Structured Programming, 14:37–48, 1993.
Sto84a
Richard N. Stover. An Analysis of CAD/CAM Applications. Prentice-Hall, 1984.
Sut63
Ivan E. Sutherland. Sketchpad: A man-machine graphical communication system. Technical Report 296, Lincoln Laboratory, January 1963.
RCS
Walter F. Tichy. Design, implementation, and evaluation of a revision control system,. In Proceedings of the 6th International Conference on Software Engineering. IEEE, September 1982.
WS90
Larry Wall and Randal L. Schwartz. Programming Perl. O'Reilly and Associates, Sebastopol, CA, USA, 1990.

(C) Copyright 1993-97 Διομήδης Σπινέλλης. Επιτρέπεται η ελεύθερη ανάγνωση από browsers του WWW και παρόμοια προγράμματα. Με την επιφύλαξη κάθε άλλου δικαιώματος.