Dalam pelajaran sebelumnya, kami melihat menampilkan string sederhana. Saat ini, kita akan berbicara tentang pembentukan garis komposit, termasuk penyimpangan dan fraksi. Kami akan
menghasilkan garis-garis tersebut menggunakan metode
ksText , yang telah kami pelajari sebelumnya. Sebenarnya, metode ini tidak dimaksudkan untuk menghasilkan string yang kompleks. Namun demikian, dalam pelajaran hari ini kita akan berkenalan dengan sejumlah bendera yang memainkan peran kunci dalam pembentukan garis majemuk.

Isi seri pelajaran βBekerja dengan API KOMPAS-3Dβ
- Dasar-dasarnya
- Desain gambar
- Koneksi yang benar ke KOMPAS
- Prasasti utama
- Primitif grafis
- Menyimpan dokumen dalam berbagai format
- Mengenal pengaturan
- Metode penulisan yang lebih canggih di blok judul
- Membaca sel teks
- Karakter khusus termasuk string
- Label teks sederhana
- Senar majemuk
Meskipun metode yang dijelaskan untuk membuat penyimpangan dan fraksi tidak berdokumen, mereka, seperti yang diperlihatkan percobaan saya, bekerja dengan benar pada versi modern KOMPAS (diperiksa pada 15, 16 dan 17). Tetapi perilaku ini dapat diubah di versi mendatang.
Metode "benar" untuk membangun string majemuk akan dijelaskan dalam pelajaran berikut.
Miring, tebal, dan garis bawah
Gaya miring, tebal, dan garis bawah dikontrol oleh bendera yang ditunjukkan pada tabel di bawah ini. Mereka dideklarasikan di file header
ldefin2d.h .

Dalam metode
ksText, efek dari masing-masing flag ini terbatas untuk memanggil metode ini. Berikut ini adalah contoh program yang menunjukkan keluaran garis dengan gaya berbeda.
Document2D->ksText(100, 100, 0, 0, 0, 0 , SysAllocString(L" ")); Document2D->ksText(100, 90, 0, 0, 0, ITALIC_OFF , SysAllocString(L" ")); Document2D->ksText(100, 80, 0, 0, 0, BOLD_ON , SysAllocString(L" ")); Document2D->ksText(100, 70, 0, 0, 0, UNDERLINE_ON, SysAllocString(L" "));
Untuk kesederhanaan, contoh ini menghilangkan kode yang bertanggung jawab untuk pembuatan dan pelaksanaan dokumen (topik ini dibahas dalam pelajaran sebelumnya), serta untuk membebaskan sumber daya (termasuk setelah memanggil fungsi
SysAllocString ).
Harap dicatat: secara default, KOMPAS menampilkan teks dalam huruf miring. Karenanya, untuk membatalkan
huruf miring, kami menggunakan bendera
ITALIC_OFF . Gambar di bawah ini menunjukkan garis keluaran oleh program ini.

Penggunaan flag berpasangan secara bersamaan (misalnya,
BOLD_ON dan
BOLD_OFF ) tidak memengaruhi tampilan string. Ini ditampilkan karena akan ditampilkan jika tidak ada bendera yang ditetapkan.
Penyimpangan atas dan bawah
Penyimpangan atas dan bawah diatur menggunakan bendera yang ditunjukkan pada tabel di bawah ini.

Berikut ini adalah contoh dari program yang menunjukkan output dari garis yang mengandung penyimpangan atas dan bawah.
double x = 100.0; double y = 100.0; BSTR str = SysAllocString(L" "); long itext = Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str); x += Document2D->ksGetTextLengthFromReference(itext) + 2.0; str = SysAllocString(L" "); itext = Document2D->ksText(x, y, 0, 0, 0, UPPER_DEVIAT, str); SysFreeString(str); double dx1 = Document2D->ksGetTextLengthFromReference(itext); str = SysAllocString(L" "); itext = Document2D->ksText(x, y, 0, 0, 0, LOWER_DEVIAT, str); SysFreeString(str); double dx2 = Document2D->ksGetTextLengthFromReference(itext); x += max(dx1, dx2); str = SysAllocString(L" "); Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str);
Dalam contoh ini, setiap kali kita menghitung ulang koordinat titik jangkar dari garis yang ditampilkan untuk mengetahui di mana harus mengeluarkannya. Untuk melakukan ini, gunakan metode
ksGetTextLengthFromReference yang dijelaskan dalam pelajaran sebelumnya. Harap dicatat: hanya koordinat horisontal yang dihitung ulang, vertikal tidak berubah. KOMPAS sendiri menentukan offset garis vertikal yang diinginkan. Gambar di bawah ini menunjukkan garis komposit yang dihasilkan oleh program ini.

Pecahan
Render pecahan diatur oleh bendera yang tercantum dalam tabel di bawah ini.

Berikut ini adalah contoh dari program yang menunjukkan output dari sebagian kecil dalam string teks.
double x = 100.0; double y = 100.0; BSTR str = SysAllocString(L" "); long itext = Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str); x += Document2D->ksGetTextLengthFromReference(itext) + 2.0; str = SysAllocString(L""); itext = Document2D->ksText(x, y, 0, 0, 0, NUMERATOR, str); SysFreeString(str); double dx1 = Document2D->ksGetTextLengthFromReference(itext); str = SysAllocString(L""); itext = Document2D->ksText(x, y, 0, 0, 0, DENOMINATOR, str); SysFreeString(str); double dx2 = Document2D->ksGetTextLengthFromReference(itext); x += max(dx1, dx2); str = SysAllocString(L" "); Document2D->ksText(x, y, 0, 0, 0, 0, str); SysFreeString(str);
Sangat mudah untuk memperhatikan bahwa contoh ini mirip dengan yang sebelumnya. Memang, output dari penyimpangan dan fraksi hanya berbeda di bendera yang digunakan. Gambar di bawah ini menunjukkan hasil program.
KesimpulanDalam pelajaran ini, kami melihat cara membuat string komposit menggunakan metode
ksText . Metode yang dijelaskan di sini tidak berdokumen, jadi Anda tidak boleh menggunakannya dalam aplikasi Anda. Dalam pelajaran berikut, kita akan melihat lebih dekat pada cara-cara yang terdokumentasi untuk membuat string majemuk. Dan di sana kita akan membutuhkan bendera yang kita temui hari ini.
Untuk dilanjutkan, ikuti berita blog.
Sergey Norseev, Ph.D., penulis buku "Pengembangan Aplikasi untuk COMPAS di Delphi."