Program AutoCAD określa położenie punktu w przestrzeni przy pomocy trzech (^półrzęd-nych (x, y, z). Interfejs automatyzacji OLE programu AutoCAD wymaga podanj^^spółrzęd-nych w postaci właściwej trójelementowej tablicy, której elementami są hczb^tybu Double. Jednak taki typ tablic nie może być stosowany gdy wykorzystujemy mech^i^y OLE. Do przesyłania współrzędnych zastosowano więc zmienne typu OLEVariant khtó^nożna przekształcić na typ tablicowy przy pomocy funkcji VarArrayCreate.
Niektóre polecenia wymagają podania tablicy współrzędnych punktów ^^imkreślonej liczbie elementów, w szczególności przy generowaniu elementów takicłyda^^eJninia czy region. Taka tablica musi być zgodna z typem OLEVariant. W celu skrócćh^zapisu i sprawdzenia poprawności wprowadzanych danych, jak również przekazywania pojedynczych punktów, opracowano odpowiednią funkcję zwalniającą użytkownika z dęmm^ania tablicy wariantowej. Jej zapis przedstawiono na rys. 5.
function vTab3D(WspXVZ:array of double) :01eVariaąt;((3^/
//zwraca wariantową tablicę punktów w przestf //ilość liczb musi być wielokrotnością trz« var irlnteger; begin
if (High(WspXYZ)+l) mod 3 = O then begin
Result:=VarArrayCreate([0,High(WspXYZ)Jy^arDouble); for i:=0 to High(WspXYZ) do Result(^g$lspXYZ[i];
else
ShowMessage('Nie zawiera wszystk iłrzędnych punktów!');
end;
Rys. 5. Kod funkcji przekształcania wspó
<5
Fragment kodu głównego modułu , modelu programu AutoCAD profilu
ych o nieokreślonej liczbie elementów [4]
MS , umożliwiający wprowadzenie w obszarze regionu przedstawiony jest na rys. 6.
var Profil_Wyciagany, Profil_W^piagany_Region : OLEVariant; begin
{Profil Wyciągany)
Profil_Wyciagany :^^M^śyCreate( [0,11] ,varDispatch); Profil_WyciagaiwrRegLpn: =varArrayCreate( [0,11], varDispatch); {Profil 2D> C ^
Profil_WyciaganyrfeJ±>AcadDwg.AddLine(p3D(-26,0,0),p3D(26,0,0));
Profil_Wyciag Profil_Wycię»i Profil_Wyci Profil_Wyci Profil Wy^fe Profil Profil Pro-|il<
Prof Prof!
=AcadDwg.AddLine(p3D(26,0,0),p3D(34,62,0)); =AcadDwg.AddLine(p3D(34,62,0),p3D(19,128,0)); =AcadDwg.AddLine(p3D(19,128,0),p3D(-7,135,0)); =AcadDwg.AddLine(p3D(-7,135,0),p3D(-7,129,0)); =AcadDwg.AddLine(p3D(-7,129,0),p3D(-20,121,0)); =AcadDwg.AddLine(p3D(-20,121,0),p3D(-20,116,0)); =AcadDwg.AddLine(p3D(-20,116,0),p3D(-33,107,0)); =AcadDwg.AddLine(p3D(-33,107,0),p3D(-28,97,0)); =AcadDwg.AddLine(p3D(-28,97,0),p3D(-ll,99,0)); iagany[10]:=AcadDwg.AddLine(p3D(-ll,99,0),p3D(-34,62,0)); ciagany[ll]:=AcadDwg.AddLine(p3D(-34,62,0),p3D(-26,0,0));
Wyciagany_Region:=AcadDwg.AddRegion(Profil_Wyciagany);
6. Fragment kodu programu „Konik.pas” - utworzenie regionu [4]