Hi,
herzlich willkommen bei CAD-de!
>> Dass Lisp sowieso veraltet ist, darüber brauchen wir nicht reden
Nicht zwangsweise so sehen, es gibt immer noch LISP-Einzeiler, für die Du mit VB(A) Dir die Finger wundschreibst (übertrieben, aber sinngemäß ist es so).
>> Ich spiele mich daher mit dem Gedanken, meine Lisp-Programme in VBA zu erstellen
Da stellst Du jetzt von 'überaltetem LISP' (das aber noch weiter leben wird) auf überaltetes VBA (das kaum eine Überlebenschance hat) ==> Tipp: überleg Dir das!
Zum einen wird VBA (für AutoCAD) schon seit 2 Versionen mit dem Beisatz zum Download bereitgestellt 'nächste Version gibt's das nicht mehr'.
Zum anderen bist Du mit 64bit-Betriebssystem (und damit 64bit AutoCAD) in einer Performanceklemme (fest angezogene Klemme ), bei vielen Objektzugriffen während Deines Applikationsdurchlaufs kannst Du schon mal Faktor 100 bis 1000 langsamer einrechnen als 32bit.
Denk mal lieber über VB.NET oder C# nach, da steckt mehr Zukunft drin und da Framework auf jedem Rechner installiert ist, brauchst Du (solange Du nicht Fremdlib's installieren musst) auch mit Deiner App nix mitliefern.
Zu Deinen Fragen (die mir zu oberflächlich erscheinen, daher auch meine Antworten oberflächlich)
>> Wie liefere ich an das Makro die Werte mit den Abmessungen für das Erstellen von Standardteilen?
Z.B. mit Array, ob jetzt mehrdimensionaler Array of Variant oder ein Array von Klasseninstanzen oder eine Collection oder ....
Zuviele Möglichkeiten und zu wenig von Deinem Aufbau bekannt, als hier die 'einzig richtige' Antwort geben zu können.
>> Wenn´s in VBA keine andere Möglichkeit gibt ein array anzulegen als nach dem Schema "wert(n) = xyz" werd ich alt
Hast Du eine definierte Stuktur Deiner Rohrteile, dann mach eine Klassendefinition und reihe diese in einem Array oder in einer Collection zusammen.
>> Muss jetzt eine eigene Datentabelle in Access,... angelegt werden?
Nein, wozu? Ich erkenne nicht, wie Du jetzt von AutoCAD auf Access kommst .... (um einen Array von xxx anzulegen).
>> In Lisp hab ich ausgehend vom Startpunkt (getpoint) alle anderen Eckpunkte berechnet (polar start winkel abstand)
>> [...] Wie würde das in VBA passieren?
Nicht so anders, Du holst Deinen Punkte mit ThisDrawing.Utility.GetPoint und rechnest von diesem weiter.
HTH, - alfred -
------------------
www.hollaus.at