CADCAL wurde schon vor Jahren entwickelt, um in BricsCAD die Funktionalität von AutoCADs GeomCal zu bieten. Nun wurde das Programm erheblich überarbeitet und weiter entwickelt, und sollte wohl auch zumindest zum größten Teil auch unter AutoCAD LT laufen.
Zum Testen einfach die dem Beitrag angefügte Datei CADCAL.ZIP (oder von www.archtools.de/cadcal.zip heruntergeladene) in ein beliebiges Verzeichnis entpacken, und dieses - falls nicht schon geschehen - in den Suchpfad für Supportdateien von AutoCAD LT aufnehmen. Dann sollte man auf dem Befehlsprompt mit
Befehl: (load "cadcal.vlx")
CADCAL laden können. Und das war schon der erste Test: klappt das Laden fehlerfrei?
Nach dem Laden sollte man den CAL Befehl aufrufen können:
Befehl: CAL
und der sollte sich mit der Eingabemeldung zur EIngabe eines CAL Ausrucks melden:
CC ?=help >> expression:
Darauf kann man einen matghematsichen Ausdruck eingeben, beispielsweise
CC ?=help >> expression: 21/9
Klappt das? Kommt das Resultat zurück: 2.33333333333333
Man kann CAL auch transparent während eines laufenden AutoCAD-Befehls aufrufen, und dann wird das Eregbnis direkt als Eingabe auf den laufenden Befehl verwenden. Beispielsweise wenn man den Befehl LINIE aktiv laufen hat, kann man auf die Anfrage von AutoCAD nach einem Punkt einfach das eingeben:
Beginn der Linie: 'CAL
mit dem führenden Hochkomma gibt man transparente Befehle ein. und dann kann man beispielsweise die CADCAL-Funktion MEE eingeben:
CC ?=help >> expression: MEE
Die MEE Funktion fordert den Anwender zur Eingabe zweier Punkte auf, und gibt den Mittelpunkt der Strecke zwischen diesen zurück. Dieser Mittelpunkt wird dann als Eingabe für den Linienbefehl verwendet. Mit Eingabe des Fragezeichens auf
CC ?=help >> expression:
öffnet sich die Online-Hilfe mit einer Funktionsübersicht von CADCAL.
Ein weiterer Test wäre der CADCAL Befehl CALSCRIPT. Damit kann man einfache Skripte laden und ausführen lassen, die Zeichnungsobjekte erstellen, die dann parametrisch editierbar sind.
Befehl: CALSCRIPT
öffnet einen Dateiauswahldialog, mit dem man beispielsweise die Datei ./demo/nickshouse.scr auswählt. Man wird danach nach Einfügepunkt und Drehung gefragt, und nach den Werten der Parameter WIDTH und HEIGHT, die im Skript festgelegt sind. Man kann vorerst nur Zahlen eingeben. Und dann wird hoffentlich auch in AutoCAD LT das Haus vom Nikolaus gezeichnet. Klappt das?
Und dann kann man mit CC-MODIFY dieses Objekt editieren, und ihm neue Werte für WIDTH und HEIGHT mitgeben. Das klappt auch von Kopien dieses Objekts.
Wenn man mehrere Kopien dieses CALSCRIPT Objekts erzeugt hat, kann man zwei Objektinstanzen miteinander verbinden. Das geht mit dem Befehl CC-CONNECT. Hier bitte erst mal nur einen MASTER und einen SLAVE auswählen. Das SLAVE Objekt sollte sich dann direkt neben den Master stellen mit demselben Winkel wie der Master. Wenn man danach den Master mit CC-Modify editiert und ihm eine andere WIDTH gibt, dann wird sich der Slave automatisch anpassen. Klappt das auch?
Mit der DWG ./demo/switch-and-lamp.dwg kann man sehen, dass diese Objektkommunikation auch anders genutzt werden kann. Hier schaltet ein Schalter (ein=1, aus=0) eine ode rmehrere Lampen. Hier ist der Schalter mit einer Lampe verbunden, und diese wieder mit einer weiteren Lampe. Derzeit besteht eine maximale Grenze von 1000 in einer Reihe miteinander verbundenen Objekten, die vom Anwender aber änderbar ist. Der Wert soll nur endlose Kommunikationszirkel verhindern
Ein Master kann aber auch mit einer Vielzahl von Slaves verbunden sein, wie man in der DWG ./demo/multi-lamp-and-switch sieht. Hier schaltet ein einziger Schalter 570 Lampen, was eien ziemliche Obergrenze darstellt. Die Slaves werden als XDATA im Master gespeichertm, und dafür gibt es maximal 16 kByte Platz. Ein kompliziertes Objekt als der SWITCH benötigt auch mehr Daten für sich selbst, so dass die Zahl der Slaves eines Masters auf 500 besxchränkt ist. Das sollte aber idR auch für sehr komplexe Simulationen reichen.
Und noch was: Mit dem Befehl CALSCRIPT->LISP kann man sich Skripte in eigenständig lauffähige Lisp-Funktionen übersetzen lassen. Beispielsweise kann man die Funktion an eine Variable binden:
Befehl: (setq myfun (c:CALSCRIPT->LISP))
Und wenn man dann beispielsweise den Enamen eines NICKHOUSE Objekts an die Variable EN bindet:
Befehl: (setq en (car (entsel)))
dann kann man mit
Befehl: (apply myfun (list 60 80 en))
dem ausgewählten Objekt die neuen Eigenschaften WIDTH=60 und HEIGHT=80 geben.
In der Lisp-Datei ./demo/nickshouse.lsp kann man sehen, wie man diese Funktionen nutzen kann, um eigene Applikationen zu entwickeln.
Klappt das alles in AutoCAD LT? Über eine Rückmeldung würde ich mich sehr freuen.
Übrigens: CADCAL ist als kostenfreie Lizenz erhältlich, und das wird dauerhaft so bleiben. Diese kostenfreie Lizenz ist immer bis zum Ende des laufenden Kalenderjahrs befristet, und muss dann mit einer neuen Version für ein weiters Jahr aktualisiert werden. Unbefristet lauffähige Lizenzen werden voraussichtlich deutlich unter 50 € kosten, und für Programmierer sind auch Quellcodelizenzen verfügbar.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP